Aide je ne trouve pas mon erreur!!
Résolu
Coucou1504
Messages postés
60
Date d'inscription
Statut
Membre
Dernière intervention
-
Coucou1504 Messages postés 60 Date d'inscription Statut Membre Dernière intervention -
Coucou1504 Messages postés 60 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis bloqué!!! Je ne trouve pas mon erreur!!!! Est ce quelqu'un pourrait m'aider!!!
le but de cet exo c l'addition de 2 fractions!!!
voici mon code!!!
#include<stdio.h>
#include <conio.h>
//###########################SAISIR#################################################
void saisir(int a,int b,int c,int d)
{
printf("Veuillez saisir un nombre a");//je demande à l'utilisateur de saisir
printf("\n");
scanf("%f",&a);
printf("Veuillez saisir un nombre b");
printf("\n"); //4 nombres
scanf ("%f",&b);
printf("Veuillez saisir un nombre c");
printf("\n");
scanf("%f",&c);
printf("Veuillez saisir un nombre d");
printf("\n");
scanf ("%f",&d);
getchar();
}
//#############################ADDITION############################################
float addition (int a, int b, int c, int d)
{
float add=0;
//tant que les denominateurs sont different de 0!!
if (d==b) //si on a le même denominateur!!
{
add= add+(a + c) / b;
}
else //si on n'a pas le même denominateur
{
add =add+(((a*d)+(c*b))/(b*d));
}
return add;
}
int main()
{
int a,b,c,d;
float add;//mes variable;
saisir(a,b,c,d);
//add = addition (a,b,c,d);
printf ("Le resultat est : %f",add);
getchar();
getchar();
}
Merci d'avance!!!
Je suis bloqué!!! Je ne trouve pas mon erreur!!!! Est ce quelqu'un pourrait m'aider!!!
le but de cet exo c l'addition de 2 fractions!!!
voici mon code!!!
#include<stdio.h>
#include <conio.h>
//###########################SAISIR#################################################
void saisir(int a,int b,int c,int d)
{
printf("Veuillez saisir un nombre a");//je demande à l'utilisateur de saisir
printf("\n");
scanf("%f",&a);
printf("Veuillez saisir un nombre b");
printf("\n"); //4 nombres
scanf ("%f",&b);
printf("Veuillez saisir un nombre c");
printf("\n");
scanf("%f",&c);
printf("Veuillez saisir un nombre d");
printf("\n");
scanf ("%f",&d);
getchar();
}
//#############################ADDITION############################################
float addition (int a, int b, int c, int d)
{
float add=0;
//tant que les denominateurs sont different de 0!!
if (d==b) //si on a le même denominateur!!
{
add= add+(a + c) / b;
}
else //si on n'a pas le même denominateur
{
add =add+(((a*d)+(c*b))/(b*d));
}
return add;
}
int main()
{
int a,b,c,d;
float add;//mes variable;
saisir(a,b,c,d);
//add = addition (a,b,c,d);
printf ("Le resultat est : %f",add);
getchar();
getchar();
}
Merci d'avance!!!
A voir également:
- Aide je ne trouve pas mon erreur!!
- Pourquoi ma tv ne trouve pas toutes les chaînes - Guide
- Où se trouve mon adresse url ? - Guide
- Ou se trouve le presse papier - Guide
- Ou trouver mon adresse ip - Guide
- Ou se trouve la corbeille de whatsapp - Guide
7 réponses
Bonsoir,
qu'est-ce qui ne fonctionne pas ?
enlever le commentaire sur la ligne qui appelle la fonction add et peut être que ...
qu'est-ce qui ne fonctionne pas ?
enlever le commentaire sur la ligne qui appelle la fonction add et peut être que ...
merci de ton aide. En effet j'ai oublié de dire ce qui n'allait pas!!
Si j'enleve ce qe j'ai mis en commentaire, mon pg se bloque au niveau de l'addition. Pour saisir sa fonctionne!!!
Encore merci, mais j'y avais pensé mais il me bloque tout!!!
Si j'enleve ce qe j'ai mis en commentaire, mon pg se bloque au niveau de l'addition. Pour saisir sa fonctionne!!!
Encore merci, mais j'y avais pensé mais il me bloque tout!!!
L'algoritme semble bon, c'est ce qui m'inquiète. alors add ne serait-il pas un mot réservé ?
essaies truc à la palce.
essaies truc à la palce.
J'ai donc remplacer les add par truc!! Ca n'a rien changer!! Mais je me pose une question, les variable dans ma fonction, doivent-elles être les même que dans mon programme principal??
Merci de votre aide!!
Merci de votre aide!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Il y a deux petites erreurs, la première est que tu mélange les float et les int et que ça ne fait pas très bon ménage.
1) Dans les scanf (%f pour les float, %d pour les int) Bon en pratique ça marche mais Brrrrr
2) dans l'addition :
5.0f / 3.0f = 1.6666666...f
5 / 3 = 0
La deuxième est la fonction saisir. En C les paramètres sont passés "par valeur", on dit aussi "par copie", petit exemple:
Ce code donnera la sortie suivante:
Avant ma fonction a = 2
Au début de ma fonction a = 2
A la fin de ma fonction a = 4
Après ma fonction a = 2
Pour palier à ce problème il y a les pointeurs afin de faire un passage d'argument par adresse. (Le pointeur lui même est une copie mais les données pointées sont toujours les mêmes.
Exemple:
Voilou,
M.
Il y a deux petites erreurs, la première est que tu mélange les float et les int et que ça ne fait pas très bon ménage.
1) Dans les scanf (%f pour les float, %d pour les int) Bon en pratique ça marche mais Brrrrr
2) dans l'addition :
5.0f / 3.0f = 1.6666666...f
5 / 3 = 0
La deuxième est la fonction saisir. En C les paramètres sont passés "par valeur", on dit aussi "par copie", petit exemple:
void maFcontion( int a ) { printf( "Au début de ma fonction a = %d\n", a ); a = 4; printf( "A la fin de ma fonction a = %d\n", a ); } int a = 2; printf( "Avant ma fonction a = %d\n", a ); maFonction( a ); printf( "Après ma fonction a = %d\n", a );
Ce code donnera la sortie suivante:
Avant ma fonction a = 2
Au début de ma fonction a = 2
A la fin de ma fonction a = 4
Après ma fonction a = 2
Pour palier à ce problème il y a les pointeurs afin de faire un passage d'argument par adresse. (Le pointeur lui même est une copie mais les données pointées sont toujours les mêmes.
Exemple:
void saisir( float *pa, float *pb ) { *pa = 2; scanf( "%f", pb ); // pas de '&', pb est déjà une adresse. } float a, b; saisir( &a, &b );
Voilou,
M.
Non, le nom des paramètres peuvent être totalement différents des noms du variables du programme.
Les codes suivants est valides :
1)
2) Ton cas.
3)
4)
5)
Voilà les cas les plus courants.
M.
Les codes suivants est valides :
1)
int a = 2; void maFonction( int b ) { printf( "%d", b ); } maFonction( a ); // Affiche 2
2) Ton cas.
int a = 2; void maFonction( int a ) { a = 4; } maFonction( a ); // la fonction n'a aucun effet, elle modifie sa copie du paramètre.
3)
int a = 2; void maFonction( int b ) { b = a; // a est visible depuis l'intérieur de la fonction printf( "%d", b ); } maFonction( 4 ); // Affichera 2
4)
int a = 2; void maFonction( int a, int b ) { b = a; // Le a de l'environement global est masqué par le paramètre du même nom. printf( "%d", b ); } maFonction( a, 4 ); // Affichera 4
5)
int a = 2; void maFonction( int b) { a = 4; printf( "%d", b ); } maFonction( 3 ); // Met 4 dans a, Affiche 3
Voilà les cas les plus courants.
M.