structure if - else (débutant)

structure if - else (débutant) - C - Programmation

Marsh Posté le 31-01-2006 à 16:04:36    

j'aimerais savoir s'il est possible de metrre un if dans un else en fait parce que qd je le fais j'ai un " unrecognized statement " de la part de lcc qd je compile...
 
pour clarifier les choses, il s'agit de trier juste 3 valeurs (par comparaison >= ou =< )  et d'en afficher la plus grande.  
 
si besoin jmet la partie du code qui merde.

Reply

Marsh Posté le 31-01-2006 à 16:04:36   

Reply

Marsh Posté le 31-01-2006 à 16:17:03    

tyler1207 a écrit :


si besoin jmet la partie du code qui merde.


 
Oui il y a besoin ;-)

Reply

Marsh Posté le 31-01-2006 à 17:51:43    

if ((tab_note[0][0] <= tab_note[1][1])&&(tab_note[1][1] <= tab_note[2][2]));
 
  {printf("%s, %s,à la plus haute note\n", &tab_nom[2][2], &tab_prenom[2][2]);}
 
else;{if ((tab_note[0][0] <= tab_note[1][1])&&(tab_note[2][2] <= tab_note[1][1]));
 
  {printf("%s, %s,à la plus haute note\n", &tab_nom[1][1], &tab_prenom[1][1]);}}
 
 
 
vala !

Message cité 1 fois
Message édité par tyler1207 le 31-01-2006 à 17:52:29
Reply

Marsh Posté le 31-01-2006 à 18:26:49    

on oublie de toute façon je ne pense pas que cet algo soit efficace.  je suis en train de le réecrire d'une autre manière  :
 
 
{
 
 int ID;
 float Max = 0, Moy;
 char tab_nom[3][25];
 char tab_prenom[3][25];
 float tab_note[3][25];
 
 printf("Veuillez saisir le permier nom\n" );
 scanf("%s", &tab_nom[0][0]);
 printf("Veuillez saisir le premier prenom\n" );
 scanf("%s", &tab_prenom[0][0]);
 printf("Veuillez saisir la permiere note\n" );
 scanf("%d", &tab_note[0][0]);
 
 if (tab_note[0] >= Max);
  {Max = tab_note[0],ID=0;}
 
 
 
 
et je rencontre le pb suivant (tjrs avec lcc) :  
 
" operands of >= have illegal types 'pointer to float' and 'float' "  
et la ligne d'après " operands of = have illegal types 'float' and 'pointer to float'"
 

Reply

Marsh Posté le 31-01-2006 à 18:48:52    

Si float tab_note[3][25]; pourquoi oublier une dimension dans le if (tab_note[0][?]) ?
 
 if (tab_note[0] >= Max);  // Le point-virgule termine [le test], , il me semble
 
if () // sans ;
{
  blabla;
  blibli;
}


Message édité par Carbon_14 le 31-01-2006 à 18:50:00
Reply

Marsh Posté le 31-01-2006 à 18:59:20    

j'ai en partie suivi tes conseils, c'est bon il compile  sans erreur maintenant :)  
 
mais qd je teste mon prog, tout va bien jusqu'à la fin de la saisie de la troisèeme personne. ensuite il fini très vite, sans rien afficher des résultats.
 
je trouve pas mon erreur.  
 
voici le code :  
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
 
 
{
 
 int ID;
 float Max = 0, Moy;
 char tab_nom[3][25];
 char tab_prenom[3][25];
 float tab_note[3][25];
 
 printf("Veuillez saisir le permier nom\n" );
 scanf("%s", &tab_nom[0]);
 printf("Veuillez saisir le premier prenom\n" );
 scanf("%s", &tab_prenom[0]);
 printf("Veuillez saisir la permiere note\n" );
 scanf("%d", &tab_note[0]);
 
 if (tab_note[0][24] >= Max);
  {Max = tab_note[0][24],ID=0;}
 
 printf("Veuillez saisir le second nom\n" );
 scanf("%s", &tab_nom[1]);
 printf("Veuillez saisir le second prenom\n" );
 scanf("%s", &tab_prenom[1]);
 printf("Veuillez saisir la seconde note\n" );
 scanf("%d", &tab_note[1]);
 
 if (tab_note[1][24] >= Max);
  {Max = tab_note[1][24],ID = 1;}
 
 printf("veuillez saisir le troisieme nom\n" );
 scanf("%s", &tab_nom[2]);
 printf("Veuillez saisir le troisieme prenom\n" );
 scanf("%s", &tab_prenom[2]);
 printf("Veuillez saisir la troisieme note\n" );
 scanf("%d", &tab_note[2]);
 
 if (tab_note[2][24] >= Max);
  {Max = tab_note[2][24],ID = 2;}
 
 printf("la meilleure note est",Max);
 printf("et a ete obtenue par",tab_nom[ID]);
 
 Moy = (tab_note[0][24]+tab_note[1][24]+tab_note[2][24])/3;[img][img][/img][/img]
 
 printf("la moyenne est de", Moy);
 
}

