Permutation en C++

loic.vazquez Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai un exercice a faire mais je ne comprend pas bien ce qu'il faut faire.

J'ai déjà fait ce code la dans CodeBlock mais ma prof me dit que ce n'est pas comme ça que ça doit être fait pourtant le résultat est celui que demande l'enoncé non ?

Vous trouverez l'enoncer de mon exercice et en dessous le code que j'ai écris dans CodeBlock

Écrivez un programme qui demande 3 entiers et qui les permute.
Les affichages demandés sont :
Avant la permutation, le 1er entier = ? et le 2èm entier = ? et le 3èm entier = ?
Après la permutation, le 1er entier = ? et le 2èm entier = ? et le 3èm entier = ?
Version 1 : Le 1er entier va dans le 2
ème
, le 2ème dans le 3ème et le 3ème dans le 1er
Version 2 : Le 1er entier va dans le 3
ème
, le 3ème dans le 2ème et le 2ème dans le 1er


#include <iostream>

using namespace std;

int main()
{
    //Écrivez un programme qui demande 3 entiers et qui les permute.
    //Les affichages demandés sont :
    int a,b,c;
    cout << "Entrer 3 entier pour la permutation" << endl;
    cin >> a >> b >> c;
    cout << endl;
    cout << "Avant la permutation, le 1er entier = ? et le 2eme entier = ? et le 3eme entier = ? " << endl;
    cout << "1er entier = " << a << "; 2eme entier = " << b << "; 3eme entier  = " << c << endl;
    cout << endl;
    cout << "Apres la permutation, le 1er entier = ? et le 2eme entier = ? et le 3eme entier = ? " << endl;
    cout << endl;
    //Version 1 : Le 1er entier va dans le 2ème, le 2ème dans le 3ème et le 3ème dans le 1er
    cout << "Version 1" << endl;
    cout << "Le 1er entier va dans le 2eme, le 2eme dans le 3eme et le 3eme dans le 1er." << endl;
    cout << a << " = " << c << endl;
    cout << b << " = " << a << endl;
    cout << c << " = " << b << endl;
    cout << endl;
    //Version 2 : Le 1er entier va dans le 3ème, le 3ème dans le 2ème et le 2ème dans le 1er
    cout << "Version 2" << endl;
    cout << "Le 1er entier va dans le 3eme, le 3eme dans le 2eme et le 2eme dans le 1er." << endl;
    cout << a << " = " << c << endl;
    cout << c << " = " << b << endl;
    cout << b << " = " << a << endl;
    return 0;
}



mais ne connaissant pas le code encore bien comme il faut, je ne sais pas comment m'y prendre. Est-ce que quelqu'un serais m'aider sans me donner la réponse afin que j'essaye ? Ou est-ce le même type d'exercice que l'autre

Merci beaucoup

3 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Par permutation on entends modification des valeurs.

C'est à dire que le résultat attendu doit se faire avec toujours le même affichage des même variables dans le même ordre, c'est leur valeur qui aura changé entre temps pour produire un résultat différent.

cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
1
loic.vazquez Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Mais sinon le reste de mon exercice est juste ?

Parce que d'après ma prof et d'après ce que j'en ai conclu, il doit avoir autre chose.

merci en tout cas pour ton aide
0
loic.vazquez Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
ça doit donc donné ceci dans mon code :

#include <iostream>

using namespace std;

int main()
{
//Écrivez un programme qui demande 3 entiers et qui les permute.
//Les affichages demandés sont :
int a,b,c;
cout << "Entrer 3 entier pour la permutation" << endl;
cin >> a >> b >> c;
cout << endl;
cout << "Avant la permutation, le 1er entier = ? et le 2eme entier = ? et le 3eme entier = ? " << endl;
cout << "1er entier = " << a << "; 2eme entier = " << b << "; 3eme entier = " << c << endl;
cout << endl;
cout << "Apres la permutation, le 1er entier = ? et le 2eme entier = ? et le 3eme entier = ? " << endl;
cout << endl;
//Version 1 : Le 1er entier va dans le 2ème, le 2ème dans le 3ème et le 3ème dans le 1er
cout << "Version 1" << endl;
cout << "Le 1er entier va dans le 2eme, le 2eme dans le 3eme et le 3eme dans le 1er." << endl;
cout << "a = " << c << endl;
cout << "b = " << a << endl;
cout << "c = " << b << endl;
cout << endl;
//Version 2 : Le 1er entier va dans le 3ème, le 3ème dans le 2ème et le 2ème dans le 1er
cout << "Version 2" << endl;
cout << "Le 1er entier va dans le 3eme, le 3eme dans le 2eme et le 2eme dans le 1er." << endl;
cout << "a = " << c << endl;
cout << "c = " << b << endl;
cout << "b = " << a << endl;
return 0;
}
0
loic.vazquez Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai ceci dans lorsque je lance mon code https://img-19.ccm2.net/Yt31YskBvufvozWe9DbhSlLTkdI=/3496d60a9888482da5721076f1c3fa52/tmp/Exercice_en_image.PNG
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
C'est le même code que tout à l'heure donc ma réponse est la même.

