Pointeur et fonction
Sabetodo
Messages postés
127
Statut
Membre
-
Marco la baraque Messages postés 1030 Statut Contributeur -
Marco la baraque Messages postés 1030 Statut Contributeur -
Bonjour,
salut à tout le monde. J'aimerais qu'on me donne un coup de main sur mon programme sur les fonction. En fait j'ai creé un programme permettant de d'effectuer les trois operation élémentaires: addition,soustraction,multiplication et division. Et Maintenant on me demande de le modifier en utilisant la fonction et les ponteurs. J'y suis parvenu avec la fonction.Mais j'ai un peu du mal à le modifier avec les pointeurs.
Si qqn pourrait m'aider, je lui serai trés reconnaissant...
Voici le programme:
#include<stdio.h>
#include<conio.h>
int addition (int,int);
int soustraction (int,int);
int multiplication (int,int);
float division (float,float);
int addition (int a,int b)
{
return(a+b);
}
int soustraction (int a,int b)
{
return(a-b);
}
int multiplication (int a,int b)
{
return(a*b);
}
float division (float a,float b)
{
if(b!=0)
{ return(a/b);
}
return(0);
}
main ()
{
int a,b,choix;
clrscr();
printf("Veuillez saisir la valeur de a\n");
scanf("%d",&a);
printf("Veuillez saisir la valeur de b\n");
scanf("%d",&b);
printf("Voici le menu g‚n‚ral\n");
printf("\n");
printf("Veuillez choisir une op‚ration\n");
printf("\n");
printf("1.Addition\n");
printf("2.Soustraction\n");
printf("3.Division\n");
printf("4.Multiplication\n");
printf("5.Quitter\n");
scanf("%d",&choix);
clrscr();
switch(choix)
{ case 1:
printf("voici le resultat: %d\n",addition(a,b));
break;
case 2:
printf("voici le resultat: %d\n",soustraction(a,b));
break;
case 3:
printf("voici le resultat: %f\n",division(a,b));
break;
case 4:
printf("voici le resultat: %d\n",multiplication(a,b));
break;
case 5:
exit();
break;
default:
printf("revez votre choix svp\n");
break;
}
getch ();
}
salut à tout le monde. J'aimerais qu'on me donne un coup de main sur mon programme sur les fonction. En fait j'ai creé un programme permettant de d'effectuer les trois operation élémentaires: addition,soustraction,multiplication et division. Et Maintenant on me demande de le modifier en utilisant la fonction et les ponteurs. J'y suis parvenu avec la fonction.Mais j'ai un peu du mal à le modifier avec les pointeurs.
Si qqn pourrait m'aider, je lui serai trés reconnaissant...
Voici le programme:
#include<stdio.h>
#include<conio.h>
int addition (int,int);
int soustraction (int,int);
int multiplication (int,int);
float division (float,float);
int addition (int a,int b)
{
return(a+b);
}
int soustraction (int a,int b)
{
return(a-b);
}
int multiplication (int a,int b)
{
return(a*b);
}
float division (float a,float b)
{
if(b!=0)
{ return(a/b);
}
return(0);
}
main ()
{
int a,b,choix;
clrscr();
printf("Veuillez saisir la valeur de a\n");
scanf("%d",&a);
printf("Veuillez saisir la valeur de b\n");
scanf("%d",&b);
printf("Voici le menu g‚n‚ral\n");
printf("\n");
printf("Veuillez choisir une op‚ration\n");
printf("\n");
printf("1.Addition\n");
printf("2.Soustraction\n");
printf("3.Division\n");
printf("4.Multiplication\n");
printf("5.Quitter\n");
scanf("%d",&choix);
clrscr();
switch(choix)
{ case 1:
printf("voici le resultat: %d\n",addition(a,b));
break;
case 2:
printf("voici le resultat: %d\n",soustraction(a,b));
break;
case 3:
printf("voici le resultat: %f\n",division(a,b));
break;
case 4:
printf("voici le resultat: %d\n",multiplication(a,b));
break;
case 5:
exit();
break;
default:
printf("revez votre choix svp\n");
break;
}
getch ();
}
A voir également:
- Pointeur et fonction
- Fonction si et - Guide
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
1 réponse
Bonsoir,
Voici un exemple avec une de tes fonctions :
Petite question :
Pourquoi la signature de ta fonction division est float division (float a,float b) et non pas float division(int a, int b) ?
De plus, retourner 0 si b vaut 0 n'est pas très judicieux. Il vaudrait mieux retourner la valeur maximale pouvant être contenue dans un float, où bien faire planter ton programme.
En effet, en retournant 0, rien n'indique que le résultat retourné est caduque, et donc dans un enchainement de calculs, une telle erreur peut entrainer un résultat complètement faux sans que l'utilisateur en soit averti, ce qui est beaucoup plus dangereux que de planter son programme.
Parfois, la correction d'un programme est bien plus important que la robustesse. Après c'est à toi de voir ce qui correspond le mieux à ton programme ;)
Cordialement
Voici un exemple avec une de tes fonctions :
int addition (int* a,int* b)
{
return(*a+*b);
}
...
switch(choix) {
case 1:
printf("voici le resultat: %d\n",addition(&a, &b));
break;
Petite question :
Pourquoi la signature de ta fonction division est float division (float a,float b) et non pas float division(int a, int b) ?
De plus, retourner 0 si b vaut 0 n'est pas très judicieux. Il vaudrait mieux retourner la valeur maximale pouvant être contenue dans un float, où bien faire planter ton programme.
En effet, en retournant 0, rien n'indique que le résultat retourné est caduque, et donc dans un enchainement de calculs, une telle erreur peut entrainer un résultat complètement faux sans que l'utilisateur en soit averti, ce qui est beaucoup plus dangereux que de planter son programme.
Parfois, la correction d'un programme est bien plus important que la robustesse. Après c'est à toi de voir ce qui correspond le mieux à ton programme ;)
Cordialement
Quel est ton compilateur stp ? Tu peux me faire une copie des erreurs soulevées stp ?
L'étoile est bien l'opérateur unaire (celui du référencement), et je n'ai absolument pas de problème avec le compilateur de DevC++, ni avec gcc.
Cordialement