Message cité 1 fois
Message édité par tyler1207 le 31-01-2006 à 19:04:06
Reply

Marsh Posté le 31-01-2006 à 19:29:15    

je connais pas ton environnement de dev, mais tu peux avoir besoin de mettre un getch() final (biblio conio.h) pour bloquer l'exécution afin de voir les affichages à l'écran

Reply

Marsh Posté le 31-01-2006 à 19:30:34    

La syntaxe c'est :

Code :
  1. if (condition)
  2. {
  3.     instruction;
  4. }
  5. else
  6. {
  7.     instruction;
  8. }


si tu met un ; tu admet qu'il n'y a qu'une instruction, ici : rien. Donc ton bloc en dessous est ignoré.
 
je sais pas si c'est le C qui veut ça, ou les profs qui apprenne le C qui code avec les pieds, mais presenter avec des indentation et avec aucune instruction après les crochets c'est mieux pour la lisibilité. Pourtant en C++/Java on m'a toujours appris comme ça.
 
edit : de plus, on ne met jamais deux instructions sur la meme ligne séparé de la virgule, c'est un peu trop peu previsible comme comportament, alors qu'un retour à la ligne et un ; ne coute pas grand chose. :)  
 
Donc 3 façons de faire :

Code :
  1. if (expression)
  2. {
  3.     instruction1;
  4.     instruction2;
  5. }


Code :
  1. if (expression) instruction_unique;


Code :
  1. if (expression) instruction1, instruction2;


 
Meme si la derniere, voir meme la seconde sont peut recommandé... à la rigueur la seconde on l'ecrirait :

Code :
  1. if (expression)
  2.     instruction_unique;


Message édité par MEI le 31-01-2006 à 19:37:53

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 31-01-2006 à 19:35:06    

ton code corrigé et mieux présenté :
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main()
  5. {
  6. int ID;
  7. float Max = 0;
  8. float Moy;
  9. char tab_nom[3][25];
  10. char tab_prenom[3][25];
  11. float tab_note[3][25];
  12.      printf("Veuillez saisir le permier nom\n" );
  13.      scanf("%s", &tab_nom[0]);
  14.      printf("Veuillez saisir le premier prenom\n" );
  15.      scanf("%s", &tab_prenom[0]);
  16.      printf("Veuillez saisir la permiere note\n" );
  17.      scanf("%d", &tab_note[0]);
  18.      if (tab_note[0][24] >= Max)
  19.      {
  20.         Max = tab_note[0][24];
  21.         ID=0;
  22.      }
  23.      printf("Veuillez saisir le second nom\n" );
  24.      scanf("%s", &tab_nom[1]);
  25.      printf("Veuillez saisir le second prenom\n" );
  26.      scanf("%s", &tab_prenom[1]);
  27.      printf("Veuillez saisir la seconde note\n" );
  28.      scanf("%d", &tab_note[1]);
  29.      if (tab_note[1][24] >= Max)
  30.      {
  31.         Max = tab_note[1][24];
  32.         ID = 1;
  33.      }
  34.     printf("veuillez saisir le troisieme nom\n" );
  35.     scanf("%s", &tab_nom[2]);
  36.     printf("Veuillez saisir le troisieme prenom\n" );
  37.     scanf("%s", &tab_prenom[2]);
  38.     printf("Veuillez saisir la troisieme note\n" );
  39.     scanf("%d", &tab_note[2]);
  40.     if (tab_note[2][24] >= Max)
  41.     {
  42.         Max = tab_note[2][24];
  43.         ID = 2;
  44.     }
  45.     printf("la meilleure note est",Max);
  46.     printf("et a ete obtenue par",tab_nom[ID]);
  47.     Moy = (tab_note[0][24] + tab_note[1][24] + tab_note[2][24]) / 3;
  48.     printf("la moyenne est de", Moy);
  49. }


