[C] [Débutant] Je suis bloqué sur une erreur de syntaxe ....

Je suis bloqué sur une erreur de syntaxe .... [C] [Débutant] - C - Programmation

Marsh Posté le 22-09-2004 à 20:28:00    

... et je n arrive pas a la corriger !
 

Code :
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.  /*DEBUT DES DECLARATIONS*/
  5.   /*DONNEES D'ENTREE*/
  6.    /*variables d'entrée initialisées*/
  7.    /*variables d'entrée non initialisées*/
  8.    int age;
  9.    int nbAnneesPermis;
  10.    int nbAccidents;
  11.    int nbMoisCompagnie;
  12.   /*VARIABLES RESULTATS*/
  13.   char tarif;
  14.   /*VARIABLES AUXILLIAIRES*/
  15.  /*DEBUT DES INSTRUCTIONS*/
  16. printf("\n debut du programme" );
  17.  /*INITIALISATION DES VARIABLES D'ENTREE*/
  18.  printf("\n age : " );
  19.  scanf("%d",&age);
  20.  printf("\n nombre d'année(s) avec le permis : " );
  21.  scanf("%d",&nbAnneesPermis);
  22.  printf("\n nombre d'accident(s) : " );
  23.  scanf("%d",&nbAccidents);
  24.  printf("\n nombre de mois dans la compagnie : " );
  25.  scanf("%d",&nbMoisCompagnie);
  26.  /*TRAITEMENT*/
  27.   /*initialisation des variables auxilliaires*/
  28.   /*corps du traitement*/
  29.   if (age<25 && permis<2){
  30.    if(nbAccidents==0){
  31.     tarif="rouge";
  32.    }
  33.    else{
  34.     tarif="refusé";
  35.    }
  36.   }
  37.   if ((age<25 && permis>=2)||(age>=25 && permis<2)){
  38.    if(nbAccidents==0){
  39.     tarif="orange";
  40.    }
  41.    if(nbAccidents==1){
  42.     tarif="rouge";
  43.    }
  44.    if(nbAccidents>=2){
  45.     tarif="refusé";
  46.    }
  47.   }
  48.   if (age>=25 && permis>=2){
  49.    if(nbAccidents==0){
  50.     tarif="vert";
  51.    }
  52.    if(nbAccidents==1){
  53.     tarif="orange";
  54.    }
  55.    if(nbAccidents==2){
  56.     tarif="rouge";
  57.    }
  58.    if(nbAccidents>=3){
  59.     tarif="refusé";
  60.    }
  61.   }
  62.   if(tarif!="refusé" && nbMoisCompagnie>12){
  63.    tarif="bleu";
  64.   }
  65.   /*affectation des variables resultats*/
  66.  /*AFFICHAGE DES RESULTATS*/
  67.  printf("\n Votre tarif est : %c",tarif);
  68. printf("\n fin du programme" );
  69. return(0);
  70. }


 
l'eerreur vient en fait de ma variable de type "char" tarif (ligne 19).
Je n arrive pas a affecter une chaine de charactère a cette variable !
 
 
merci d avance pour votre aide !
 
 :hello:


Message édité par ze nerdz le 22-09-2004 à 20:29:24
Reply

Marsh Posté le 22-09-2004 à 20:28:00   

Reply

Marsh Posté le 22-09-2004 à 20:31:10    

char *tarif;

Reply

Marsh Posté le 22-09-2004 à 20:32:30    

On sent que c'est la rentrée :)


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 22-09-2004 à 20:32:55    

WhatDe a écrit :

char *tarif;


Merci pour ta réponse : mais je reste sur ma faim ... :D que signifie l'etoile devant le nom de variable ?

Reply

Marsh Posté le 22-09-2004 à 20:34:06    

ze nerdz a écrit :

Merci pour ta réponse : mais je reste sur ma faim ... :D que signifie l'etoile devant le nom de variable ?


Que tarif est un pointeur de char. Informes-toi sur les pointeurs.

Reply

Marsh Posté le 22-09-2004 à 20:35:24    

tu déclares tarif en tant que caractère. Cette variable ne peut donc contenir qu'un caractère. Pour avoir une chaine de caractère, il faut plutot que tu déclares un tableau

Code :
  1. char tarif[10];


Ensuite, pour affecter une chaine de caractère à cette nouvelle variable, tu dois passser par une fonction ("strcpy()" ) qui est déclarée dans la librairie "string.h". On arrive alors au code suivant:

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(void){
  4.   char tarif[10];
  5.    ...
  6.    strcpy(tarif,"refusé" );
  7.    ...
  8. }


 
Maintenant, pour afficher, tu dois utiliser le format "%s" de printf, ce qui te donne:

Code :
  1. printf("\n Votre tarif est : %s",tarif);


 
Enfin, un conseil, emprunte un bouquin de C (genre Kernighan et Ritchie) et potasse!


Message édité par torpe23 le 22-09-2004 à 20:35:59
Reply

