#29151 Le 12/03/2010, à 00:17
- inbox
Re : Topic des couche-tard (30)
N'nuit.
Un problème résolu ? Indiquez le en modifiant le titre du sujet.
Hors ligne
#29152 Le 12/03/2010, à 00:18
- Kanor
Re : Topic des couche-tard (30)
bn
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)
bn
Non !
PRINCE
Hors ligne
#29155 Le 12/03/2010, à 00:30
- Pylades
Re : Topic des couche-tard (30)
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
.
x86_64
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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
récupération de données: vrac–topic unique–mon site pro pour les particuliers : www.diskcard.fr– Je recycle volontiers tous vos disques durs HS (ou pas).
Le site pro pour les pros, spécialiste recupération de données RAID, NAS et serveurs: www.vodata.fr
Hors ligne
#29158 Le 12/03/2010, à 00:33
- edge_one
Re : Topic des couche-tard (30)
[youtube]http://www.youtube.com/watch?v=EvfsUX4Np0c[/youtube]
The Editors - Smokers Outside The Hospital Doors.
t'as viré la toph 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)
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 .
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)
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 .
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)
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"...
@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)
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 .
@Pylade : plus Lisp surtout . 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 . 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 .
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)
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 ?
@Pylade : plus Lisp surtout
.
À cause de la prolifération des parenthèse ?
“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)
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 .
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)
@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
.
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 .
#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)
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!!!