Page 1 sur 1

Permutation

MessagePosté: 23 Oct 2009, 19:33
de Cyril
bonsoir, monsieur

Aprés, avoir entamé l'exercice 2 du tp 2 , je me suis hurté a un probléme qui peux paraître bête :evil: . je ne sais plus afficher le resultat de la permutation :shock: demander dans l'exercice.
voici mon programme:

#include <iostream>
using namespace std;
int main()
{
int nb,nb2,permute;
cout<<"veuillez saisir deux nombre"<<endl;
cin>>nb>>nb2;
permute<<nb;
nb<<nb2;
nb2<<permute;
cout<<?<<endl;
}
merci !!!

Re: Permutation

MessagePosté: 26 Oct 2009, 20:30
de Tibo
Salut Cyril,

attention, tu fais une erreur : tu te trompes avec l'affectation (c'est à dire mettre une valeur dans une variable)?

En algorithmique, il faut faire par exemple :
Code: Tout sélectionner
permute <- nb

En C++, il faut faire :
Code: Tout sélectionner
permute = nb;

Ensuite, si tu veux afficher la valeur qu'il y a dans la variable, il faut faire :

Code: Tout sélectionner
cout << "valeur de permute : " << permute << endl;


J'espère que c'est plus clair !

Re: Permutation

MessagePosté: 26 Oct 2009, 21:50
de Cyril
bonsoir, monsieur



je vous remercie de votre aide , j'ai bien compris mes erreurs.

Re: Permutation

MessagePosté: 03 Nov 2009, 19:05
de Cyril
bonsoir, monsieur

je suis actuellement entrain de refaire tout les exercices du tp 4 que je commence a bien comprendre et a connaître par coeur .

Mais dans l'ensemble des derniers exercices un compteur (cpt++)apparaît,mon problème est le suivant , je ne comprend pas le rôle du deuxième (+).

Par exemple :

#include<iostream>
#include<string>
using namespace std;
int main ()
{
string mdp;
int cpt=0;
cout<<" veuillez saisir votre mot de passe"<<endl;
cin>>mdp;
while((mdp != "3xrf6")&& (cpt<3))
{
cout<<" erreur mdp, il vous reste : "<<3-cpt<<"essaie"<<endl;
cin>>mdp;
cpt++;
}
if (mdp == "3xrf6"){
cout<<"le renard a perdu son chapeau"<<endl;
}else{
cout<<"erreur mot de passe"<<endl;
}
}

merci !!!

Re: Permutation

MessagePosté: 04 Nov 2009, 21:10
de Tibo
Quand le langage C a été inventé, ils ont essayé de faire simplifier la vie des programmeurs. Il y a donc plein d'astuces pour aller plus vite. En réalité, écrire
Code: Tout sélectionner
cpt++;
revient à écrire
Code: Tout sélectionner
cpt=cpt+1;


Il est aussi possible d'écrire de manière équivalente :
Code: Tout sélectionner
cpt+=1;

De ces règles, tu peux en déduire qu'il est possible d'écrire :
Code: Tout sélectionner
cpt--;
cpt=cpt-1;
cpt-=1;

mais aussi
Code: Tout sélectionner
cpt/=5; // ce qui reviens à cpt=cpt/5;
cpt*=5; // ce qui reviens à cpt=cpt*5;


J'espère que c'est clair...

Re: Tp 16

MessagePosté: 07 Déc 2009, 20:24
de Cyril
Bonsoir, monsieur

J'ai essayer de finir le TP 16 malheureusement sans succès :(

voici ce que j'ai fait :

Code: Tout sélectionner
#include<iostream>
#include<string>
using namespace std;

struct Matiere{
   string nom;
   string prof;
   string eleves[5];
   float notes[3][5];
};

Matiere initialisation(){
   Matiere m;
   cout<<"veuillez saisir le nom de la matiere, le nom du professeur et les noms des eleves : "<<endl;
   cin>>m.nom;
   cin>>m.prof;
   for(int cpt=0; cpt<5;cpt++){
      cin>>m.eleves[cpt];
   }

   return m;
};

string CreerMotDePasse(Matiere m){

   string mdp="00000";
   mdp[0]=m.nom[1];
   mdp[1]=m.nom[2];
   mdp[2]=m.prof[m.prof.length()-3];
   mdp[3]=m.prof[m.prof.length()-2];
   mdp[4]=m.prof[m.prof.length()-1];

   return mdp;
};

bool validiteMotDePasse(Matiere m,string mdp){

   string mdp2;
   mdp2=CreerMotDePasse(m);

   if(mdp2==mdp){
      cout<<"le mot de passe est correct !"<<endl;
      return true;
   }else{
      cout<<"le mot de passe n'est pas correct !"<<endl;
      return false;
   }
};

void saisirNote(Matiere m,string nomEleve){
   int cpt,cpt2;
   for (cpt=0; cpt<5; cpt++){
      if(nomEleve=m.eleves[cpt]){
         cout<<"Veuillez saisir trois notes : "<<m.eleves[cpt]<<endl;
         for (cpt2=0; cpt2<3; cpt2++){
            cin>>m.notes[cpt2][cpt];

         }else{
              cout<<"Une erreur s'est produite lors de la saisie des notes "<<endl;
         }
      }
   }
};

void main(){
   Matiere info;
   string mot2passe;
   float saisirNote;
   info=initialisation();
   cout<<CreerMotDePasse(info)<<endl;
   cout<<"saisir un mot de passe : "<<endl;
   cin>>mot2passe;
   if(validiteMotDePasse(info,mot2passe)){
      cout<<"OK"<<endl;
   }else{
      cout<<"KO"<<endl;
   }
   cout<<saisirNote(info,mot2passe)<<endl;
        cin>>mot2passe;
       
};


merci de bien vouloir m'aider :cry:

Re: Permutation

MessagePosté: 08 Déc 2009, 01:34
de N4th
Pour commencer sa ira mieux si tu met un "return m" à la fin de ta fonction initialisation() car elle doit renvoyer un objet Matiere.

Ensuite je ne comprend pas trop la fin de ton main :?

Code: Tout sélectionner
cout<<saisirNote(info,mot2passe)<<endl;
cin>>mot2passe;


Ton saisirNote demande en paramètre le nom d'un élève ?

Re: Permutation

MessagePosté: 08 Déc 2009, 15:59
de Tibo
Bonjour Cyril !

Comme le dit N4th (merci à lui ;) ), ta fonction initialisation() doit renvoyer une matière pour que dans le main() tu puisse la récupérer dans ta variable info.

Ensuite, ta fonction saisirNote prend en paramètre une variable de type matière et un string correspondant au nom d'un élève. D'où deux problème :
- Dans ta fonction nomEleve, il faut te rappeler que pour tester l'égalité, il faut utiliser == !
- Dans la fonction main, il faut que tu demande à l'utilisateur quel élève (le nom) il veux modifier avant d'appeler la fonction :
Code: Tout sélectionner
cout<<"quel est le nom de l'eleve à modifier ?"<<endl;
cin>>nomE;
saisirNote(info, nomE);

Enfin, il ne fallait pas mettre la fonction dans un cout car la fonction ne renvoie rien qui puisse être affiché (elle est de type void) !