LANGAGE C
Résolu
rafale69300
Messages postés
84
Date d'inscription
Statut
Membre
Dernière intervention
-
rafale69300 Messages postés 84 Date d'inscription Statut Membre Dernière intervention -
rafale69300 Messages postés 84 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un algo à traduire en C qui gère les procédures et les fonctions seulement j'ai un petiti souci je crois que je me suis trompé dans les signature de mes fonctions et c'est pour cela que qand je le compile il me sorte pleins de faute donc si vous pouviez m'aider ça serat super sympa merci d'avance je mets ce que j'ai déjà fait.
#include<stdio.h>
#include<stdlib.h>
void afficher_menu();
float addition(float n1, n2);
float soustraction(float n1, n2);
float multiplication(float n1 ,n2);
float division(float n1 ,n2);
int main (void)
{
char choix;
float nb1,nb2,res;
do
{
afficher_menu();
printf("\nSaissiez votre choix");
scanf("%c",&choix);
if (choix != 'f')
{
printf("\nSaisir deux nombres");
scanf("%f",&nb1);
scanf("%f",&nb2);
switch(choix) {
case 'a':
res = addition(nb1,nb2);
break;
case 's':
res = soustraction(nb1,nb2);
break;
case 'm':
res = multiplication(nb1,nb2);
break;
case 'd':
res = division(nb1,nb2);
break;
default:
res = 0;
}
printf("\nRésultat de l'opération = %f",res);
}
while(choix == 'f')
}
return EXIT_SUCCESS;
}
void afficher_menu()
{
printf("\nAddition : a");
printf("\nSoustraction : s");
printf("\nMultiplication : m");
printf("\nDivision : d");
printf("\nFin : f");
}
float addition(float n1,n2)
{
float resultat;
resultat = n1 + n2;
return resultat;
}
float soustraction(float n1,n2)
{
float resultat;
resultat = n1 - n2;
return resultat;
}
float multiplication(float n1,n2)
{
float resultat;
resultat = n1 * n2;
return resultat;
}
float division(float n1,n2)
{
float resultat;
while(n2 == 0)
{
printf("\nDivision par 0 impossible");
scanf("%f",&n2);
}
resultat = n1 / n2;
return resultat;
}
J'ai un algo à traduire en C qui gère les procédures et les fonctions seulement j'ai un petiti souci je crois que je me suis trompé dans les signature de mes fonctions et c'est pour cela que qand je le compile il me sorte pleins de faute donc si vous pouviez m'aider ça serat super sympa merci d'avance je mets ce que j'ai déjà fait.
#include<stdio.h>
#include<stdlib.h>
void afficher_menu();
float addition(float n1, n2);
float soustraction(float n1, n2);
float multiplication(float n1 ,n2);
float division(float n1 ,n2);
int main (void)
{
char choix;
float nb1,nb2,res;
do
{
afficher_menu();
printf("\nSaissiez votre choix");
scanf("%c",&choix);
if (choix != 'f')
{
printf("\nSaisir deux nombres");
scanf("%f",&nb1);
scanf("%f",&nb2);
switch(choix) {
case 'a':
res = addition(nb1,nb2);
break;
case 's':
res = soustraction(nb1,nb2);
break;
case 'm':
res = multiplication(nb1,nb2);
break;
case 'd':
res = division(nb1,nb2);
break;
default:
res = 0;
}
printf("\nRésultat de l'opération = %f",res);
}
while(choix == 'f')
}
return EXIT_SUCCESS;
}
void afficher_menu()
{
printf("\nAddition : a");
printf("\nSoustraction : s");
printf("\nMultiplication : m");
printf("\nDivision : d");
printf("\nFin : f");
}
float addition(float n1,n2)
{
float resultat;
resultat = n1 + n2;
return resultat;
}
float soustraction(float n1,n2)
{
float resultat;
resultat = n1 - n2;
return resultat;
}
float multiplication(float n1,n2)
{
float resultat;
resultat = n1 * n2;
return resultat;
}
float division(float n1,n2)
{
float resultat;
while(n2 == 0)
{
printf("\nDivision par 0 impossible");
scanf("%f",&n2);
}
resultat = n1 / n2;
return resultat;
}
A voir également:
- LANGAGE C
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
14 réponses
Voici la liste des erreurs quand je compile :
calculette.c:4: erreur: expected declaration specifiers or «...» before «n2»
calculette.c:5: erreur: expected declaration specifiers or «...» before «n2»
calculette.c:6: erreur: expected declaration specifiers or «...» before «n2»
calculette.c:7: erreur: expected declaration specifiers or «...» before «n2»
calculette.c: Dans la fonction «main» :
calculette.c:24: erreur: trop d'arguments pour la fonction «addition»
calculette.c:27: erreur: trop d'arguments pour la fonction «soustraction»
calculette.c:30: erreur: trop d'arguments pour la fonction «multiplication»
calculette.c:33: erreur: trop d'arguments pour la fonction «division»
calculette.c:41: erreur: expected expression before «}» token
calculette.c:42: erreur: expected «while» before «return»
calculette.c: Hors de toute fonction :
calculette.c:54: erreur: expected declaration specifiers or «...» before «n2»
calculette.c: Dans la fonction «addition» :
calculette.c:57: erreur: «n2» undeclared (first use in this function)
calculette.c:57: erreur: (Each undeclared identifier is reported only once
calculette.c:57: erreur: for each function it appears in.)
calculette.c: Hors de toute fonction :
calculette.c:61: erreur: expected declaration specifiers or «...» before «n2»
calculette.c: Dans la fonction «soustraction» :
calculette.c:64: erreur: «resultat» undeclared (first use in this function)
calculette.c:64: erreur: «n2» undeclared (first use in this function)
calculette.c: Hors de toute fonction :
calculette.c:68: erreur: expected declaration specifiers or «...» before «n2»
calculette.c: Dans la fonction «multiplication» :
calculette.c:71: erreur: «resultat» undeclared (first use in this function)
calculette.c:71: erreur: «n2» undeclared (first use in this function)
calculette.c:72: erreur: «resultat» undeclared (first use in this function)
calculette.c: Hors de toute fonction :
calculette.c:75: erreur: expected declaration specifiers or «...» before «n2»
calculette.c: Dans la fonction «division» :
calculette.c:78: erreur: «n2» undeclared (first use in this function
calculette.c:4: erreur: expected declaration specifiers or «...» before «n2»
calculette.c:5: erreur: expected declaration specifiers or «...» before «n2»
calculette.c:6: erreur: expected declaration specifiers or «...» before «n2»
calculette.c:7: erreur: expected declaration specifiers or «...» before «n2»
calculette.c: Dans la fonction «main» :
calculette.c:24: erreur: trop d'arguments pour la fonction «addition»
calculette.c:27: erreur: trop d'arguments pour la fonction «soustraction»
calculette.c:30: erreur: trop d'arguments pour la fonction «multiplication»
calculette.c:33: erreur: trop d'arguments pour la fonction «division»
calculette.c:41: erreur: expected expression before «}» token
calculette.c:42: erreur: expected «while» before «return»
calculette.c: Hors de toute fonction :
calculette.c:54: erreur: expected declaration specifiers or «...» before «n2»
calculette.c: Dans la fonction «addition» :
calculette.c:57: erreur: «n2» undeclared (first use in this function)
calculette.c:57: erreur: (Each undeclared identifier is reported only once
calculette.c:57: erreur: for each function it appears in.)
calculette.c: Hors de toute fonction :
calculette.c:61: erreur: expected declaration specifiers or «...» before «n2»
calculette.c: Dans la fonction «soustraction» :
calculette.c:64: erreur: «resultat» undeclared (first use in this function)
calculette.c:64: erreur: «n2» undeclared (first use in this function)
calculette.c: Hors de toute fonction :
calculette.c:68: erreur: expected declaration specifiers or «...» before «n2»
calculette.c: Dans la fonction «multiplication» :
calculette.c:71: erreur: «resultat» undeclared (first use in this function)
calculette.c:71: erreur: «n2» undeclared (first use in this function)
calculette.c:72: erreur: «resultat» undeclared (first use in this function)
calculette.c: Hors de toute fonction :
calculette.c:75: erreur: expected declaration specifiers or «...» before «n2»
calculette.c: Dans la fonction «division» :
calculette.c:78: erreur: «n2» undeclared (first use in this function
Bon, voila ->
#include<stdio.h>
#include<stdlib.h>
void afficher_menu();
float addition(float, float); //declare le type pour chaque variable des parametre formelle
float soustraction(float, float);
float multiplication(float, float);
float division(float, float);
int main (void)
{
char choix;
float nb1,nb2,res;
do
{
afficher_menu();
printf("\nSaissiez votre choix");
scanf("%c",&choix);
if (choix != 'f')
{
printf("\nSaisir deux nombres");
scanf("%f",&nb1);
scanf("%f",&nb2);
switch(choix) {
case 'a':
res = addition(nb1,nb2);
break;
case 's':
res = soustraction(nb1,nb2);
break;
case 'm':
res = multiplication(nb1,nb2);
break;
case 'd':
res = division(nb1,nb2);
break;
default:
res = 0;
}
printf("\nRésultat de l'opération = %f",res);
}
while(choix == 'f')
}
return EXIT_SUCCESS;
}
void afficher_menu()
{
printf("\nAddition : a");
printf("\nSoustraction : s");
printf("\nMultiplication : m");
printf("\nDivision : d");
printf("\nFin : f");
}
float addition(float n1, float n2)
{
float resultat;
resultat = n1 + n2;
return resultat;
}
float soustraction(float n1, float n2)
{
float resultat;
resultat = n1 - n2;
return resultat;
}
float multiplication(float n1, float n2)
{
float resultat;
resultat = n1 * n2;
return resultat;
}
float division(float n1, float n2)
{
float resultat;
while(n2 == 0)
{
printf("\nDivision par 0 impossible");
scanf("%f",&n2);
}
resultat = n1 / n2;
return resultat;
}
#include<stdio.h>
#include<stdlib.h>
void afficher_menu();
float addition(float, float); //declare le type pour chaque variable des parametre formelle
float soustraction(float, float);
float multiplication(float, float);
float division(float, float);
int main (void)
{
char choix;
float nb1,nb2,res;
do
{
afficher_menu();
printf("\nSaissiez votre choix");
scanf("%c",&choix);
if (choix != 'f')
{
printf("\nSaisir deux nombres");
scanf("%f",&nb1);
scanf("%f",&nb2);
switch(choix) {
case 'a':
res = addition(nb1,nb2);
break;
case 's':
res = soustraction(nb1,nb2);
break;
case 'm':
res = multiplication(nb1,nb2);
break;
case 'd':
res = division(nb1,nb2);
break;
default:
res = 0;
}
printf("\nRésultat de l'opération = %f",res);
}
while(choix == 'f')
}
return EXIT_SUCCESS;
}
void afficher_menu()
{
printf("\nAddition : a");
printf("\nSoustraction : s");
printf("\nMultiplication : m");
printf("\nDivision : d");
printf("\nFin : f");
}
float addition(float n1, float n2)
{
float resultat;
resultat = n1 + n2;
return resultat;
}
float soustraction(float n1, float n2)
{
float resultat;
resultat = n1 - n2;
return resultat;
}
float multiplication(float n1, float n2)
{
float resultat;
resultat = n1 * n2;
return resultat;
}
float division(float n1, float n2)
{
float resultat;
while(n2 == 0)
{
printf("\nDivision par 0 impossible");
scanf("%f",&n2);
}
resultat = n1 / n2;
return resultat;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci bien mets dans ton code il y a un truc que je ne comprend pas pourquoi au tout début du programme quand tu déclare les fonction tu fait par exemple :
float addition(float,float) et pas float addition(float nomvariable1,float nomvariable2) ?
float addition(float,float) et pas float addition(float nomvariable1,float nomvariable2) ?
Bon, la fonction addition prend comme paramètres formelles deux réel (float), c'est pourquoi on a écrit (float,float), en générale : si on utilise n paramètres, on déclare n type séparés par des virgules.
Et comme ce sont juste des déclarations des fonctions, il suffit juste de écrire les types des paramètres pas nécessairement les nom des paramètres.
Et comme ce sont juste des déclarations des fonctions, il suffit juste de écrire les types des paramètres pas nécessairement les nom des paramètres.
lors de la déclaration de ta fonction, tu dois juste indiquer le type mais tu peux également indiquer le nom de ta variable mais c'est accessoire.
float division(float,float); est idem à float division(float x, float y);
par contre lors de l'appel de ta fonction tu dois les indiquer
float division(float,float); est idem à float division(float x, float y);
par contre lors de l'appel de ta fonction tu dois les indiquer
Merci, pour la réponse mais je me demandais comme ma prof me les a toujours fait mettre et je vais t'embéter une dernière fois il me reste deux fautes :
calculette.c: Dans la fonction «main» :
calculette.c:41: erreur: expected expression before «}» token
calculette.c:42: erreur: expected «while» before «return»
Cela veut dire pour la ligne 41 qu'il faut mettre } avant l'expression et pour la ligne 42 qu'il faut mettre le return avant le while ?
calculette.c: Dans la fonction «main» :
calculette.c:41: erreur: expected expression before «}» token
calculette.c:42: erreur: expected «while» before «return»
Cela veut dire pour la ligne 41 qu'il faut mettre } avant l'expression et pour la ligne 42 qu'il faut mettre le return avant le while ?
Salut.
Plusieurs petites erreurs.
Dans un prototype de fonction, le type n'est pas distributif. Donc tu peux pas faire :
float addition(float n1,n2) mais float addition(float n1, float n2)
Tu as aussi oublié un ; à la fin de ton while et fait une erreur de fermeture de while (erreur d'inattention je pense).
Dans ta fonction division. Tu as oublié de faire return
Note, tu as le droit de faire : return n1+n2. T'es pas obligé de déclarer float res pour ça.
Sinon, quand tu postes, n'oublie pas d'utiliser la balise code (à droite du bouton souligner). Cela permet de garder l'indentation, et c'est beaucoup plus lisible.
Si t'as d'autres questions, n'hésite pas.
Cdlt
Plusieurs petites erreurs.
Dans un prototype de fonction, le type n'est pas distributif. Donc tu peux pas faire :
float addition(float n1,n2) mais float addition(float n1, float n2)
Tu as aussi oublié un ; à la fin de ton while et fait une erreur de fermeture de while (erreur d'inattention je pense).
Dans ta fonction division. Tu as oublié de faire return
Note, tu as le droit de faire : return n1+n2. T'es pas obligé de déclarer float res pour ça.
Sinon, quand tu postes, n'oublie pas d'utiliser la balise code (à droite du bouton souligner). Cela permet de garder l'indentation, et c'est beaucoup plus lisible.
Si t'as d'autres questions, n'hésite pas.
#include<stdio.h> #include<stdlib.h> void afficher_menu(); float addition(float n1, float n2); float soustraction(float n1, float n2); float multiplication(float n1 ,float n2); float division(float n1 ,float n2); int main (void) { char choix; float nb1,nb2,res; do { afficher_menu(); printf("\nSaissiez votre choix"); scanf("%c",&choix); if (choix != 'f') { printf("\nSaisir deux nombres"); scanf("%f",&nb1); scanf("%f",&nb2); switch(choix) { case 'a': res = addition(nb1,nb2); break; case 's': res = soustraction(nb1,nb2); break; case 'm': res = multiplication(nb1,nb2); break; case 'd': res = division(nb1,nb2); break; default: res = 0; } printf("\nRésultat de l'opération = %f",res); } }while(choix != 'f'); return EXIT_SUCCESS; } void afficher_menu() { printf("\nAddition : a"); printf("\nSoustraction : s"); printf("\nMultiplication : m"); printf("\nDivision : d"); printf("\nFin : f\n"); } float addition(float n1,float n2) { float resultat; resultat = n1 + n2; return resultat; } float soustraction(float n1,float n2) { float resultat; resultat = n1 - n2; return resultat; } float multiplication(float n1,float n2) { float resultat; resultat = n1 * n2; return resultat; } float division(float n1,float n2) { float resultat; while(n2 == 0) { printf("\nDivision par 0 impossible"); scanf("%f",&n2); } resultat = n1 / n2; return resultat; }
Cdlt
int main (void)
{
char choix;
float nb1,nb2,res;
do
{
afficher_menu();
printf("\nSaissiez votre choix");
scanf("%c",&choix);
if (choix != 'f')
{
printf("\nSaisir deux nombres");
scanf("%f",&nb1);
scanf("%f",&nb2);
switch(choix) {
case 'a':
{
res = addition(nb1,nb2);
break;
}
case 's':
{
res = soustraction(nb1,nb2);
break;
}
case 'm':
{
res = multiplication(nb1,nb2);
break;
}
case 'd':
{
res = division(nb1,nb2);
break;
}
default : res = 0;
} // fin de "switch"
printf("\nRésultat de l'opération = %f",res);
} // fin de "if"
} // fin de "do"
while(choix == 'f');
return EXIT_SUCCESS;
}
{
char choix;
float nb1,nb2,res;
do
{
afficher_menu();
printf("\nSaissiez votre choix");
scanf("%c",&choix);
if (choix != 'f')
{
printf("\nSaisir deux nombres");
scanf("%f",&nb1);
scanf("%f",&nb2);
switch(choix) {
case 'a':
{
res = addition(nb1,nb2);
break;
}
case 's':
{
res = soustraction(nb1,nb2);
break;
}
case 'm':
{
res = multiplication(nb1,nb2);
break;
}
case 'd':
{
res = division(nb1,nb2);
break;
}
default : res = 0;
} // fin de "switch"
printf("\nRésultat de l'opération = %f",res);
} // fin de "if"
} // fin de "do"
while(choix == 'f');
return EXIT_SUCCESS;
}
Bonjour, j'ai un autre petit programme à faire à l'aide d'une fonction : c'est un programme qi traite des puissance je vous met ce que j'ai codé je ne l'ai pas encore compilé donc il se peut qu'il y est des petites fautes mais la où je suis sur qu'il y en a une c'est a la ligne 33 quand je met k = (1)/(x^k) je sais que le ^ ne peut pas faire office de puissance mais je ne vois pas ce qui faut mettre à la place ou peut etre qu'il faut changé mon algo je ne sais pas. Merci d'avance pour votre aide !!
#include<stdio.h> #include<stdlib.h> float fct_puissance(float x, int k); int main (void) { float nb,res; int puissance; printf("\nSaisir un nombre"); scanf("%f",&nb); printf("\nSaisir la puissance du nombre); scanf("%d",&puissance); res = fct_puissance(nb,puissance); printf("\n%f à la puissance %d vaut : %f\n",nb,puissance,res); } float fct_puissance(float x, int k) { int cpt; float puiss; if (k == 0) { puiss == 1; } else if (k > 0) { for (cpt = 1; cpt <= k; cpt++){ puiss = puiss * x; } } else if (k < 0) { k = (1)/(x^k); for (cpt = 1; cpt <= k; cpt++){ puiss = puiss * x; } } return puiss; }
Salut,
J'ai pas du tout lu ton code, je te laisse le plaisir de compiler lol.
Sinon pour utiliser la puissance, soit tu te fais la fonction tout seul soit tu utilises la fonction pow de la bibliothèque math.h.
Cdlt
J'ai pas du tout lu ton code, je te laisse le plaisir de compiler lol.
Sinon pour utiliser la puissance, soit tu te fais la fonction tout seul soit tu utilises la fonction pow de la bibliothèque math.h.
Cdlt
Oki bah j'ai le temps de compiler et de corriger mes fautes et de changer 2 3 truc dans mon code mais maintenant quand je saisie mon nombre et ma puissance j'ai toujours 0 en résultat . Donc la je vais vous mettre ce que j'ai codé et enfaite la prof nous a demandé les deux de crer la fonction nous meme et de vérifier les résultat à l'aide pow.
#include<stdio.h> #include<stdlib.h> float fct_puissance(float x, int k); int main (void) { float nb,res; int puissance; printf("\nSaisir un nombre"); scanf("%f",&nb); printf("\nSaisir la puissance du nombre"); scanf("%d",&puissance); res = fct_puissance(nb,puissance); printf("\n%f à la puissance %d vaut : %f",nb,puissance,res); return EXIT_SUCCESS; } float fct_puissance(float x, int k) { int cpt; float i,puiss; if (k == 0) { return puiss == 1; } else if (k > 0) { for (cpt =1; cpt <= k; cpt++){ return puiss = puiss * x; } } else if (k < 0) { for (cpt =1; cpt <= k; cpt++){ i = i * x; return puiss = 1/puiss; } } }
T'as oublié d'initialiser puiss dans ta fonction fct_puissance.
Et des petites erreurs d'algorithme. Je te laisse comparer.
Et des petites erreurs d'algorithme. Je te laisse comparer.
#include<stdio.h> #include<stdlib.h> float fct_puissance(float x, int k); int main (void) { float nb,res; int puissance; printf("\nSaisir un nombre"); scanf("%f",&nb); printf("\nSaisir la puissance du nombre"); scanf("%d",&puissance); res = fct_puissance(nb,puissance); printf("\n%f à la puissance %d vaut : %f",nb,puissance,res); return EXIT_SUCCESS; } float fct_puissance(float x, int k) { int cpt; float puiss=1; if (k == 0) { return 1; } else if (k > 0) { for (cpt =1; cpt <= k; cpt++){ puiss = puiss * x; } } else if (k < 0) { for (cpt =1; cpt <= -k; cpt++){ puiss = puiss * 1/x; } } return puiss; }