Hardware : Ashe, twentycent Divers : Naunaud128, 1 utilisateur anonyme et 22 utilisateurs inconnus

 Mot :   Pseudo :  
 
 Page :  1  2
Page Précédente 
Auteur
 Sujet :

Demande d'info sur des commandes C

 
n°54314
fredo490
Mais pourquoi donc ?
Posté le 06-01-2007 à 16:43:36  profilanswer
 

Je lance un nouveau topic plus "propre" je l'éspère ...
Celui-ci sera réservé aux questions basics sur le langage C et non pas sur des débats dérivés.
 
Première question :
Pour afficher le contenue d'une constante. J'ai fais ça mais ça ne donne pas grand chose :

Code :
  1. #include <stdio.h>
  2. const long PI=3.14 ;
  3. int main()
  4.     { 
  5.    
  6. printf("La valeur de PI est egal a %d", PI);
  7.    
  8.     return 0 ;
  9.     }


 
mais la virgule ne passe pas, je suppose que c'est dù au "%d" mais j'arrive pas à trouver le truc qu'il faut.


Message édité par fredo490 le 06-01-2007 à 16:43:50
n°54315
Ashe
reenignE esreveR
Posté le 06-01-2007 à 16:47:26  profilanswer
 

long = entier
float ou double pour avoir une virgule
(puis %f)


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°54316
Freeed
Posté le 06-01-2007 à 16:47:41  profilanswer
 

%d = entier
%f = virgule flotante
 
;)
 
 [:girou]  [:dreamworker:4]


Message édité par Freeed le 06-01-2007 à 16:48:25

---------------
Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
Play loud, drink hard.
n°54317
LostSoul
Vivement TES V
Posté le 06-01-2007 à 16:54:32  profilanswer
 

