> "C Projets" qui vont vite, un titre qu'il ... arf je l'ai déjà fait

saming
posté jeudi 24 avril 2008 à 19:34
Message #1


Forumeur balbutiant
*

Messages : 11
Inscrit : 09/04/2007
Lieu : Rueil Malmaison
homme
13
fr




Bonjour !
Je commence , du haut de mes 12 ans , à programmer en C .
Evidemment cette entreprise n'est peut-être pas très raisonnable pour mon âge .
D'ailleurs , je pense être le seul à savoir ce qu'est Visual Basic ou le C/C++ .
Mais je veux avancer , et ce , en étant attentif à tout conseil ou remarque ...
Je me heurte à des problèmes capitaux à mon stade d'apprentissage .
Car je commence comme je l'ai dit et toute base non consolidée d'enseignement , s'effondre à un enseignement supérieur .
Ces problèmes concernent les accolades ( ... pas sûr que cela s'écrive ainsi ) et j'ai aussi du mal à me mettre au
SWITCH
au profit du ELSE IF .
Sauf que , je ne comprends vraiment pas les erreurs trouvées par le compileur .
J'aimerais comprendre ...

Code
                       if(r1==2 && r2==4 && r3==6);
                        {
                                 printf("\nBravo ! Tu as reussi !");
                                 printf("Tu connais tes tables ... ");
                        }
                        else
                        {
                            printf("Bouh ! ");
                            printf("Tu ne connais pas tes tables ! ");
                        }

Ce morceau de code provient d'un logiciel MS-DOS en construction.


Ici l'erreur est : syntax error before "else" ou , pour les stricts francophones , Erreur de syntaxe avant "else"
Je ne saisis pas . L'accolade est respectée ... il y a bien le ";" ...
Qu'aurais-je oublié ? J'essaye actuellement le switch avant de vous donner un code ( non-entier ... )
qui , peut-être , va fonctionner ( ... va pour le code entier ).
Si une quelqu'onque erreur est détectée par vos soins , je vous serais reconnaisant de me l'indiquer .

Sur ce je vais passer ces lignes de code au switch , et voir si il y aurait un quelqu'onque changement ...
Merci de votre attention , et au revoir !

------------------------------------15 minutes plus tard-------------------------------------------------

Essayant actuellement le switch , je pense que vu mon choix ( un logiciel de révision de tables ) ,
le else if est beaucoup mieux approprié , non ?
Qu'en pensez vous ?

P.S.:
-Code complet ( en construction ) en switch
Code
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
     long choix_table, r1, r2, r3, r4 ,r5 ,r6 ,r7 , r8 , r9 ,r10;
     printf("Bonjour ! Choisis la table que tu veux reviser ...\n");
     printf(">2<\n");
     printf(">3<\n");
     printf(">4<\n");
     printf(">5<\n");
     printf(">6<\n");
     printf(">7<\n");
     printf(">8<\n");
     printf(">9<\n");
     printf("Ton choix : ");
     scanf("[%ld]\n", &choix_table);
     switch(choix_table==2);
     {
                        printf("Ecrivez les resultats des operations suivantes dans l'ordre espaces : \n");
                        printf(" 1 X 2 , 2 X 2 , 3 X 2 ... \n");
                        printf(" ... 4 X 2 , 5 X 2 , 6 X 2 ... \n");
                        printf(" ... 7 X 2 , 8 X 2 , 9 X 2 ... \n");
                        printf(" ... et 10 X 2 \n");
                        printf("Exemple : 8 52 546 , etc ... ");
                        scanf(" %ld %ld %ld \n", &r1 ,&r2 ,&r3);
                        switch (r1 && r2 && r3)
                        {
                         case 2 , 4 , 6 :      
                              printf("\nBravo ! Tu as reussi !");
                              printf("Tu connais tes tables ... ");
                         break;
                         default :
                            printf("Bouh ! ");
                            printf("Tu ne connais pas tes tables ! ");
                         break;
                        }  
     }
  
   system("PAUSE");    
   return 0;
}

- Code complet en else if
Code
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
     long choix_table, r1, r2, r3, r4 ,r5 ,r6 ,r7 , r8 , r9 ,r10;
     printf("Bonjour ! Choisis la table que tu veux reviser ...\n");
     printf(">2<\n");
     printf(">3<\n");
     printf(">4<\n");
     printf(">5<\n");
     printf(">6<\n");
     printf(">7<\n");
     printf(">8<\n");
     printf(">9<\n");
     printf("Ton choix : ");
     scanf("[%ld]\n", &choix_table);
     switch(choix_table==2);
     {
                        printf("Ecrivez les resultats des operations suivantes dans l'ordre espaces : \n");
                        printf(" 1 X 2 , 2 X 2 , 3 X 2 ... \n");
                        printf(" ... 4 X 2 , 5 X 2 , 6 X 2 ... \n");
                        printf(" ... 7 X 2 , 8 X 2 , 9 X 2 ... \n");
                        printf(" ... et 10 X 2 \n");
                        printf("Exemple : 8 52 546 , etc ... ");
                        scanf(" %ld %ld %ld \n", &r1 ,&r2 ,&r3);
                        if (r1==2 && r2==4 && r3==6);
                        {      
                              printf("\nBravo ! Tu as reussi !");
                              printf("Tu connais tes tables ... ");
                        }
                        else;
                        {    
                            printf("Bouh ! ");
                            printf("Tu ne connais pas tes tables ! ");
                        }  
     }
  
   system("PAUSE");    
   return 0;
}