Message édité par MEI le 31-01-2006 à 19:38:41

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 31-01-2006 à 19:46:20    

Etant donné qu'un nom est lié à un prénom et une note, il serait judicieux de les regrouper dans une structure

Code :
  1. typedef struct {
  2.     char nom[25];
  3.     char prenom[25];
  4.     float note;
  5. } t_eleve;


 
Puis, dans le main, définir un tableau de 3 élèves =>"t_eleve tabEleve[3]"
 
Ensuite, tu veux faire saisir le nom n° x => scanf("%s", tabEleve[x - 1].nom)
 
Ou bien la note n° x => scanf("%f", &tabEleve[x - 1].note)
 
Maintenant je vois pas trop pourquoi ce [25] pour les notes... mais ce doit être parce qu'il y a trop de commentaires.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 31-01-2006 à 19:46:20   

Reply

Marsh Posté le 31-01-2006 à 19:50:11    

Sve@r a écrit :

Etant donné qu'un nom est lié à un prénom et une note, il serait judicieux de les regrouper dans une structure

Code :
  1. typedef struct {
  2.     char nom[25];
  3.     char prenom[25];
  4.     float note;
  5. } t_eleve;


 
Puis, dans le main, définir un tableau de 3 élèves =>"t_eleve tabEleve[3]"
 
Ensuite, tu veux faire saisir le nom n° x => scanf("%s", tabEleve[x - 1].nom)
 
Ou bien la note n° x => scanf("%f", &tabEleve[x - 1].note)
 
Maintenant je vois pas trop pourquoi ce [25] pour les notes... mais ce doit être parce qu'il y a trop de commentaires.


Sans enoncé on est un peu dans le flou et c'est sur que son code à l'air un peu bizard. A mon avis dans son enoncé doit il y a voir la contrainte 25 notes maximum.
 
Apres son pb etait la syntaxe de IF :)


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 31-01-2006 à 20:30:02    

tyler1207 a écrit :

if ((tab_note[0][0] <= tab_note[1][1])&&(tab_note[1][1] <= tab_note[2][2]));
 
  {printf("%s, %s,à la plus haute note\n", &tab_nom[2][2], &tab_prenom[2][2]);}
 
else;{if ((tab_note[0][0] <= tab_note[1][1])&&(tab_note[2][2] <= tab_note[1][1]));
 
  {printf("%s, %s,à la plus haute note\n", &tab_nom[1][1], &tab_prenom[1][1]);}}


C'est quoi ces ';' ?


Message édité par Emmanuel Delahaye le 31-01-2006 à 20:31:18

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 31-01-2006 à 20:34:00    

tyler1207 a écrit :

j'ai en partie suivi tes conseils, c'est bon il compile  sans erreur maintenant :)


Ca me fait toujours rire !


