Aller au contenu

"C Projets" qui vont vite


Messages recommandés

Membre 25ans Posté(e)
saming Membre 10 messages
Forumeur balbutiant‚ 25ans
Posté(e)

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 ...

					   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

 #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

 #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 !

Lien à poster
Partager sur d’autres sites
Annonces
Maintenant
Membre 36ans Posté(e)
koubo Membre 8 727 messages
chat bleu‚ 36ans
Posté(e)

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à. :snif:

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 :snif:

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

Lien à poster
Partager sur d’autres sites
Membre 25ans Posté(e)
saming Membre 10 messages
Forumeur balbutiant‚ 25ans
Posté(e)

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 !

#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 :

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 ;-) ! )

#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 !

Lien à poster
Partager sur d’autres sites
Membre 36ans Posté(e)
koubo Membre 8 727 messages
chat bleu‚ 36ans
Posté(e)

<< 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

Lien à poster
Partager sur d’autres sites
  • 2 semaines après...
Membre 25ans Posté(e)
saming Membre 10 messages
Forumeur balbutiant‚ 25ans
Posté(e)

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 !

Lien à poster
Partager sur d’autres sites
  • 1 mois après...
VIP Posté(e)
Méthylbro VIP 1 038 messages
Ours des Pyrénées 100% AOC‚
Posté(e)

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

je suis impréssionné.

Lien à poster
Partager sur d’autres sites
Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×