Voilà . Merci beaucoup !

Ce message a été modifié par saming - jeudi 24 avril 2008 à 19:35.


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

int main(int argc, char *argv[])
{
long choix;
printf("C forever !");
printf("ForumFr Forever !");
printf("TrackMania Nations Forever !");
printf("Oui ? [");
scanf("%ld]", &choix);
if (choix==1);
{
printf("Merci !");
}
else;
{
printf("Boarf...");
}

system("PAUSE");
return 0;
}
Go to the top of the page
+Quote Post
Tags : Ce contenu n'a pas encore de Tag
Sponsors
À l'instant



Retour en haut de page
koubo
posté jeudi 24 avril 2008 à 21:03
Message #2


chat bleu
**********

Messages : 6 566
Inscrit : 15/04/2007
homme
24
fr




salut,
dans la première partie de ton code, tu mets un ; après le if. Je pense que l'erreur vient de là.
la structure c'est :
if(condition)
{
instructions;
}
else
{
instructions;
}

sinon pour le switch , il faut pas mettre de condition dedans
la structure c'est :

switch(ta_variable)
{
case valeur_1 : instructions; break;
case valeur_2 : instructions;break;
}

donc dans ton cas c'est
switch(choix_table)
{
case 2 : ... etc.


voilà. smile.gif

pour te faciliter la vie, tu peux regarder du côté de "cin" et "cout" à la place de printf et compagnie, ça devrait te faciliter la vie... enfin si tu veux faire du c++, pas juste du c wink1.gif


edit : le switch me paraît plus approprié que le elseif pour ton programme

Ce message a été modifié par koubo - jeudi 24 avril 2008 à 21:05.


--------------------
Go to the top of the page
+Quote Post
saming
posté vendredi 25 avril 2008 à 13:20
Message #3


Forumeur balbutiant
*

Messages : 11
Inscrit : 09/04/2007
Lieu : Rueil Malmaison
homme
13
fr




Merci pour tous ces conseils :-) !
Par contre je n'aurais pas fini le C jusqu'à une date , inprécise hein , hum , ultérieure à l'été 2008 ...

Donc , OK , j'essaye actuellement l'effacement du ";" ...
Ça marche !

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

int main(int argc, char *argv[])
{
    long choix_table, r1, r2, r3, r4 ,r5 ,r6 ,r7 , r8 , r9 ,r10;
    printf("Bonjour ! Choisis la table que tu veux reviser ...\n");
    printf(">2<\n");
    printf(">3<\n");
    printf(">4<\n");
    printf(">5<\n");
    printf(">6<\n");
    printf(">7<\n");
    printf(">8<\n");
    printf(">9<\n");
    printf("Ton choix : ");
    scanf("[%ld]\n", &choix_table);
    if(choix_table==2)
    {
                       printf("Ecrivez les resultats des operations suivantes dans l'ordre espaces deux fois: \n");
                       printf(" 1 X 2 , 2 X 2 , 3 X 2 ... \n");
                       printf(" ... 4 X 2 , 5 X 2 , 6 X 2 ... \n");
                       printf(" ... 7 X 2 , 8 X 2 , 9 X 2 ... \n");
                       printf(" ... et 10 X 2 \n");
                       printf("Exemple : 8  9  2 , etc ... ");
                       scanf(" %ld %ld %ld \n", &r1 ,&r2 ,&r3);
                       if (r1==2 && r2==4 && r3==6)
                       {      
                             printf("\nBravo ! Tu as reussi ! ");
                             printf("Tu connais tes tables ... ");
                       }
                       else
                       {    
                           printf("Bouh ! ");
                           printf("Tu ne connais pas tes tables ! ");
                       }  
    }
  
  system("PAUSE");    
  return 0;
}


Bon par contre , il faut insister avec les espaces ... mais ça marche à merveille !
Alors , j'ai crée entre temps un calculateur de ... l'année actuelle ... ( WTF ? )
Depuis que j'ai intégré la condition :
Code
if(annee_de_naissance << 1900 || annee_actuelle << 2000 || age >> 99)
             printf("Attention , ne trichez plus !\n");
             printf("Je vous ai a l'oeil !\n\n");
             system("PAUSE");
             return 0;