mettre 3.14 dans un long déjà c'est foutu comme dit Ashe (float ou double pour le typage)
pour le printf, comme ils disent (et plus de détails dans l'aide sur les différents masques de printf)
 
au fait dans math.h y'a déjà une constante avec pi (M_PI)


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°54318
Ashe
reenignE esreveR
Posté le 06-01-2007 à 16:56:51  profilanswer
 

Pas standard
 
Edit: genre le math.h de VC++ 7.1:
 

Code :
  1. #ifdef  _USE_MATH_DEFINES
  2. /* Define _USE_MATH_DEFINES before including math.h to expose these macro
  3. * definitions for common math constants.  These are placed under an #ifdef
  4. * since these commonly-defined names are not part of the C/C++ standards.
  5. */
  6. ..........
  7. #endif  /* _USE_MATH_DEFINES */


Message édité par Ashe le 06-01-2007 à 16:59:43

---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°54319
Naunaud128
Crawling Up A Hill
Posté le 06-01-2007 à 17:28:36  profilanswer
 

LostSoul a écrit :

mettre 3.14 dans un long déjà c'est foutu comme dit Ashe (float ou double pour le typage)
pour le printf, comme ils disent (et plus de détails dans l'aide sur les différents masques de printf)
 
au fait dans math.h y'a déjà une constante avec pi (M_PI)


 
Si il a pas l'msdn ça va être dur :p


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
Souvent les gens prennent leurs propres lacunes pour celles de la société qui les entoure, et cherchent à réformer ladite société parce qu'ils sont incapables de se réformer eux-mêmes. [Isaac Asimov]
n°54320
Ashe
reenignE esreveR
Posté le 06-01-2007 à 17:32:32  profilanswer
 

Naunaud128 a écrit :

Si il a pas l'msdn ça va être dur :p


http://msdn.microsoft.com/library/ [...] ctions.asp
et
http://msdn.microsoft.com/library/ [...] table_r..3
:o


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°54321
Naunaud128
Crawling Up A Hill
Posté le 06-01-2007 à 17:33:41  profilanswer
 


 
Cheateur :o Moi je parle de la touche F1 :o
 
(bon ok -_-)


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
Souvent les gens prennent leurs propres lacunes pour celles de la société qui les entoure, et cherchent à réformer ladite société parce qu'ils sont incapables de se réformer eux-mêmes. [Isaac Asimov]
n°54322
LostSoul
Vivement TES V
Posté le 06-01-2007 à 17:37:02  profilanswer
 

Naunaud128 a écrit :

Si il a pas l'msdn ça va être dur :p


 
internet c'est fait pour qui d'après toi ? :p


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°54323
Naunaud128
Crawling Up A Hill
Posté le 06-01-2007 à 17:38:18  profilanswer
 

LostSoul a écrit :

internet c'est fait pour qui d'après toi ? :p


 
M@tbe?
 
:D


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
Souvent les gens prennent leurs propres lacunes pour celles de la société qui les entoure, et cherchent à réformer ladite société parce qu'ils sont incapables de se réformer eux-mêmes. [Isaac Asimov]
n°54324
Ashe
reenignE esreveR
Posté le 06-01-2007 à 17:40:26  profilanswer
 

Internet = Google, wikipedia et youtube
(le reste on s'en fout :o)


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°54325
LostSoul
Vivement TES V
Posté le 06-01-2007 à 17:40:58  profilanswer
 

mais ca c'est que du web ...


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°54326
fredo490
Mais pourquoi donc ?
Posté le 06-01-2007 à 17:42:24  profilanswer
 

Heu petite question, où est le bug ?!
C'est un programme pour faire des conditions, on entre un entier, si celui-ci est égal à 0 on a un message, et si c'est supérieur à 10, on a un autre message.
 

Code :
  1. #include <stdio.h>
  2. int i ;
  3. int main()
  4.     { 
  5.     printf("\nVeuillez saisir un nombre entier : " );
  6. scanf("%d", &i);
  7.     if (i == '0')
  8.     {
  9.          printf("Vous avez saisi le chiffre zéro\n" );
  10.     }
  11.     else
  12.     {
  13.          if (i >= '10')
  14.          {
  15.          printf("Vous avez saisi un chiffre >10\n" );
  16.          }
  17.          else
  18.          {
  19.          printf("" ) ;
  20.          }
  21.     }
  22.    
  23.     return 0 ;
  24.     }


Message édité par fredo490 le 06-01-2007 à 17:43:14
n°54327
Naunaud128
Crawling Up A Hill
Posté le 06-01-2007 à 17:42:35  profilanswer
 

Ashe a écrit :

Internet = Google, wikipedia et youtube
(le reste on s'en fout :o)


 
Wikipedia c'est le mal !


Message édité par Naunaud128 le 06-01-2007 à 17:42:44

---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
Souvent les gens prennent leurs propres lacunes pour celles de la société qui les entoure, et cherchent à réformer ladite société parce qu'ils sont incapables de se réformer eux-mêmes. [Isaac Asimov]
n°54329
Naunaud128
Crawling Up A Hill
Posté le 06-01-2007 à 17:43:49  profilanswer
 

fflush (stdin) avant un scanf (donc à ta place je prendrais autre chose que scanf :o)
 
EDIT (c'est pas ma réponse qui va faire que ça ira mieux hein, mais faut pas utiliser scanf c'est le mal :o)

Message cité 2 fois
Message édité par Naunaud128 le 06-01-2007 à 17:45:04

---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
Souvent les gens prennent leurs propres lacunes pour celles de la société qui les entoure, et cherchent à réformer ladite société parce qu'ils sont incapables de se réformer eux-mêmes. [Isaac Asimov]
n°54330
fredo490
Mais pourquoi donc ?
Posté le 06-01-2007 à 17:45:36  profilanswer
 

Naunaud128 a écrit :

fflush (stdin) avant un scanf (donc à ta place je prendrais autre chose que scanf :o)
 
EDIT (c'est pas ma réponse qui va faire que ça ira mieux hein, mais faut pas utiliser scanf c'est le mal :o)


 
tu peux traduire ?!
 
Edit, alors à la place de traduire, explique ...

Message cité 1 fois
Message édité par fredo490 le 06-01-2007 à 17:48:25
n°54331
Freeed
Posté le 06-01-2007 à 17:50:10  profilanswer
 

1) Constante globale... j'vois pas l'intérêt ^^
 
2) if(i == 0) c'est le nombre 0 que tu compares, pas le caractère ASCII.


---------------
Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
Play loud, drink hard.
n°54332
Naunaud128
Crawling Up A Hill
Posté le 06-01-2007 à 17:54:02  profilanswer
 

fredo490 a écrit :

tu peux traduire ?!
 
Edit, alors à la place de traduire, explique ...


 
Ben fflush (stdin) si je me rappelle bien sert à vider le buffer (j'sais plus le nom), pour éviter de se retrouver avec des conneries du genre, si y'a déjà quelque chose dans le buffer il tienne pas compte de ce que tu as entré au clavier :)
 
Et comme dit Freeed, tu dois pas comparer le caractère Ascii mais la valeur.


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
Souvent les gens prennent leurs propres lacunes pour celles de la société qui les entoure, et cherchent à réformer ladite société parce qu'ils sont incapables de se réformer eux-mêmes. [Isaac Asimov]
n°54333
Ashe
reenignE esreveR
Posté le 06-01-2007 à 17:54:12  profilanswer
 

Naunaud128 a écrit :

fflush (stdin) avant un scanf (donc à ta place je prendrais autre chose que scanf :o)


1) y en a pas besoin
2) fflush marche avec stdin que sous VC++
 

