Probleme programation C98

kurse Messages postés 45 Statut Membre -  
Nxl Messages postés 1257 Statut Membre -
Bonjours
j'ai un problème sur un exercice de programmation en C 98 sur console :
je doit écrire une programme qui lit une opération entré au clavier et affiche le résultat en console.
1) on me demande de crée une fonction question qui demande a l'utilisateur 2 nombre A et B et un opérateur (/,*,-,+). c'est trois paramètre doivent être retourné par la fonction.

............................................................
void question()
{
int A=0 , B=0 ;
char OP[5];
printf("Entre un operateur...");
scanf("%s", OP);
printf("Entré nombre A...");
scanf("%d/n", &A);
printf("Entré nombre B...");
scanf("%d/n", &B);
int *a= &A ,*b= &B;
char *op=&OP
}
.................................................................
ici j'ai deja un problème . Pour retourné les trois paramètre j'ai utilisé des pointeurs mais je n arrive pas a crée un pointeur pour char *op=&OP lors de la compilation j'ai une erreur .

2)on me demande de créer une fonction calcul qui en fonction du paramètre en très dans question en OP exécute les opération . je pense avoir un code correcte pour cette question .
..................................................
double calcul(int *a , int *b , char *op)
{
switch (*op)
{
case '/':
printf("%d%s%d=%d", *a,*op,*b,*a/*b);
break;
case '*':
printf("%d%s%d=%d",*a,*op,*b,*a**b);
break;
case '+':
printf("%d%s%d=%d", *a,*op,*b,*a+*b);
break;
case '-':
printf("%d%s%d=%d", *a,*op,*b,*a-*b);
break;
default:
printf("operation innconnue : operateur");
break;
}
................................................................
Ici ma fonction recoit les pointeur et modifie directement .

3)je doit écrire la fonction pricipale qui appelle les différentes fonction ... je n'y arrive pas ^^

Voila c'est tout soyer indulgent j'apprends tout seul .
N'hestité pas a me dire si mon code est complètement faux.
Merci

2 réponses

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Bonsoir,

En C98 ?? Ne s'agirait-il pas plutôt de C89 ou C99 ?

1/Je te conseille plutôt d'utiliser char ope.
Et donc : scanf("%c",&op) ou encore mieux : op=getchar();
Ensuite, il faut vider le buffer clavier. Dans un premier temps, tu peux mettre simplement getchar(). De plus, il ne faut pas mettre de \n (et non /n) dans le scanf.
Ta fonction question doit retourner les éléments (je te conseille d'utiliser une structure). Donc le prototype devrait être OP question(void).
Ce qui donne :

typedef struct { 
   int A; 
   int B; 
   char ope; 
} OP; 

OP question(void) 
{  
   OP ope; 

   printf("Entre un operateur...");  
   ope.ope=getchar(); 
   getchar(); 

   printf("Entré nombre A..."); 
   scanf("%d", &ope.A); 

   printf("Entré nombre B...");  
   scanf("%d", &ope.B); 

   return ope; 
}  


Note : évite de mettre les déclarations de variable en milieu de bloc.

2/ Je te laisse refaire en utilisant le prototype : double calcul (OP ope);
Pour info : printf("%d%s%d=%d", *a,*op,*b,*a/*b); Si tu mets %s, tu ne peux pas mettre *op, mais op car *op est un char (et non char*).
Si tu mets double calcul(...), il ne faut pas oublier de mettre un return ...
Et pas besoin de mettre de printf dans ta fonction calcul. C'est plus propre (à moins que l'exo stipule le contraire) de simplement calculer et de faire l'affichage dans une autre fonction (ici dans la fonction principal).

3/
Cela serait du genre :
int main(void) { 
   OP ope; 
   double resultat; 

   ope=question(); 
   resultat=calcul(ope); 

   printf("%d %c %d = %f\n", ope.A, ope.ope, op.B, resultat); 
    
   return 0; 
} 


Et enfin, la prochaine fois que tu postes un code, n'oublie pas d'utiliser les balises "code" (à droite du bouton sougliner).

Cordialement,

Google is your friend
0
Nxl Messages postés 1257 Statut Membre 133
 
Salut,
pour les pointeurs essaye :

char *psigne;
psigne = OP;
0