... le programme "bugge" et indique systématiquement que je triche dans les dates ...
Bon , le code complet ... ( ah , c'est vite fait hein ! 1/4 heure maximum ;-) ! )
Code
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  
  long age, annee_de_naissance, annee_actuelle;
  printf("Bonjour ! Merci de repondre a ces questions ... \n");
  printf("Quel age avez-vous ? ");
  scanf("%ld", &age);
  printf("Ah ! Vous avez donc %ld ans !\n", age);
  printf("Quelle est votre annee de naissance ? ");
  scanf("%ld", &annee_de_naissance);
  printf("Ah ! Vous etes donc ne(e) en %ld !\n", annee_de_naissance);
  printf("Donc , pour resumer vous etes ne(e) en %ld et vous avez %ld ans !\n", annee_de_naissance, age);
  annee_actuelle = annee_de_naissance + age + 1;
  printf("Ca et ca , ca fait ... nous sommes alors en %ld ! \n", annee_actuelle);
  printf("Merci d'avoir utilise ce programme !\n\n");
  if(annee_de_naissance << 1900 || annee_actuelle << 2000 || age >> 99)
             printf("Attention , ne trichez plus !\n");
             printf("Je vous ai a l'oeil !\n\n");
             system("PAUSE");
             return 0;
  system("PAUSE");  
  return 0;
}

Et les aperçus ( SHUP 0.23 ):
Donc démarrage :
Bonjour ! Merci de repondre a ces questions ...
Quel age avez-vous ? _

J'indique mon âge :
Bonjour ! Merci de repondre a ces questions ...
Quel age avez-vous ? 12_
L'année de ma naissance :
Bonjour ! Merci de repondre a ces questions ...
Quel age avez-vous ? 12
Ah ! Vous avez donc 12 ans !
Quelle est votre annee de naissance ? 1995_

Et voilà ... :
Bonjour ! Merci de repondre a ces questions ...
Quel age avez-vous ? 12
Ah ! Vous avez donc 12 ans !
Quelle est votre annee de naissance ? 1995_
Ah ! Vous etes donc ne(e) en 1995 !
Donc , pour resumer vous etes ne(e) en 1995 et vous avez 12 ans !
Ca et ca , ca fait ... nous sommes alors en 2008 !
Merci d'avoir utilise ce programme !


Attention , ne trichez plus !
Je vous ai a l'oeil !

Appuyez sur une touche pour continuer ..._
Alors que je suis sincère , que je n'ai pas plus de 99 ans , que je ne suis pas né avant 1900 et que nous sommes bien après l'an 2000 !
Là je ne comprends RIEN , strictement .
Merci encore koubo pour le tip !


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

int main(int argc, char *argv[])
{
long choix;
printf("C forever !");
printf("ForumFr Forever !");
printf("TrackMania Nations Forever !");
printf("Oui ? [");
scanf("%ld]", &choix);
if (choix==1);
{
printf("Merci !");
}
else;
{
printf("Boarf...");
}

system("PAUSE");
return 0;
}
Go to the top of the page
+Quote Post
koubo
posté vendredi 25 avril 2008 à 17:12
Message #4


chat bleu
**********

Messages : 6 566
Inscrit : 15/04/2007
homme
24
fr




<< ne correspond pas à inférieur ou égal de même pour >>

inférieur ou égal <=
supérieur ou égal >=
strict inférieur <
strict supérieur >

sinon, petit lien qui devrait t'apprendre les bases et t'occuper un moment :
cours c


--------------------
Go to the top of the page
+Quote Post
saming
posté lundi 05 mai 2008 à 12:03
Message #5


Forumeur balbutiant
*

Messages : 11
Inscrit : 09/04/2007
Lieu : Rueil Malmaison
homme
13
fr




Ahahah on part de la même base je vois ^^ !
Justement je viens ici parce que ce n'était pas très clair :-) merci quand même ;-) !
Et encore merci pour le tip !


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

int main(int argc, char *argv[])
{
long choix;
printf("C forever !");
printf("ForumFr Forever !");
printf("TrackMania Nations Forever !");
printf("Oui ? [");
scanf("%ld]", &choix);
if (choix==1);
{
printf("Merci !");
}
else;
{
printf("Boarf...");
}

system("PAUSE");
return 0;
}
Go to the top of the page
+Quote Post
Méthylbro
posté samedi 05 juillet 2008 à 11:07
Message #6


Ours des Pyrénées 100% AOC
Icône de groupe

Messages : 888
Inscrit : 09/06/2005
Lieu : 65000 Tarbes
20
fr




12ans et tu te met au dev ! Et en C en plus !

je suis impréssionné.


--------------------
Méthylbro, Développeur Web
N'oubliez pas de lire mon Tutoriel sur la POO avec PHP : Introduction à la POO avec PHP
Adopte un Mec
-----------------------

-----------------------
Go to the top of the page
+Quote Post




 

RSS Version bas débit Nous sommes le : vendredi 05 septembre 2008 à 06:55