Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3015 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [RESOLU]Debutant en C++, petite question a propos d'un programme

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]Debutant en C++, petite question a propos d'un programme

n°1926236
berserendo
Posté le 23-09-2009 à 20:42:18  profilanswer
 

Bonjour,
Actuellement étudiant, je débute en C++.  
J'avais pour exercice de créer un programme permettant de trier 10 chiffres, voici le code :  

Code :
  1. #define N 10
  2. #include <iostream>
  3. #include <stdlib.h>
  4. using namespace std;
  5. int pos_max(int t[], int p);
  6. int main()
  7. {
  8. srand(NULL);
  9. int t[N];
  10. int m;
  11. for(int i=0; i<N; i++)
  12. {
  13.  t[i]=rand()%9;
  14.  cout <<t[i]<< " ";
  15. }
  16. cout << endl;
  17. m=0
  18. for (; m<N; m++)
  19. {
  20.  cout << m << " " << N << endl;
  21.  int p=pos_max(t, N-m);
  22.  cout << p << endl;
  23.  int aux= t[p];
  24.  t[p]=t[N-m];
  25.  t[N-m]=aux;
  26. }
  27. for (int i=0; i<N; i++)
  28. {
  29.  cout <<t[i]<< " ";
  30. }
  31. return 0;
  32. }
  33. int pos_max(int *t, int p)
  34. {
  35. int pmax=0;
  36. for (int i=0; i<p; i++)
  37. {
  38.  if (t[i]>t[pmax])
  39.  {
  40.   pmax=i;
  41.  }
  42. }
  43. return pmax;
  44. }


 
 
Le probleme est que le "m" démarre à 10 ( cf. Le cout que j'ai placé. voici le resultat d'une simulation :  
6 6 5 7 7 6 1 1 2 4  
10 10
0
6 6 5 7 7 6 1 1 2 4 .
 
Je ne comprend pas pourquoi m ne commence pas a 0 puis 1....  
 
Merci d'avance,
berse


Message édité par berserendo le 24-09-2009 à 23:33:07
mood
Publicité
Posté le 23-09-2009 à 20:42:18  profilanswer
 

n°1926244
Aiua
PSN : Aiua / GT : Aiua42
Posté le 23-09-2009 à 21:40:45  profilanswer
 

déjà ton code compile pas, il manque un ; après m=0

 

ensuite t[N-m] ça déborde du tableau, il faut remplacer par t[N-m-1] vu que les indices de ton tableau vont de 0 à 9

 

mais sinon, une fois que ça compile, m commence bien à 0 ;)


Message édité par Aiua le 23-09-2009 à 21:43:19

---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.
n°1926263
berserendo
Posté le 23-09-2009 à 23:02:29  profilanswer
 

j'ai fait la modification que tu m'as dis, mais j'ai toujours le même probleme... :(

Code :
  1. #define N 10
  2. #include <iostream>
  3. #include <stdlib.h>
  4. using namespace std;
  5. int pos_max(int t[], int p);
  6. int main()
  7. {
  8. srand(NULL);
  9. int t[N];
  10. int m;
  11. // Fabrication du tableau.
  12. for(int i=0; i<N; i++)
  13. {
  14.  t[i]=rand()%9;
  15.  cout <<t[i]<< " ";
  16. }
  17. cout << endl;
  18. for (m=0; m<N; m++)
  19. {
  20.  cout << m << " " << N << endl;
  21.  int p=pos_max(t, N-m-1);
  22.  cout << p << endl;
  23.  int aux=t[p];
  24.  t[p]=t[N-m-1];
  25.  t[N-m-1]=aux;
  26. }
  27. for (int i=0; i<N; i++)
  28. {
  29.  cout <<t[i]<< " ";
  30. }
  31. return 0;
  32. }
  33. int pos_max(int t, int p)
  34. {
  35. int pmax=0;
  36. for (int i=0; i<p; i++)
  37. {
  38.  if (t[i]>t[pmax])
  39.  {
  40.   pmax=i;
  41.  }
  42. }
  43. return pmax;
  44. }



Message édité par berserendo le 24-09-2009 à 08:50:43
n°1926406
pierre_bro​chant
Posté le 24-09-2009 à 15:31:56  profilanswer
 

Déjà je sais pas comment tu fais pour compiler parce que ta fonction "pos_max" prend un int en argument au lieu d'un int* (pour t). Après avoir corrigé ça marche.
 
EDIT : Je viens de voir que tu avais déclaré le prototype correctement, par contre la signature de la définition est incorrecte


Message édité par pierre_brochant le 24-09-2009 à 15:35:14
n°1926497
Aiua
PSN : Aiua / GT : Aiua42
Posté le 24-09-2009 à 20:24:44  profilanswer
 

nan mais ton appel à pos_max, c'était bien N-m qu'il fallait, c'est après que ça n'allait pas :D


---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.
n°1926577
berserendo
Posté le 24-09-2009 à 23:30:59  profilanswer
 

Super, ca marche, j'ai compris ! merci beaucoup à tous.

n°1926587
Taz
bisounours-codeur
Posté le 24-09-2009 à 23:44:19  profilanswer
 

srand(time(NULL)) :o et mauvais usage de rand


Message édité par Taz le 24-09-2009 à 23:44:39

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [RESOLU]Debutant en C++, petite question a propos d'un programme

 

Sujets relatifs
[matlab/C++] ASA - adaptatibe stimulated annealing[C] Vider stdin
[C++ / DLL][C++] Extraction des bits d'un nombre
[Résolu] Hack CSS possible sur positionnement hauteur d'un div ?[Resolu] Redimensionner image avec haut et larg max
problème pour écrire un programme[Resolu]Problème formulaire
[RESOLU] Sous Eclipse l'exécution marche bien mais pas avec la comm[RESOLU] JProgressBar qui affiche directement 100% :(
Plus de sujets relatifs à : [RESOLU]Debutant en C++, petite question a propos d'un programme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR