Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#29151 Le 12/03/2010, à 00:17

inbox

Re : Topic des couche-tard (30)

N'nuit. cool


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#29153 Le 12/03/2010, à 00:19

geenux

Hors ligne

#29154 Le 12/03/2010, à 00:23

juju_theseaman

Re : Topic des couche-tard (30)

geenux a écrit :

bn

Non !
PRINCE

Hors ligne

#29155 Le 12/03/2010, à 00:30

Pylades

Re : Topic des couche-tard (30)

grim7reaper a écrit :

Bah si le compilo ne dis rien avec le taquet de warning activé c'est que ça se fait, cela dis tu ne gagne rien (ou pas grand-chose) je pense car il y a promotion implicite en int (remarque que avec bool c'est le même cinéma).

Pylade a écrit :

... on ne va pas pleurer pour trois octets).

3 octets c'est pas sur, tout dépend de ton architecture wink.

x86_64 tongue
Ce truc ne tournera jamais que chez moi !

Bon, ça a l'air correct (enfin, ça a l'air de marcher pas trop mal).
Bon, heureusement que nux est intelligent, il n'alloue la mémoire que progressivement. C'est déjà ça ! Et quand je le ^C, la mémoire bouffée n'augmente pas. \o/
Par contre, le proço…

Tiens, le code (j'ai fais le malloc à ta façon) :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <signal.h>
void int_(int);
char globvar=1;
int main(void)
{
    char mod=0;
    int i,tsqrt,A=5,p=3;
    int* list=malloc(sizeof*list*0x2000000);
    struct sigaction intact;
    intact.sa_handler=&int_;
    sigaction(SIGINT,&intact,NULL);
    list[0]=2;list[1]=3;list[2]=5;
    while(globvar!=0)
    {
        // tests only integers which are congruent to 1 or 5 modulo 6
        if(mod!=0)
        {
            A+=4;
            mod=0;
        }
        else
        {
            A+=2;
            mod=1;
        }
        i=1;
        tsqrt=sqrt(A);
        while(1)
        {
            if(list[i]>tsqrt)
            {
                list[p++]=A;
                break;
            }
            if(A%list[i]==0)
            {
                break;
            }
            else
            {
                i++;
            }
        }
    }
    for(i=0;i<p;i++)
        printf("%d ",list[i]);
    return EXIT_SUCCESS;
}
void int_(int signal)
{
    globvar=0;
    return;
}

Merci, tu m'as bien coaché !


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#29156 Le 12/03/2010, à 00:30

nesthib

Re : Topic des couche-tard (30)

plop


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#29157 Le 12/03/2010, à 00:32

rmy

Re : Topic des couche-tard (30)

bonne nuit je pense. La précédente fut ruuude

Hors ligne

#29158 Le 12/03/2010, à 00:33

edge_one

Re : Topic des couche-tard (30)

milkyway a écrit :

[youtube]http://www.youtube.com/watch?v=EvfsUX4Np0c[/youtube]

The Editors - Smokers Outside The Hospital Doors.

t'as viré la toph wink pendant que recherchais une réponse... (de mon appareil of course)

pour la chanson et pour les jeunes... (faut bien les éduquer!)

[youtube]http://www.youtube.com/watch?v=yG5e1oaen-M[/youtube]

biz mon pote!

Dernière modification par edge_one (Le 12/03/2010, à 00:34)

#29159 Le 12/03/2010, à 00:34

Pylades

Re : Topic des couche-tard (30)

Je n'ai même pas revendiqué mon HDP.

Alors je le fais maintenant.

HDP \o/


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#29160 Le 12/03/2010, à 00:36

edge_one

Re : Topic des couche-tard (30)

Pylade a écrit :

Je n'ai même pas revendiqué mon HDP.

Alors je le fais maintenant.

HDP \o/

sinon tu peux éditer ton message en cliquant sur "modifier"...

#29161 Le 12/03/2010, à 00:38

grim7reaper

Re : Topic des couche-tard (30)

@Pylade : de rien, ce fût un plaisir. J'aime les "bonnes" questions comme les tiennes qui me permettent d'apprendre des choses de mon côté, donc je te remercie aussi tongue.

Dernier point, le return est facultatif pour une fonction void.

Hors ligne

#29162 Le 12/03/2010, à 00:41

gnuuat

Re : Topic des couche-tard (30)

Pylade a écrit :

blah blah

Tu ferais mieux de déclarer tes booléans en tant que int : l'alignement de la mémoire est quelque chose d'extrêmement important, donc si tu utilises des trucs de 1 octets, tu risques d'avoir l'effet inverse de celui souhaité : perdre de la place.
L'alignement se fait par block de 4 octets, donc un int c'est cool.

De plus, si tu ne veux pas avoir 3 octets inutilisés, tu peux utiliser chaque bit pour 1 booléan (32 booleans dans une seule variable).

Pour l'alignement de la mémoire, tu peux le voir avec les structures :

#include <stdlib.h>
#include <stdio.h>

typedef struct s_hello
{
 char c;
} t_hello;

int main(void)
{
  t_hello my_struct;

  printf("Taille de ta structure : %u", sizeof(my_struct);
  return (EXIT_SUCCESS);
}

Tu verras que le sizeof retourne 4o, et non pas 1 smile .


Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !

Hors ligne

#29163 Le 12/03/2010, à 00:43

PPdM

Re : Topic des couche-tard (30)

pliplop


La critique est facile, mais l'art est difficile !
L'humanité étant ce qu'elle est, la liberté ne sera jamais un acquit, mais toujours un droit à défendre !
Pour résoudre un problème commence par poser les bonnes questions, la bonne solution en découlera

Hors ligne

#29164 Le 12/03/2010, à 00:43

Pylades

Re : Topic des couche-tard (30)

edge_one a écrit :
Pylade a écrit :

Je n'ai même pas revendiqué mon HDP.

Alors je le fais maintenant.

HDP \o/

sinon tu peux éditer ton message en cliquant sur "modifier"...

tongue

@grim7reaper :
Modifié !
Au fait, je trouve

int* list=malloc(sizeof(*list)*0x2000000);

(avec les parenthèse autour de *list) plus lisible (et propre),  pas toi ?


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#29165 Le 12/03/2010, à 00:45

Pylades

Re : Topic des couche-tard (30)

@gnuuat : OK, je modifie.


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#29166 Le 12/03/2010, à 00:47

edge_one

Re : Topic des couche-tard (30)

gnuuat a écrit :
Pylade a écrit :

blah blah

Tu ferais mieux de déclarer tes booléans en tant que int

nanmého un bool c'est pas un int! vas faire ça sur un automate... ><

#29167 Le 12/03/2010, à 00:48

grim7reaper

Re : Topic des couche-tard (30)

@gnuuat : le padding qui entraîne les pertes de places c'est juste pour les structures et assimilés, pas pour les variables seules il me semble.
De plus ton programme renvoie 1 chez moi tongue.


@Pylade : plus Lisp surtout tongue. Oui c'est un peu plus lisible mais moi je ne les met pas souvent. Mais bon j'utilise pas non plus les tailles en hexa, et en général je le nombre d'éléments en premier, au final la lisibilité c'est quelque chose de relatif qui varie en fonction des habitudes de chacun (comme les NomDesVariable comme_ça_ou_pas, ou les accolades).

Dernière modification par grim7reaper (Le 12/03/2010, à 00:51)

Hors ligne

#29168 Le 12/03/2010, à 00:51

Dr Le Rouge

Re : Topic des couche-tard (30)

dodo !


C'est deux suites de Cauchy qui veulent aller à la soirée 'no limit'. Hélas, à l'entrée le videur leur dit : "désolé, c'est complet !".
mon site perso (π²/6.fr) et mon blog

Hors ligne

#29169 Le 12/03/2010, à 00:55

gnuuat

Re : Topic des couche-tard (30)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <signal.h>

void    int_(int);
char    globvar = 1;

void    int_(int signal)
{
  globvar = 0;
}


int                     main(void)
{
  char                  mod;
  int                   i;
  int                   tsqrt;
  int                   a;
  int                   p;
  int                   *list;
  struct sigaction      intact;

  mod = 0;
  a = 5;
  p = 3;
  list = sizeof(*list) * 0x2000000;
  intact.sa_handler = &int_;
  sigaction(SIGINT, &intact, NULL);
  list[0] = 2;
  list[1] = 3;
  list[2] = 5;
  while (globvar != 0)
    {
      i = 1;
      // tests only integers which are congruent to 1 or 5 modulo 6                                                                                                                                                                                                            
      if(mod != 0)
        {
          a += 4;
          mod = 0;
        }
      else
        {
          a <<= 1;
          mod = 1;
        }
      tsqrt = sqrt(a);
      while (1)
        {
          if (list[i] > tsqrt)
            {
              list[p++] = a;
              break;
            }
          if (a % list[i] == 0)
            break;
          else
            i++;
        }
    }
  for (i = 0; i < p; i++)
    printf("%d ",list[i]);
  return (EXIT_SUCCESS);
}

Bon, ton mod ne change jamais d'état... Et aussi, il fait éviter d'utiliser break smile . plutot que de faire un while 1, tu pourrais développer un peu plus les conditions de ta boucle.
D'un autre côté, je suis arrivé en cours de route et j'ai pas tout compris ce que tu voulais tongue .


Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !

Hors ligne

#29170 Le 12/03/2010, à 00:55

juju_theseaman

Re : Topic des couche-tard (30)

edge_one a écrit :
Pylade a écrit :

Je n'ai même pas revendiqué mon HDP.

Alors je le fais maintenant.

HDP \o/

sinon tu peux éditer ton message en cliquant sur "modifier"...

Ouais, mais un HDP édité, c'est la loose.

Hors ligne

#29171 Le 12/03/2010, à 00:56

Pylades

Re : Topic des couche-tard (30)

Bon, je remets char ?

grim7reaper a écrit :

@Pylade : plus Lisp surtout tongue.

À cause de la prolifération des parenthèse ? roll














lol


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#29172 Le 12/03/2010, à 00:57

Pylades

Re : Topic des couche-tard (30)

juju_theseaman a écrit :
edge_one a écrit :
Pylade a écrit :

Je n'ai même pas revendiqué mon HDP.

Alors je le fais maintenant.

HDP \o/

sinon tu peux éditer ton message en cliquant sur "modifier"...

Ouais, mais un HDP édité, c'est la loose.

+1


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#29173 Le 12/03/2010, à 01:00

grim7reaper

Re : Topic des couche-tard (30)

Moi je pense que le char dans ce cas ne fais pas perdre de place (au pire il n'en fait pas gagner) mais si gnuuuat peut me prouver le contraire je ne suis pas contre, je me coucherais moins con ce soir.

Et Lisp ouais, c'est pour le côté parenthèse tongue.

Sinon voilà un  code qui met bien en évidence les mauvaise surprise du padding (mais sur les structures, jamais vu de tel phénomène sur des variables atomiques, mais je suis ouvert à toute démonstration).

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
    char a;
    char c;
    int b;
}test;

typedef struct
{
    char a;
    int b;
    char c;
}test2;

int main()
{
    printf("sizeof test = %d\n", sizeof(test));
    printf("sizeof test = %d\n", sizeof(test2));

    return EXIT_SUCCESS;
}

Dernière modification par grim7reaper (Le 12/03/2010, à 01:01)

Hors ligne

#29174 Le 12/03/2010, à 01:00

gnuuat

Re : Topic des couche-tard (30)

grim7reaper a écrit :

@gnuuat : le padding qui entraîne les pertes de places c'est juste pour les structures et assimilés, pas pour les variables seules il me semble.

Nope, c'est aussi important dans ta pile que dans ta RAM.

De plus ton programme renvoie 1 chez moi tongue.

Au temps pour moi : j'ai oublié une parenthèse, de plus la structure ne contenant qu'un seul char, gcc l'a transformé... en char ! C'est plus visible quand gcc ne passe pas derrière smile .

#include <stdlib.h>
#include <stdio.h>

typedef struct  s_hello
{
  char          c;
  int           b;
}               t_hello;


int             main(void)
{
  t_hello       *my_struct;

  my_struct = malloc(sizeof(*my_struct) * 2);
  printf("Taille de ta structure : %u\n", sizeof(*my_struct));
  return (EXIT_SUCCESS);
}

sizeof(char) = 1, sizeof(int) = 4, sizeof(*my_struct) = 8 \o/ .


Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !

Hors ligne

#29175 Le 12/03/2010, à 01:00

edge_one

Re : Topic des couche-tard (30)

juju_theseaman a écrit :
edge_one a écrit :
Pylade a écrit :

Je n'ai même pas revendiqué mon HDP.

Alors je le fais maintenant.

HDP \o/

sinon tu peux éditer ton message en cliquant sur "modifier"...

Ouais, mais un HDP édité, c'est la loose.

nope c'est un vrai hdp! pas un truc calculé / floodé...

vive le hdp naturel!!!

mort au flood!!!