Besoin d'aide pour un programme

Aeve

Nouveau membre
Bonjour! Je suis étudiante à l'université et je suis un cours (optionnel) d'intro à la programmation!

Il nous est demandé d'écrire un programme qui lit trois valeurs entières (nb1, nb2 et nb3), affiche la médiane (milieu) des trois
valeurs ou un message dans le cas où les nombres sont tous égaux ou égaux deux à deux.

voici ce que j'ai fait mais ça ne semble pas fonctionner! Est-ce que qqn pourrait svp m'aider et me dire ce qui cloche?? Je vous en serais énormément reconnaissante!

#include <stdio.h>
void main ()
{


//déclaration des variables
int nb1, nb2, nb3 // Les trois nombres que l'utilisateur doit entrer
int Mediane // chiffre milieu


// saisie des donnees

printf("Entrer nb1: ");
scanf("%d", &nb1);

printf("Entrer nb2: ");
scanf("%d", &nb2);

printf("Entrer nb3: ");
scanf("%d", &nb3);


// attribution de la Médiane
if (nb1=nb2=nb3)
printf("Médiane n'existe pas, tous les chiffres sont égaux\n");

else if
{
if(nb1=nb2)
printf("Les chiffres sont égaux deux à deux\n");
else if (nb1=nb3)
printf("Les chiffres sont égaux deux à deux\n");
else (nb2=nb3)
printf("Les chiffres sont égaux deux à deux\n");

}

else
{
if( nb1>=nb2>=nb3)
printf("La Médiane est nb2\n");
else if (nb2>=nb1>=nb3)
printf("La Médiane est nb1\n");
else (nb1>=nb3>=nb2)
printf("La Médiane est nb3\n");
}

getch();
}

Merci beaucoup à l'avance!
 

batchy

Grand Maître
- il manque plein de points virgules partout
- dans un if il ne faut pas confondre = et ==
- a==b==c ne va pas marcher non plus, mais a==b && b==c si
- après un else, met soit rien soit un if (quelque chose), pas un mélange des deux
- ton compilo ne va peut être pas aimer le fait que main retourne du void
 

Aeve

Nouveau membre
Merci énormément pour votre aide! Toutefois, lorsque je compile, le programme me donne une erreur après le premier printf, je ne saisis pas pourquoi! De toute façon, je vous remercie beaucoup de vos conseils, je les mets en application immédiatement!
 

Aeve

Nouveau membre
Voici le programme modifié! Y voyez-vous toujours des erreurs?

// Calcul de la médiane
// fait par Andrée-Eve Larue et Cassandra Larue
// 12 Octobre 2006
#include <stdio.h>
void main ()
{


//déclaration des variables
int nb1, nb2, nb3 ; // Les trois nombres que l'utilisateur doit entrer
int Mediane ; // chiffre milieu


// saisie des donnees

printf("Entrer nb1: ");
scanf("%d", &nb1);

printf("Entrer nb2: ");
scanf("%d", &nb2);

printf("Entrer nb3: ");
scanf("%d", &nb3);


// attribution de la Médiane
if (nb1==nb2 & nb2==nb3)
printf("Mediane n'existe pas, tous les chiffres sont egaux\n");
else if(nb1=nb2)
printf("Les chiffres sont egaux deux a deux\n");
else if (nb1=nb3)
printf("Les chiffres sont egaux deux a deux\n");
else if (nb2=nb3)
printf("Les chiffres sont egaux deux a deux\n");
else if( nb1>nb2>nb3)
printf("La Mediane est nb2\n");
else if (nb2>nb1>nb3)
printf("La Mediane est nb1\n");
else (nb1>nb3>nb2)
printf("La Mediane est nb3\n");




getch();
}
Edit du modo : Je relis les règles et je les applique.
 

shidosh

Habitué
Corrige cette patie,
== <=> équivalence
= <=> on affecte une valeur
[cpp]
else if(nb1==nb2)
printf("Les chiffres sont egaux deux a deux\n" );
else if (nb1==nb3)
printf("Les chiffres sont egaux deux a deux\n" );
else if (nb2==nb3)
printf("Les chiffres sont egaux deux a deux\n" );
[/cpp]

perso, j'aurais écrit:
[cpp]
else if ( (nb1==nb2) || (nb1==nb3) || (nb2==nb3) )
printf("Deux chiffres sont égaux\n" );
[/cpp]
Comme tu as déjà testé le cas ou les 3 chiffres sont égaux, tu peux utilisé ce test ( || signifiant "ou") pour verifier si 2 nombres sont égaux.
Sinon complète tes phrases pour dire "Les chiffres nb1 et nb2 sont egaux deux a deux" par exemple, pour enrichir ton texte, et expliciter dans quel cas d'égalité tu es.
 

shidosh

Habitué
et puis tes > en cascade ca passe pas :o
Oui en effet, tu devrais mieux ecrire
[cpp]
else if( (nb1>nb2) && (nb2>nb3) )
printf("La Mediane est nb2\n" );
else if ( (nb2>nb1) && (nb1>nb3) )
printf("La Mediane est nb1\n" );
else (( nb1>nb3) && (nb3>nb2))
printf("La Mediane est nb3\n" );
[/cpp]
Les comparaisons en C/C++ se font toujours entre 2 éléments.
De plus tu as oublié des cas pour cette partie, et ce code est faux
Si je donne:
2 3 4 -> Cas traité, la médiane est nb3 (Erreur !)
4 3 2 -> Cas non traité
3 2 4 -> Cas non traité
4 2 3 -> Cas non traité
3 4 2 -> Cas traité, la médiane est nb1
2 4 3 -> la médiane est nb2 (Erreur !)

Perso, j'écrirais ceci (cette solution n'est pas la mieux, mais est assez compréhensible):
[cpp]
if ( nb1 > nb2) {
if ( nb2 > nb 3 && nb1 > nb3) {
printf("La Mediane est nb2\n" );
} else if ( nb2 < nb 3 && nb1 > nb3) {
printf("La Mediane est nb3\n" );
} else {
printf("La Mediane est nb1\n" );
}
}
# On sais déja que nb1 < nb2
else if ( nb1 > nb3){
printf("La Mediane est nb1\n" );
}
# On sais déja que nb1 < nb2 et que nb1 < nb3
else if (nb2 > nb3){
printf("La Mediane est nb3\n" );
} else {
printf("La Mediane est nb2\n" );
}



[/cpp]
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 717 996
Membres
1 586 386
Dernier membre
aviateurdesairs
Partager cette page
Haut