Tu ne fais pas ce que l'on te demande, tu dois modifier les valeurs et toujours afficher les variables dans le même ordre pour montrer qu'elle ont changé.

Toi tu triches à l'aide d'un subterfuge qui fait croire que tu affiches "a" (par exemple) alors qu'en fait ce n'est pas la variable "a" que tu affiches, mais en vrai le valeur réelle de "a" est toujours la même, au début comme à la fin, "a" vaut toujours 1...
0
loic.vazquez Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Mais a ce moment la que dois-je changer dans mon code pour que ce ne soit pas pris comme un subterfuge ?

Parce que j'ai essayé d'autre code en changeant et en mettant ce que j'ai pus trouver sur internet mais je ne vois pas ou est mon erreur ?

Merci
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Comme je le mettais dans ma première réponse tu dois toujours avoir ce code :

cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;

Il faudra cependant modifier les valeurs (les permuter dans ton cas) pour avoir des affichages différents mais qui correspondront réellement à l'état des variables.
0
loic.vazquez Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
Désoler mais je comprend pas, je dois vraiment pas comprendre un truc.

J'ai changer ce qu'il fallait par le code que tu m'as donner en ligne 21 22 23 28 29 30 donc ça doit donner ce code :

#include <iostream>

using namespace std;

int main()
{
    //Écrivez un programme qui demande 3 entiers et qui les permute.
    //Les affichages demandés sont :
    int a,b,c;
    cout << "Entrer 3 entier pour la permutation" << endl;
    cin >> a >> b >> c;
    cout << endl;
    cout << "Avant la permutation, le 1er entier = ? et le 2eme entier = ? et le 3eme entier = ? " << endl;
    cout << "1er entier = " << a << "; 2eme entier = " << b << "; 3eme entier  = " << c << endl;
    cout << endl;
    cout << "Apres la permutation, le 1er entier = ? et le 2eme entier = ? et le 3eme entier = ? " << endl;
    cout << endl;
    //Version 1 : Le 1er entier va dans le 2ème, le 2ème dans le 3ème et le 3ème dans le 1er
    cout << "Version 1" << endl;
    cout << "Le 1er entier va dans le 2eme, le 2eme dans le 3eme et le 3eme dans le 1er." << endl;
    cout << "a = " << c << endl;
    cout << "b = " << a << endl;
    cout << "c = " << b << endl;
    cout << endl;
    //Version 2 : Le 1er entier va dans le 3ème, le 3ème dans le 2ème et le 2ème dans le 1er
    cout << "Version 2" << endl;
    cout << "Le 1er entier va dans le 3eme, le 3eme dans le 2eme et le 2eme dans le 1er." << endl;
    cout << "a = " << c << endl;
    cout << "c = " << b << endl;
    cout << "b = " << a << endl;
    return 0;
}


Est-ce que j'ai fais une erreur ou est-ce que c'est correct maintenant.

Je suis chiant je sais mais j'aimerai comprendre comme il faut pour pouvoir faire ce genre d'exercice lors de mon examen.

Merci
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu as écrit :
cout << "a = " << c << endl;
 cout << "b = " << a << endl;
cout << "c = " << b << endl;

Puis :
    cout << "a = " << c << endl;
 cout << "c = " << b << endl;
 cout << "b = " << a << endl;

Or tu devrais écrire, pour les deux :
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;

Comme ça tu affiches bien la réalité des valeurs de a, b et c.

Mais tu n'as toujours pas modifié les valeurs de tes variables, donc pour l'instant tu n'as toujours pas fait ce que l'on te demande, tu n'as rien permuté du tout...
0
loic.vazquez Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
puis-je alors te demander un peu d'explication sur qu'est-ce que je dois ecrire pour faire la permutation ?

Merci pour ces explications
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > loic.vazquez Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Il faut que tu modifies tes variables.

Exemple : tu saisis au clavier 1 et 2 donc tes variables a et b valent 1 et 2, tu dois les modifier pour que les deux valeurs permutent, a et b vaudront alors 2 et 1.

Comme ça l'affichage donnera bien que a=2 et b=1, car ce sera vraiment les bonnes valeurs de ces deux variables.
0