Compiling: main.c
main.c:7: error: conflicting types for 'main_'
C:/clib/frmwrk/inc/main.h:36: error: previous declaration of 'main_' was here
main.c:7: error: conflicting types for 'main_'
C:/clib/frmwrk/inc/main.h:36: error: previous declaration of 'main_' was here
main.c: In function `main_':
main.c:16: warning: char format, different type arg (arg 2)
main.c:18: warning: char format, different type arg (arg 2)
main.c:20: warning: int format, different type arg (arg 2)
main.c:26: warning: char format, different type arg (arg 2)
main.c:28: warning: char format, different type arg (arg 2)
main.c:30: warning: int format, different type arg (arg 2)
main.c:36: warning: char format, different type arg (arg 2)
main.c:38: warning: char format, different type arg (arg 2)
main.c:40: warning: int format, different type arg (arg 2)
main.c:45: warning: too many arguments for format
main.c:46: warning: too many arguments for format
main.c:48: error: syntax error before '[' token
main.c:52:2: warning: no newline at end of file
Process terminated with status 1 (0 minutes, 0 seconds)
5 errors, 12 warnings


Déjà, faire le ménage ...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 31-01-2006 à 20:38:03    

merci merci d'avoir pris le tps  !  :jap:  g pas tt lu mais jsuis en train de le faire, là et jvais corriger ce qui cloche.  
 
juste pour mon prof, jsais pas si il fait ça ac les pieds mais pour le moment je penche plutôt pour le fait que c'est moi qui apprend et qui m'y prend mal  :whistle:
 
edit : en ce qui concerne mon environnement pour faire ça j'utilise lcc, pas par choix, juste pcq c'est ce qui est utilisé dans mon école.


Message édité par tyler1207 le 31-01-2006 à 20:40:19
Reply

Marsh Posté le 31-01-2006 à 20:44:15    

y manque le return dans la correction [:dawao]

Reply

Marsh Posté le 31-01-2006 à 20:48:19    

le return 0; manque ouai, mais bon c'est pas +/- automatique s'il manque sur les bon compilateurs ? ;)


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 31-01-2006 à 20:52:30    

Sve@r a écrit :

Etant donné qu'un nom est lié à un prénom et une note, il serait judicieux de les regrouper dans une structure

Code :
  1. typedef struct {
  2.     char nom[25];
  3.     char prenom[25];
  4.     float note;
  5. } t_eleve;


 
Puis, dans le main, définir un tableau de 3 élèves =>"t_eleve tabEleve[3]"
 
Ensuite, tu veux faire saisir le nom n° x => scanf("%s", tabEleve[x - 1].nom)
 
Ou bien la note n° x => scanf("%f", &tabEleve[x - 1].note)
 
Maintenant je vois pas trop pourquoi ce [25] pour les notes... mais ce doit être parce qu'il y a trop de commentaires.


 
 
oui bien sûr une structure serait on ne peut plus approprié ici, mais je n'ai pas le droit de les employer ici

Reply

Marsh Posté le 31-01-2006 à 20:57:04    

MEI a écrit :

le return 0; manque ouai, mais bon c'est pas +/- automatique s'il manque sur les bon compilateurs ? ;)


 
ben visiblement pas pcq c'est pas corrigé par le mien.
 
qqes questions :  
 

  • quel compilateur utilises-tu pour avoir auto les lignes affichées ? ou bein c'est toi qui les a rajoutés juste pour le post.


  • quel est le diff entre le int main() et le void main () ?

Reply

Marsh Posté le 31-01-2006 à 21:01:50    

--> D'apres le post d'Emmanuel Delahaye je dirais qu'il utilise g++.
--> Bah il me semble bien que le void main() n'est tout bonnement pas admis par la norme ANSI et que c'est FORCEMENT int main().

Message cité 2 fois
Message édité par MEI le 31-01-2006 à 21:03:11

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 31-01-2006 à 21:10:42    

MEI a écrit :

--> D'apres le post d'Emmanuel Delahaye je dirais qu'il utilise g++.
--> Bah il me semble bien que le void main() n'est tout bonnement pas admis par la norme ANSI et que c'est FORCEMENT int main().


 
lol bah concernant la norme ANSI c'est justement pour ça qu'on utilise le void main() selon le prof ...  :??:  
 
sinon as-tu testé le code ? parce que moi, que ce soit en ayant corrigé le mien ou bien en ayant copié collé le tiens puis compilé, je reste coincé au même pb... ie qu'il n'affiche aucun des résultats.
 
edit même avec le return (); à la fin

Message cité 3 fois
Message édité par tyler1207 le 31-01-2006 à 21:13:17
Reply

Marsh Posté le 31-01-2006 à 21:16:07    

tyler1207 a écrit :

lol bah concernant la norme ANSI c'est justement pour ça qu'on utilise le void main() selon le prof ...  


 
Oh là là... change de prof ou alors fais-toi rembourser...
 
"main()" ne change pas de type au gré du vent (ou du prof)... et son type est "int". C'est comme si on disait "boaf, strlen() est parfois de type float, parfois de type double..."


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 31-01-2006 à 21:21:33    

je cherche pas à défendre l'indéfendable, mais qd je crée un nvx projet ac lcc, j'ai par défaut un code (celui du fichier d'aide je pense) qui s'affiche et il y a un void main () tout au début.  
 
dans les fait que je mette void ou int ça change quoi ?  
 
en tout cas rien au fait que j'arrive tjrs pas à afficher les results !  :D

Reply

Marsh Posté le 31-01-2006 à 21:36:03    

dans la structure while, est-ce possible de mettre plusieurs conditions ?

Reply

Marsh Posté le 31-01-2006 à 21:37:17    

tyler1207 a écrit :

lol bah concernant la norme ANSI c'est justement pour ça qu'on utilise le void main() selon le prof ...  :??:  


 
change d'école. et je suis sérieux  :sweat:

Reply

Marsh Posté le 31-01-2006 à 21:38:10    

pour le while oui et non ... suffit de faire :  
 
while((expression1) && (expression2))


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 31-01-2006 à 21:41:53    

MEI a écrit :

pour le while oui et non ... suffit de faire :  
 
while((expression1) && (expression2))


 
jdoutais mais j'avais mis ça   :)  

Reply

Marsh Posté le 31-01-2006 à 21:44:42    

Joel F a écrit :

change d'école. et je suis sérieux  :sweat:


 
jtiens à préciser que je ne suis pas dans une école d'ing d'info, le C est un outil moyennement important dans ce que je fais. Donc changer d'école pour ça hein  :p

Reply

Marsh Posté le 31-01-2006 à 21:45:58    

T'es dans quel ecole et spécialité par curiosité ?


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 31-01-2006 à 21:51:18    

Ismans, méca et matériaux
 
le C me servira un petit peu pour faire des bacon sous samcef.  
 
mais disons que j'aime pas mal l'info (bien qu'en prog pure je n'ai pas de connaissances particulières mis à part le html... c'est dire) et que ça me gène pas du tout de faire plus qd mes cours croisent ce domaine. (on est d'accord, je débute en C)

Reply

Marsh Posté le 31-01-2006 à 21:55:19    

tyler1207 a écrit :

  • quel compilateur utilises-tu pour avoir auto les lignes affichées ? ou bein c'est toi qui les a rajoutés juste pour le post.

C'est le forum. Quand tu utilises les balises

[code=C] et [/code]


Citation :

  • quel est le diff entre le int main() et le void main () ?

http://mapage.noos.fr/emdel/notes.htm#typemain


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 31-01-2006 à 21:55:28    

HTML != programmation :o
 
et même si c'ets pour faire peu de C, c'est aps une raison d'en faire du moche :o

Reply

Marsh Posté le 31-01-2006 à 21:57:16    

Voilà une version C++ qui marche et qui fait 3x moins de ligne. On devrais pouvoir s'en inspirer pour faire une version C qui marche je pense. Comme je n'ai jamais codé en C je suis pas terrible terrible avec les "chaine de caractère" dans ce language.
 

Code :
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. #include <string>
  5. using std::string;
  6.  
  7. struct etudiant
  8. {
  9.     string nom;
  10.     string prenom;
  11.     float note;
  12. };
  13.  
  14. int main()
  15. {
  16. int id;
  17. float max = 0;
  18. float somme = 0;
  19. const int TAILLE = 3;
  20. etudiant classe[TAILLE];
  21.  
  22.     for (int i = 0 ; i < TAILLE ; i++)
  23.     {
  24.         cout << "\nEleve numero " << i << " : ";
  25.         cout << "\nVeuillez saisir le nom : ";
  26.         cin >> classe[i].nom;
  27.         cout << "Veuillez saisir le prenom : ";
  28.         cin >> classe[i].prenom;
  29.         cout << "Veuillez saisir la note : ";
  30.         cin >> classe[i].note;
  31.         if (classe[i].note > max)    
  32.         {
  33.             max = classe[i].note;
  34.             id = i;
  35.         }
  36.         somme += classe[i].note;
  37.     }
  38.     cout << "\nLa meilleure note est " << max;
  39.    cout << " et a ete obtenue par " << classe[id].nom << " " << classe[id].prenom;
  40.     cout << "\nLa moyenne est de " << somme / TAILLE;
  41.     cout << endl;
  42.  
  43. return 0;
  44. }


Message édité par MEI le 31-01-2006 à 22:02:09

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 31-01-2006 à 21:57:36    

MEI a écrit :

--> D'apres le post d'Emmanuel Delahaye je dirais qu'il utilise g++.


Pour compiler du C? Ce serait suicidaire ! Non c'est bien gcc avec les bons reglages :  
 
"Once again with feelin'"


-O2 -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int
-Werror-implicit-function-declaration -Wmain -Wparentheses
-Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused
-Wuninitialized -Wunknown-pragmas  -Wfloat-equal -Wundef
-Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings
-Wconversion -Wsign-compare -Waggregate-return -Wstrict-prototypes
-Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn
-Wformat -Wmissing-format-attribute -Wno-deprecated-declarations
-Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long
-Wunreachable-code

Message cité 1 fois
Message édité par Emmanuel Delahaye le 31-01-2006 à 21:58:36

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 31-01-2006 à 21:58:19    

Joel F a écrit :

HTML != programmation :o
 
et même si c'ets pour faire peu de C, c'est aps une raison d'en faire du moche :o


 
c'est pour ça que y'a un "....c'est dire" juste après  :o  
 
pour le reste, entièrement d'accord, je disais juste que c'est pas une raison pour changer d'école !

Reply

Marsh Posté le 31-01-2006 à 21:59:55    

alors le

Code :
  1. int main()

c'est le prototype de la fonction!
Main doit retourner un int, c'est comme ca.
 
edit: [:grilled]by emmanuel et en plus il a le lien [:sisicaivrai]
 
Si tu veux le prototype complet c'est meme

Code :
  1. int main (int argc, char * argv[])


mais bon quand tu t'en sers pas des arguments tu peux te contenter de  

Code :
  1. int main (void)


 
Pour ce qui est de return, c'est pas  

Code :
  1. return();


mais  

Code :
  1. return 0;


 
la methode main demande que l'on retourne un entier donc c'est ce que tu fais, le 0 est en general employe pour dire que tout s'est bien passé.
Apres tu peux aussi mettre  
 

Code :
  1. return EXIT_SUCCESS;


qui fera la meme chose (EXIT_SUCCESS etant une constante definie dans stdlib.h me semble t-il ;))

Message cité 1 fois
Message édité par gocho le 31-01-2006 à 22:02:34
Reply

Marsh Posté le 31-01-2006 à 22:01:00    

Emmanuel Delahaye a écrit :

Pour compiler du C? Ce serait suicidaire ! Non c'est bien gcc avec les bons reglages :  
 
"Once again with feelin'"


-O2 -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int
-Werror-implicit-function-declaration -Wmain -Wparentheses
-Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused
-Wuninitialized -Wunknown-pragmas  -Wfloat-equal -Wundef
-Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings
-Wconversion -Wsign-compare -Waggregate-return -Wstrict-prototypes
-Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn
-Wformat -Wmissing-format-attribute -Wno-deprecated-declarations
-Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long
-Wunreachable-code



-Wall ne serait-il pas plus rapide ?  :heink:


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 31-01-2006 à 22:01:34    


-O2 -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int
-Werror-implicit-function-declaration -Wmain -Wparentheses
-Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused
-Wuninitialized -Wunknown-pragmas  -Wfloat-equal -Wundef
-Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings
-Wconversion -Wsign-compare -Waggregate-return -Wstrict-prototypes
-Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn
-Wformat -Wmissing-format-attribute -Wno-deprecated-declarations
-Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long
-Wunreachable-code


 
pas -O3 ??

Reply

Marsh Posté le 31-01-2006 à 22:01:58    

MEI a écrit :

-Wall ne serait-il pas plus rapide ?  :heink:


Non, car il test pour de strucs un peu cons qui cherchent à rien :o

Reply

Marsh Posté le 31-01-2006 à 22:05:58    

tyler1207 a écrit :

lol bah concernant la norme ANSI c'est justement pour ça qu'on utilise le void main() selon le prof ...  :??:


Ce prof est nul.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 31-01-2006 à 22:08:52    


j'ai déjà fait la remarque  :whistle:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed