Langage c
fadoua
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
la question est : ecrire une fonction qui affiche le max de 3 nombre
mais cette fonction n'aarive pas à l'afficher
#include<stdio.h> #include<conio.h> main () int max(int a,int b); int n1,n2,n3; printf("entrez le 1er nombre"); scanf("%d",&n1); printf("entrez le 2eme nombre"); scanf("%d",&n2); printf("entrez le 3eme nombre"); scanf("%d",&n3); printf(" le max de ces 3 nombre est %d " : MAX( MAX(n1,n2), MAX(n3)) ); int MAX(int a, double b) { if (a>b) return a; else return b; }
la question est : ecrire une fonction qui affiche le max de 3 nombre
mais cette fonction n'aarive pas à l'afficher
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
3 réponses
Bonjour,
Il y a quelques erreurs : dans la fonction MAX vous comparez un int et un double le double ne doit pas être nécessaire vu que vous utilisez des int en entrée et que le prototype dans le main utilise des int.
Il faut mettre le prototype de la fonction en dehors du main et faire attention à la casse la distinction est faite entre minuscules et majuscules. Et dans le printf il y a un MAX(n3), MAX(int a, int b) prend deux paramètres
Le max de trois nombre dans le même principe :
Il y a quelques erreurs : dans la fonction MAX vous comparez un int et un double le double ne doit pas être nécessaire vu que vous utilisez des int en entrée et que le prototype dans le main utilise des int.
Il faut mettre le prototype de la fonction en dehors du main et faire attention à la casse la distinction est faite entre minuscules et majuscules. Et dans le printf il y a un MAX(n3), MAX(int a, int b) prend deux paramètres
#include <stdio.h> #include <conio.h> int MAX(int a,int b); int main () { ... return 0; } int MAX(int a, int b) { if (a>b) return a; else return b; }
Le max de trois nombre dans le même principe :
int MAX(int a, int b, int c) { /* si a>b (et si) a>c */ if(a>=b && a>=c) return a; else if(b>=a && b>=c) return b; else return c; }
l'idée du max entre le max de deux nombres et le troisième nombre était pas mal, pour le cas des trois nombres.
mais pourquoi faire max(b) ?
ça ne sert à rien, et en plus c'est impossible, d'après la déclaration de la fonction on ne peut prendre le max que entre deux nombres.
mais pourquoi faire max(b) ?
ça ne sert à rien, et en plus c'est impossible, d'après la déclaration de la fonction on ne peut prendre le max que entre deux nombres.
tu peux utilisé un tableau comme celui-là :
#include<stdio.h>
#include<conio.h>
main();
{float note[3],max;
int i;
clrscr();
for(i=0;i<3;i++){
printf("\n saisir la note N %d :",i+1);
scanf("%f",¬e[i]);}
max=note[0];
for(i=1;i<3;i++)
if(note[i]>max)
max=note[i];
printf("le maximum est : %f",max);
getch();
}
#include<stdio.h>
#include<conio.h>
main();
{float note[3],max;
int i;
clrscr();
for(i=0;i<3;i++){
printf("\n saisir la note N %d :",i+1);
scanf("%f",¬e[i]);}
max=note[0];
for(i=1;i<3;i++)
if(note[i]>max)
max=note[i];
printf("le maximum est : %f",max);
getch();
}
Bonjour,
Sauf que ton code contient des erreurs...
main();
main() renvoie un int. Donc : int main (void)
De plus, pas de point virgule après la définition d'une fonction.
clrscr();
Absolument pas portable. Ce n'est ni ansi ni posix.
getch();
Mieux que clrscr(), mais pas top quand même. Autant utiliser getchar(); qui est portable.
Il ne faut pas non plus oublier "return 0;" à la fin du programme pour dire que tout s'est bien déroulé.
Il ne faut pas non plus oublier le fflush du dernier printf ou alors mettre un \n pour aller à la ligne.
Et enfin, le float est à éviter. Sauf cas particulier, c'est mieux d'utiliser double.
Cdlt,
Sauf que ton code contient des erreurs...
main();
main() renvoie un int. Donc : int main (void)
De plus, pas de point virgule après la définition d'une fonction.
clrscr();
Absolument pas portable. Ce n'est ni ansi ni posix.
getch();
Mieux que clrscr(), mais pas top quand même. Autant utiliser getchar(); qui est portable.
Il ne faut pas non plus oublier "return 0;" à la fin du programme pour dire que tout s'est bien déroulé.
Il ne faut pas non plus oublier le fflush du dernier printf ou alors mettre un \n pour aller à la ligne.
Et enfin, le float est à éviter. Sauf cas particulier, c'est mieux d'utiliser double.
Cdlt,
Ton fonction MAX n'est pas correcte.
Par exemple, pour 5, 5, 3. Ca retournera 3 ;-))).
int MAX(int a, int b,int c)
{
return (a>=b)&&(a>=c)?a:(b>=a)&&(b>=c)?b:c;
}
Et après on s'étonne que les codes sont illisibles. ^^