Freeed a écrit :

1) Constante globale... j'vois pas l'intérêt ^^


Dommage, parce que c'est comme ca qu'elles sont utilisees 99% du temps


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°54334
Naunaud128
Crawling Up A Hill
Posté le 06-01-2007 à 17:55:00  profilanswer
 

Ashe a écrit :

1) y en a pas besoin
2) fflush marche avec stdin que sous VC++


Merci pour l'info :)


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
Souvent les gens prennent leurs propres lacunes pour celles de la société qui les entoure, et cherchent à réformer ladite société parce qu'ils sont incapables de se réformer eux-mêmes. [Isaac Asimov]
n°54335
Freeed
Posté le 06-01-2007 à 17:56:40  profilanswer
 

J'voulais dire variable globale, pas constante >_<


---------------
Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
Play loud, drink hard.
n°54336
fredo490
Mais pourquoi donc ?
Posté le 06-01-2007 à 17:59:18  profilanswer
 

heu question 2 :  
Voilà la même chose pour un nombre réel, pour 0 le truc marche, mais pour le le >10 ça marche pas ... une idée ?
 

Code :
  1. #include <stdio.h>
  2. double i ;
  3. int main()
  4.     { 
  5.     printf("\nVeuillez saisir un nombre entier : " );
  6. scanf("%f", &i);
  7.     if (i == 0)
  8.     {
  9.          printf("Vous avez saisi le chiffre zero\n" );
  10.     }
  11.     else
  12.     {
  13.          if (i >= 10)
  14.          {
  15.          printf("Vous avez saisi un chiffre >10\n" );
  16.          }
  17.          else
  18.          {
  19.          printf("" ) ;
  20.          }
  21.     }
  22.    
  23.     return 0 ;
  24.     }

n°54337
Ashe
reenignE esreveR
Posté le 06-01-2007 à 18:02:48  profilanswer
 