Marsh Posté le 22-09-2004 à 20:36:26    

Attention, ligne 85, il faut mettre "%s" au lieu de "%c".
 
Pour le reste, je vais pas te faire un cours de pointeurs, parce que moi-même, je ne sais pas trop à quoi ça sert... :whistle:

Reply

Marsh Posté le 22-09-2004 à 20:44:44    

Merci pour vos réponse ca fait plaisir de savoir qu on ne vous laisse pas tomber !
 
par contre je ne sais pas koi mettre en rapport avec mon niveau ...l etoile ou le nombre de charactères ...

Reply

Marsh Posté le 22-09-2004 à 20:46:45    

par contre un autre truc qui est un peu HS avec le sujet : je suis a l IUT et on travaille sous debian, et on compile en ligne de commande bash.
Je souhaitais bosser chez moi, mais je n ai pas de linux, il y a moyen de compiler ce programme sous Windows pour qu il apparaisse de la meme facon que sous Linux ? ( en fentre de commande par ex)

Reply

Marsh Posté le 22-09-2004 à 20:49:26    

Telnet power.

Reply

Marsh Posté le 22-09-2004 à 20:49:26   

Reply

Marsh Posté le 22-09-2004 à 20:51:49    

J ai actuellement Dev C/C++, qui edit et compile, mais, une fois mon programme compilé, il me créé un .exe qui ne fait absolument rien, .... que puis je faire ?

Reply

Marsh Posté le 22-09-2004 à 20:51:57    

ou mieux, WinAxe pour utiliser les applis X-Window de ton IUT sur ta bécane Windows.

Reply

Marsh Posté le 22-09-2004 à 20:53:53    

ze nerdz a écrit :

J ai actuellement Dev C/C++, qui edit et compile, mais, une fois mon programme compilé, il me créé un .exe qui ne fait absolument rien, .... que puis je faire ?


Ton programme bug, donc en tout bon nerdz qui se doit, il faut que tu le debug... :D

Reply

Marsh Posté le 22-09-2004 à 20:55:42    

oui mais , comme tu peux le constater, le programme ci dessus n est pas évolué en matiere d interface graphique, donc le pb vient peut etre de la ? je dois en etre a 3 cours de C, donc mes programmes s executait et s affichait sous commandes BASH sous LINUX ...

Reply

Marsh Posté le 22-09-2004 à 20:59:22    

As-tu déjà fait tourner un programme de type "hello world" avec ton Dev C/C++ ?

Reply

Marsh Posté le 22-09-2004 à 21:01:28    

euh cad jjuste un "printf("hello" );" ?

Reply

Marsh Posté le 22-09-2004 à 21:04:55    

mmm deja ca c bizarre ... !
 
 

Code :
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.     printf("hello world" );
  5. return(0);
  6. }


 
ca me cree un .exe qui s ouvre et qui se ferme immédiatement ...
 
ca ne me faisait pas ca sous linux ... y a t il qqc a comprendre ?

Reply

Marsh Posté le 22-09-2004 à 21:09:29    

.... bordel on l'a expliqué 10000 fois ....
configure ton Command Line proprement.

Reply

Marsh Posté le 22-09-2004 à 21:10:55    

ze nerdz a écrit :

mmm deja ca c bizarre ... !
 
 

Code :
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.     printf("hello world" );
  5. return(0);   
  6. }


 
ca me cree un .exe qui s ouvre et qui se ferme immédiatement ...
 
ca ne me faisait pas ca sous linux ... y a t il qqc a comprendre ?


Tu mets un getchar() à la fin [:jkley]

Reply

Marsh Posté le 22-09-2004 à 21:11:33    

NON pas de getchar, il configure sa console DOS et point barre !

Reply

Marsh Posté le 22-09-2004 à 21:11:57    

Joel F a écrit :

.... bordel on l'a expliqué 10000 fois ....
configure ton Command Line proprement.


 
merci pour ton intervention mais  je pense que tu n a pas vu que gt débutant

Reply

Marsh Posté le 22-09-2004 à 21:12:34    

et alors ? ca empeche quoi ?
 
y a une fonction recherche sur le forum, ce probleme est abordée 15 fois par semaine ...

Reply

Marsh Posté le 22-09-2004 à 21:22:27    

calmos :o

Reply

Marsh Posté le 22-09-2004 à 21:38:28    

Ouais Carlos !
 
http://www.musicarlos.com/images/jap/11.jpg
 
Je suis dehors...


Message édité par tet2neu le 22-09-2004 à 21:39:17
Reply

Marsh Posté le 23-09-2004 à 18:20:56    

met un
getch();  
 
a la fin, ca oblige l'utilisateur a appuyer sur une touche pour arrêter le programme
 
PS : soyez calme quoi , il peut quand meme commencer par mettre un getch(); pour commencer , voir si son prog tourne etc , mais c'est sur qu'il faudra le configuré .


Message édité par Slay le 23-09-2004 à 18:22:38
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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