Votre question

Mon code ? [C] Débutant

Tags :
  • Time
  • Programmation
Dernière réponse : dans Programmation
18 Janvier 2008 10:06:26

Salut les IDNs !
Voilà j'ai fais un programme niveau débutant
pour le télécharger http://boomer83600.free.fr/theoreme.exe
et le code c'est
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <time.h>
  5.  
  6. int main(int argc, char *argv[])
  7. { long choix;
  8. printf("Faites votre choix ,1,2,3,4 ou 5 .\n");
  9. printf("1:Propriete des angles:\n");
  10. printf("2:Proprietes du cercle circonscrit:\n");
  11. printf("3:Proprietes de Pythagore:\n");
  12. printf("4:Proprietes des milieux:\n");
  13. printf("5:Proprietes de Thales:\n");
  14. scanf("%ld",&choix);
  15.  
  16. switch (choix)
  17. {
  18. case 1:
  19. printf("Dans un triangle, la somme des trois angles vaut 180 degres.\n");
  20. break;
  21. case 2:
  22. printf("Pour tout triangle rectangle, le milieu de l hypotenuse est le centre du cercle circonscrit.\n");
  23. break;
  24. case 3:
  25. printf("Dans un triangle rectangle, le carre de l hypotenuse est egal a la somme des carres des cotes de l%u2019angle droit.\n");
  26. break;
  27. case 4:
  28. printf("Dans tout triangle, les milieux de deux cotes sont tels que :\n%u2013 la droite qui joint ces milieux est parallele au troisieme cote,\n%u2013 le segment qui joint ces milieux mesure la moitie du troisieme cote.\n");
  29. break;
  30. case 5:
  31. printf("Deux triangles a cotes paralleles ont leurs cotes proportionnels; precisement si (MA) et (NB) sont secantes en S, et si (MN) est parallele a (AB), alors on a:\n SM/SA=SN/SB=MN/AB\n");
  32. break;
  33. default:
  34. printf("Vous avez fait un mauvais choix.\n");
  35. break;
  36. }
  37.  
  38.  
  39. system("PAUSE");
  40. return 0;
  41. }

Bon voilà je voudrais votre impression ! , chui très débutant , et quelques solutions pour améliorer le programme .
Merci :)  !

Autres pages sur : code debutant

Anonyme
19 Janvier 2008 10:42:57

Salut
le #include <math.h> me semble en trop
et sinon le choix tu peux le déclarer en int, ça prend moins de place en mémoire
a b L Programmation
19 Janvier 2008 12:13:04

Cart, sur les machines actuelles, un "int" c'est 4 octets comme un "long". ;) 

Pour le #include <math.h>, ça accélère la compilation, mais ne doit pas changer le programme final.
Contenus similaires
19 Janvier 2008 12:16:42

Donc c'est bon ? Je vais pas aller plus loin sur ce programme c'est juste pour m'entrainer pour la suite du C ^^
a b L Programmation
19 Janvier 2008 12:40:33

C'est bon si tu as compris ce que tu as fait ;) 
19 Janvier 2008 12:43:39

Bah oui j'ai compris ^^ J'ai fais ca tout seul sans recopier quelque codes !
19 Janvier 2008 14:35:18

#include <time.h>

N'est pas d'une grande utilité non plus.

Par contre tu devrais rajouter une boucle, car tu as un message d'erreur en default ce qui est bien, mais si le programme te dit "Vous avez fait un mauvais choix." et s'arrête ce n'est pas très intéressant, donc si tu sais te servir d'une boucle rajoutes en une pour que sa recommence lorsque l'utilisateur du programme fait faux.
19 Janvier 2008 18:00:54

Ok merci je vais essayer ca
Anonyme
19 Janvier 2008 18:31:00

Citation :
Cart, sur les machines actuelles, un "int" c'est 4 octets comme un "long". ;) 

je me suis basé sur mes anciens cours :pfff: 
19 Janvier 2008 18:44:45

J'arrive pas à faire ma boucle pouvez vous s'éclaircir ?
Mercii :D 
Anonyme
19 Janvier 2008 19:34:21

Pour remonter au case il faut nécessairement une boucle, un while par exemple
....
printf("0:Quitter\n" );
while( choix != 0)
scanf("%ld",&choix);
case
.....

a b L Programmation
19 Janvier 2008 20:13:41

Citation :
Citation :
Cart, sur les machines actuelles, un "int" c'est 4 octets comme un "long". ;) 

je me suis basé sur mes anciens cours :pfff: 

Oui, dans la norme, "int" n'est pas dimensionné, contrairement au "char", "short" et "long", c'est laissé libre à la plateforme de compilation. Il y a longtemps c'était 2 octets (mais bon, du temps des premiers pentium c'était déjà à 4 pour la plupart des compilos). En théorie le "long" est fixé à 4. Certains compilateurs ont fait passé le "long" à 8 octets plutôt que le int lorsqu'il n'utilise pas le "long long" car on utilise le "long" pour les grandes données.
Sinon jète tes vieux cours, il y a encore plus d'erreurs que dans les bouquins :D , prend juste la norme (qui d'ailleurs change de temps en temps) ;) 
Anonyme
19 Janvier 2008 21:12:32