%lf pour un double, %f pour un float (quand c'est scanf)
Edit: et si tu veux savoir pourquoi ca fonctionne pour le 0, comme ta variable est globale elle est initialisee a 0, donc a la limite si meme tu faisais pas de scanf ca fonctionnerait... Et quand tu passes l'adresse du double, tu lui dis que c'est un float donc il ecrit que sur la moitie des bits (que des 0, mais bon)

Message cité 1 fois
Message édité par Ashe le 06-01-2007 à 18:05:59

---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°54338
fredo490
Mais pourquoi donc ?
Posté le 06-01-2007 à 18:04:52  profilanswer
 

Ashe a écrit :

%lf pour un double, %f pour un float (quand c'est scanf)


 
merci pour la correction.
edit: ça fonctionne trés bien


Message édité par fredo490 le 06-01-2007 à 18:05:07
n°54339
fredo490
Mais pourquoi donc ?
Posté le 06-01-2007 à 18:10:28  profilanswer
 

heu, question, comment vous feriez pour tester si un nombre est supérieur à 10 et inférieur à 20 ?!

n°54340
Ashe
reenignE esreveR
Posté le 06-01-2007 à 18:11:15  profilanswer
 

if (i > 10 && i < 20)
(&& = et, || = ou)


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°54341
fredo490
Mais pourquoi donc ?
Posté le 06-01-2007 à 18:19:02  profilanswer
 

Ashe a écrit :

if (i > 10 && i < 20)
(&& = et, || = ou)


 
merci pour l'info !
c'est classe, ça fonctionne à merveille

n°54355
LostSoul
Vivement TES V
Posté le 06-01-2007 à 20:24:22  profilanswer
 

Mais heu ... t'as pas un cours de C normalement pour aller avec ça ?
Parce que bon ... là c'est pas les bases du C (hormis la syntaxe) mais les bases tout court quoi :/


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°54360
fredo490
Mais pourquoi donc ?
Posté le 06-01-2007 à 21:49:18  profilanswer
 

LostSoul a écrit :

Mais heu ... t'as pas un cours de C normalement pour aller avec ça ?
Parce que bon ... là c'est pas les bases du C (hormis la syntaxe) mais les bases tout court quoi :/


 
Ben on a un poly de 120 pages qui est "mal foutu".
Et souvent, se sont des petites erreurs à la con qui ne choquent pas au début ... Et il suffit d'une bonne âme pour régler le problème.
Et de toute manière je mémorise mieux quand on m'explique ou quand je demande comme ça que quand je lis 3 pages pour trouver un truc qui me sert à rien au final.

n°54384
Harkonnen
Posté le 08-01-2007 à 13:55:34  profilanswer
 

Naunaud128 a écrit :

Ben fflush (stdin) si je me rappelle bien sert à vider le buffer (j'sais plus le nom), pour éviter de se retrouver avec des conneries du genre, si y'a déjà quelque chose dans le buffer il tienne pas compte de ce que tu as entré au clavier :)


totalement inutile et indéfini. fflush() ne sert qu'à vider les buffers de sortie, jamais les buffers d'entrée. fflush(stdin) est une aberration enseignée par des profs qui ne savent pas de quoi ils parlent. il n'y a aucune fonction pour vider le buffer clavier, il faut faire un truc du genre

Code :
  1. #include <stdio.h>
  2. int c;
  3. while ((c = getchar()) != '\n' && c != EOF);


si un prof vous parle de fflush(stdin) alors vous saurez que c'est un mauvais prof.

n°54385
Harkonnen
Posté le 08-01-2007 à 13:58:21  profilanswer
 

fredo490 a écrit :

heu question 2 :  
Voilà la même chose pour un nombre réel, pour 0 le truc marche, mais pour le le >10 ça marche pas ... une idée ?
 

Code :
  1. #include <stdio.h>
  2. double i ;
  3. int main()
  4.     { 
  5.     printf("\nVeuillez saisir un nombre entier : " );
  6. scanf("%f", &i);
  7.     if (i == 0)
  8.     {
  9.          printf("Vous avez saisi le chiffre zero\n" );
  10.     }
  11.     else
  12.     {
  13.          if (i >= 10)
  14.          {
  15.          printf("Vous avez saisi un chiffre >10\n" );
  16.          }
  17.          else
  18.          {
  19.          printf("" ) ;
  20.          }
  21.     }
  22.    
  23.     return 0 ;
  24.     }



vire le scanf() et remplace le par fgets(). si ton utilisateur saisit une chaine de caractère ou n'importe quoi d'autre, aucun controle de dépassement n'est fait et ton programme sera buggé...

n°54407
fredo490
Mais pourquoi donc ?
Posté le 08-01-2007 à 21:08:03  profilanswer
 

Harkonnen a écrit :

vire le scanf() et remplace le par fgets(). si ton utilisateur saisit une chaine de caractère ou n'importe quoi d'autre, aucun controle de dépassement n'est fait et ton programme sera buggé...


 
le fgets() est une fonction qui limite les entrées à un "nombre" ?!
il faut un include en plus, ou le stdio.h suffit ?
 
Merci d'avance !
(je vais tester cette commande, et jvous donne des nouvelles)

n°54408
Ashe
reenignE esreveR
Posté le 08-01-2007 à 21:10:46  profilanswer
 

Non, fgets ca lit une ligne, en gros (puis tu peux specifier la taille maximum)
Donc techniquement c'est + genre:

Code :
  1. char buff[64];
  2. char * p;
  3. long n;
  4. fgets( buff, sizeof buff, stdin );
  5. n = strtol( buff, &p, 10 );


(puis bon tu verifies si la conversion est bonne avec p)


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°54409
fredo490
Mais pourquoi donc ?
Posté le 08-01-2007 à 21:14:35  profilanswer
 

:pt1cable:  
C'est le genre de truc que j'adore trop lol...
Donc c'est plus des conditions avancées sur se qui doit être rentré si on peut dire. On fait plus ou moins tout en manuel.

n°54410
LostSoul
Vivement TES V
Posté le 09-01-2007 à 09:58:56  profilanswer
 

Pas vraiment, ca veut juste dire que avec fgets() tu alloues toi meme le buffer que tu veux utiliser pour les entrées donc tu en controles précisément la taille.
 
avec scanf() chépas comment ca marche en interne mais t'as pas de controle du buffer d'entrée


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°54411
Ashe
reenignE esreveR
Posté le 09-01-2007 à 10:02:54  profilanswer
 

"%20s"


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°54412
LostSoul
Vivement TES V
Posté le 09-01-2007 à 10:05:45  profilanswer
 

quand on est propre oué mais j'connais pas beaucoup de gens qui font ca :p


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°54415
Ashe
reenignE esreveR
Posté le 09-01-2007 à 10:12:06  profilanswer
 

Les gens propres font pas du C :o


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°54416
LostSoul
Vivement TES V
Posté le 09-01-2007 à 10:13:04  profilanswer
 

ils font quoi alors ? du java ? :p


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°54417
Ashe
reenignE esreveR
Posté le 09-01-2007 à 10:18:53  profilanswer
 

string s;
cin >> s; ou getline( cin, s );


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
 Page :  1  2
Page Précédente 

Aller à :
Ajouter une réponse