merci de ces précisions
20 Janvier 2008 14:42:19

Citation :
Pour remonter au case il faut nécessairement une boucle, un while par exemple
....
printf("0:Quitter\n" );
while( choix != 0)
scanf("%ld",&choix);
case
.....

ça marche pas il faut que le mette où le code ?
Anonyme
20 Janvier 2008 16:38:30

Autour du switch..
ce genre de chose

printf("0:Quitter\n" );
choix=1;//juste dans le cas ou choix a été init à 0 ou alors utilise do while
while( choix != 0){
scanf("%ld",&choix);
switch (choix)
{
case 1:
20 Janvier 2008 16:51:34

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int main(int argc, char *argv[])
  6. { long choix;
  7. do
  8. {
  9. printf("Faites votre choix ,1,2,3,4 ou 5 .\n" );
  10. printf("1:Propriete des angles:\n" );
  11. printf("2:Proprietes du cercle circonscrit:\n" );
  12. printf("3:Proprietes de Pythagore:\n" );
  13. printf("4:Proprietes des milieux:\n" );
  14. printf("5:Proprietes de Thales:\n" );
  15. scanf("%ld",&choix);
  16.  
  17. switch (choix)
  18. {
  19. case 1:
  20. printf("Dans un triangle, la somme des trois angles vaut 180 degres.\n" );
  21. break;
  22. case 2:
  23. printf("Pour tout triangle rectangle, le milieu de l hypotenuse est le centre du cercle circonscrit.\n" );
  24. break;
  25. case 3:
  26. printf("Dans un triangle rectangle, le carre de l hypotenuse est egal a la somme des carres des cotes de l%u2019angle droit.\n" );
  27. break;
  28. case 4:
  29. printf("Dans tout triangle, les milieux de deux cotes sont tels que :\n%u2013 la droite qui joint ces milieux est parallele au troisieme cote,\n%u2013 le segment qui joint ces milieux mesure la moitie du troisieme cote.\n" );
  30. break;
  31. case 5:
  32. printf("Deux triangles a cotes paralleles ont leurs cotes proportionnels; precisement si (MA) et (NB) sont secantes en S, et si (MN) est parallele a (AB), alors on a:\n SM/SA=SN/SB=MN/AB\n" );
  33. break;
  34. }
  35. if (choix<1||choix>5)
  36. printf("Vous avez fait un mauvais choix.\n\n" );
  37. }while(choix<1||choix>5); //Boucle qui répète le menue si l'utilisateur fait un mauvais choix.
  38.  
  39. system("PAUSE" );
  40. return 0;
  41. }



Voila si tu compile le code, tu véras que lorsque tu feras le mauvais choix le menue se répètera avec un message d'erreur. Tu peut encore améliorer, sinon pour les boucles cherche un tuto qui t'explique comment sa marche.
20 Janvier 2008 17:41:28

Merci bien j'ai mis à jour le logiciel mais j'ai un problème !

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char *argv[])
  4. { long choix;
  5. do
  6. {
  7. printf("Faites votre choix ,1,2,3,4 ou 5 .\n" );
  8. printf("1:Propriete des angles:\n" );
  9. printf("2:Proprietes du cercle circonscrit:\n" );
  10. printf("3:Proprietes de Pythagore:\n" );
  11. printf("4:Proprietes des milieux:\n" );
  12. printf("5:Proprietes de Thales:\n" );
  13. scanf("%ld",&choix);
  14.  
  15. switch (choix)
  16. {
  17. case 1:
  18. printf("Dans un triangle, la somme des trois angles vaut 180 degres.\n" );
  19. break;
  20. case 2:
  21. printf("Pour tout triangle rectangle, le milieu de l hypotenuse est le centre du cercle circonscrit.\n" );
  22. break;
  23. case 3:
  24. printf("Dans un triangle rectangle, le carre de l hypotenuse est egal a la somme des carres des cotes de l%u2019angle droit.\n" );
  25. break;
  26. case 4:
  27. printf("Dans tout triangle, les milieux de deux cotes sont tels que :\n%u2013 la droite qui joint ces milieux est parallele au troisieme cote,\n%u2013 le segment qui joint ces milieux mesure la moitie du troisieme cote.\n" );
  28. break;
  29. case 5:
  30. printf("Deux triangles a cotes paralleles ont leurs cotes proportionnels; precisement si (MA) et (NB) sont secantes en S, et si (MN) est parallele a (AB), alors on a:\n SM/SA=SN/SB=MN/AB\n" );
  31. break;
  32. }
  33. if (choix<1||choix>5)
  34. printf("Vous avez fait un mauvais choix.\n\n" );
  35. while(choix<1||choix>5);
  36.  
  37. system("PAUSE" );
  38. return 0;
  39.  
  40.  
  41.  
  42. }

C'est quoi l'erreur ?
Mercii
20 Janvier 2008 17:49:57

tu doit rajouter } devant le while
20 Janvier 2008 18:19:24

Voilà ça marche du tonner !
Mercii
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS