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

  FORUM HardWare.fr
  Programmation
  C++

  Tris en c++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tris en c++

n°1253886
-neophyte-
Posté le 26-11-2005 à 18:51:29  profilanswer
 

Bonjour à tous,
Voilà je dois écrire un programme, et j' ai besoin à un moment de trier une liste de données en plusieurs ensembles.
J'explique: on doit faire un programme qui classe des vitesses de services suivis du numero ATP du joueur qui sert.
On a donc 2 vecteurs: vit[n] et atp[n]
Selon les donnée qu'on met en cin, il foit afficher:
-les faibles: ceux qui servent  à une vitesse inférieur à 150km/h
-les moyens: qui servent entre 150 et 200 km/h
-les forts: servent à + en 200km/h
 
J'ai donc commencé par essayer de classer juste les faibles mais j'ai une erreur quelque part.
Voici la partie de mon code:
 

Code :
  1. int main(int argc, char*const argv[])
  2. {
  3.   int n,vit[n],atp[n];
  4.   int vit150[n],atp150[n],vit150_200[n],atp150_200[n],vit200[n],atp200[n];
  5.   int a,b,c;
  6.  
  7.   cout<<"introduisez le nombre de joueurs total: ";
  8.     cin>>n;
  9.     cout<<"inserez le numero atp suivit de la moyenne des services du joueur:";
  10.     cout<<" "<<endl;
  11.     a=0;
  12.     b=0;
  13.     c=0;
  14.     for(int i=0;i<n;i++)
  15.        cin>>atp[i]>>vit[i];
  16.    
  17.     for(int i=0;i<n;i++)
  18.        {
  19.        if(vit[i]<150)
  20.         {
  21.          vit150[a]=vit[i]; 
  22.          atp150[a]=atp[i];   
  23.          a++;     
  24.         }}
  25.      
  26.     cout<<"les faibles sont: "<<atp150[a]<<" et respectivement leur vitesses: "<<vit150[a];
  27.     cin>>a;
  28.   return 0;
  29. }


 
Je me suis peut-être embrouillé dans les vecteurs, mais il faudrait qu'il m'affiche tous les services en dessous des 150km/h suivis de leur numero ATP.
Merci infiniment à celui qui m'aide à résoudre mon problème.
 :hello:

Message cité 1 fois
Message édité par -neophyte- le 26-11-2005 à 21:45:03
mood
Publicité
Posté le 26-11-2005 à 18:51:29  profilanswer
 

n°1253934
scol30
Posté le 26-11-2005 à 20:40:00  profilanswer
 

Pour afficher tous les serveurs faible, tu dois faire une boucle  

Code :
  1. for(intk=0;k<a;k++)
  2. cout<<"les faibles sont: "<<atp150[a]<<" et respectivement leur vitesses: "<<vit150[a];


 
stef
 

-neophyte- a écrit :

Bonjour à tous,
Voilà je dois écrire un programme, et j' ai besoin à un moment de trier une liste de données en plusieurs ensembles.
J'explique: on doit faire un programme qui classe des vitesses de services suivis du numero ATP du joueur qui sert.
On a donc 2 vecteurs: vit[n] et atp[n]
Selon les donnée qu'on met en cin, il foit afficher:
-les faibles: ceux qui servent  à une vitesse inférieur à 150km/h
-les moyens: qui servent entre 150 et 200 km/h
-les forts: servent à + en 200km/h
 
J'ai donc commencé par essayer de classer juste les faibles mais j'ai une erreur quelque part.
Voici la partie de mon code:
 

Code :
  1. int main(int argc, char*const argv[])
  2. {
  3.   int n,vit[n],atp[n];
  4.   int vit150[n],atp150[n],vit150_200[n],atp150_200[n],vit200[n],atp200[n];
  5.   int a,b,c;
  6.  
  7.   cout<<"introduisez le nombre de joueurs total: ";
  8.     cin>>n;
  9.     cout<<"inserez le numero atp suivit de la moyenne des services du joueur:";
  10.     cout<<" "<<endl;
  11.     a=0;
  12.     b=0;
  13.     c=0;
  14.     for(int i=0;i<n;i++)
  15.        cin>>atp[i]>>vit[i];
  16.    
  17.     for(int i=0;i<n;i++)
  18.        {
  19.        if(vit[n]<150)
  20.         {
  21.          vit150[a]=vit[i]; 
  22.          atp150[a]=atp[i];   
  23.          a++;     
  24.         }}
  25.      
  26.     cout<<"les faibles sont: "<<atp150[a]<<" et respectivement leur vitesses: "<<vit150[a];
  27.     cin>>a;
  28.   return 0;
  29. }


 
Je me suis peut-être embrouillé dans les vecteurs, mais il faudrait qu'il m'affiche tous les services en dessous des 150km/h suivis de leur numero ATP.
Merci infiniment à celui qui m'aide à résoudre mon problème.
 :hello:


n°1253968
-neophyte-
Posté le 26-11-2005 à 21:44:39  profilanswer
 

scol30 a écrit :

Pour afficher tous les serveurs faible, tu dois faire une boucle  

Code :
  1. for(intk=0;k<a;k++)
  2. cout<<"les faibles sont: "<<atp150[a]<<" et respectivement leur vitesses: "<<vit150[a];


 
stef


 
 
Ok merci stef  :)  
En effet, il faut aussi que le cout tourne. Mais j'ai encore quelques problèmes:
-le tri ne veux pas se faire. il reconnait pas quelques chose et en cout il me met des choses bizarres genre 15424342
pour une réponse...
-pour le cout, je voudrais qu'il fasse:
 
les joueurs faibles sont: ... , ... , ...
ainsi que la vitesse respective de leur service: ... , ... , ...
 
donc que ca tourne en boucle sans qu'il me répète antant de fois ces 2 phrases mais juste les réponses.
J'espère que vous voyez de quoi je veux parler...

n°1254228
scol30
Posté le 27-11-2005 à 16:39:35  profilanswer
 

ton problème semble venir de ta 2ieme boucle for. Quand tu fais la comparaison

Code :
  1. if(vit[n]<150)


en fait c'est plutôt  

Code :
  1. if(vit[i]<150)


 
Donc au final avec affichage comme tu veux:

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main(int argc, char*const argv[]) {
  4.   int n,vit[n],atp[n];
  5.   int vit150[n],atp150[n],vit150_200[n],atp150_200[n],vit200[n],atp200[n];
  6.   int a,b,c;
  7.  
  8.   cout<<"introduisez le nombre de joueurs total: ";
  9.   cin>>n;
  10.   cout<<"inserez le numero atp suivit de la moyenne des services du joueur:";
  11.   cout<<" "<<endl;
  12.   a=0;
  13.   b=0;
  14.   c=0;
  15.   for(int i=0;i<n;i++)
  16.     cin>>atp[i]>>vit[i];
  17.  
  18.   for(int i=0;i<n;i++) {
  19.     if(vit[i]<150) {
  20.       vit150[a]=vit[i]; 
  21.       atp150[a]=atp[i];   
  22.       a++;     
  23.     }
  24.   }
  25.  
  26.   cout<<"les faibles sont: ";
  27.   for(int i=0; i<a ; i++) {
  28.     cout << atp150[i];
  29.     if((i+1) == a)
  30.       cout<<".";
  31.     else
  32.       cout<< ", ";
  33.   }
  34.   cout<<"\nla vitesse respective de leur service: ";
  35.   for(int i=0; i<a ; i++) {
  36.     cout<<vit150[i]<< ", ";
  37.     if((i+1) == a)
  38.       cout<<".";
  39.     else
  40.       cout<< ", ";
  41.   }
  42.   cout<<"\n";
  43.   return 0;
  44. }
  45. Stef


-neophyte- a écrit :

Ok merci stef  :)  
En effet, il faut aussi que le cout tourne. Mais j'ai encore quelques problèmes:
-le tri ne veux pas se faire. il reconnait pas quelques chose et en cout il me met des choses bizarres genre 15424342
pour une réponse...
-pour le cout, je voudrais qu'il fasse:
 
les joueurs faibles sont: ... , ... , ...
ainsi que la vitesse respective de leur service: ... , ... , ...
 
donc que ca tourne en boucle sans qu'il me répète antant de fois ces 2 phrases mais juste les réponses.
J'espère que vous voyez de quoi je veux parler...


n°1254266
Taz
bisounours-codeur
Posté le 27-11-2005 à 17:52:38  profilanswer
 

ami de l'abstraction bonsoir.

n°1254308
-neophyte-
Posté le 27-11-2005 à 19:36:45  profilanswer
 

scol30 a écrit :

ton problème semble venir de ta 2ieme boucle for. Quand tu fais la comparaison

Code :
  1. if(vit[n]<150)


en fait c'est plutôt  

Code :
  1. if(vit[i]<150)


 
Donc au final avec affichage comme tu veux:

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main(int argc, char*const argv[]) {
  4.   int n,vit[n],atp[n];
  5.   int vit150[n],atp150[n],vit150_200[n],atp150_200[n],vit200[n],atp200[n];
  6.   int a,b,c;
  7.  
  8.   cout<<"introduisez le nombre de joueurs total: ";
  9.   cin>>n;
  10.   cout<<"inserez le numero atp suivit de la moyenne des services du joueur:";
  11.   cout<<" "<<endl;
  12.   a=0;
  13.   b=0;
  14.   c=0;
  15.   for(int i=0;i<n;i++)
  16.     cin>>atp[i]>>vit[i];
  17.  
  18.   for(int i=0;i<n;i++) {
  19.     if(vit[i]<150) {
  20.       vit150[a]=vit[i]; 
  21.       atp150[a]=atp[i];   
  22.       a++;     
  23.     }
  24.   }
  25.  
  26.   cout<<"les faibles sont: ";
  27.   for(int i=0; i<a ; i++) {
  28.     cout << atp150[i];
  29.     if((i+1) == a)
  30.       cout<<".";
  31.     else
  32.       cout<< ", ";
  33.   }
  34.   cout<<"\nla vitesse respective de leur service: ";
  35.   for(int i=0; i<a ; i++) {
  36.     cout<<vit150[i]<< ", ";
  37.     if((i+1) == a)
  38.       cout<<".";
  39.     else
  40.       cout<< ", ";
  41.   }
  42.   cout<<"\n";
  43.   return 0;
  44. }
  45. Stef



 
 
Suuuuuper!!
Vraiment merci beaucoup Stef!
Ton aide m'a été très précieuse. Grace à toi j'ai enfin fini mon projet woohouuu  :pt1cable:  
 :hello:

n°1254519
scol30
Posté le 28-11-2005 à 08:04:44  profilanswer
 

maintenant que ca fonctionne il serait preferable que tu utilise des fonctions pour eclaircir ton prog. Je t'ai juste montre comment faire fonctionner ton prog. Il serait bien par exemplede faire des trucs comme ca:

Code :
  1. void affiche(int tab[], int index){
  2.   for(int i=0; i<index ; i++) {
  3.     cout << tab[i];
  4.     ((i+1) == index) ? cout<<".": cout<< ", ";
  5.   }
  6. }


ce qui modifies ton main  

Code :
  1. int main() {
  2.   int n=2,vit[n],atp[n];
  3.   int vit150[n],atp150[n],vit150_200[n],atp150_200[n],vit200[n],atp200[n];
  4.   int a,b,c;
  5.  
  6.   cout<<"introduisez le nombre de joueurs total: ";
  7.   cin>>n;
  8.   cout<<"inserez le numero atp suivit de la moyenne des services du joueur:";
  9.   cout<<" "<<endl;
  10.   a=0;
  11.   b=0;
  12.   c=0;
  13.   for(int i=0;i<n;i++)
  14.     cin>>atp[i]>>vit[i];
  15.  
  16.   for(int i=0;i<n;i++) {
  17.     if(vit[i]<150) {
  18.       vit150[a]=vit[i]; 
  19.       atp150[a]=atp[i];   
  20.       a++;     
  21.     }
  22.   }
  23.  
  24.   cout<<"les faibles sont: ";
  25.   affiche(atp150, a);
  26.   cout<<"\nla vitesse respective de leur service: ";
  27.   affiche(vit150, a);
  28.   cout<<"\n";
  29.   return 0;
  30. }


Essaies de faire la meme chose pour remplir tes tableaux.
Quand ca marcheras essaies de passer a l'utilisation de vector<>. et ainsi de suite.
 
Stef

n°1254536
blackgodde​ss
vive le troll !
Posté le 28-11-2005 à 09:32:25  profilanswer
 

-neophyte- a écrit :


Code :
  1. int n,vit[n],atp[n];
  2. int vit150[n],atp150[n],vit150_200[n],atp150_200[n],vit200[n],atp200[n];




 
Sérieux ca fonctionne ca ?


---------------
-( BlackGoddess )-
n°1254544
Joel F
Real men use unique_ptr
Posté le 28-11-2005 à 10:00:17  profilanswer
 

blackgoddess a écrit :

Sérieux ca fonctionne ca ?


 
En C99 oui

n°1254547
blackgodde​ss
vive le troll !
Posté le 28-11-2005 à 10:02:45  profilanswer
 

je comprends pas, les tableaux sont initialisés quand alors ? parce que la lors de la déclaration des tableaux, n n'est pas initialisé !


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 28-11-2005 à 10:02:45  profilanswer
 

n°1254850
Joel F
Real men use unique_ptr
Posté le 28-11-2005 à 18:36:16  profilanswer
 

blackgoddess a écrit :

je comprends pas, les tableaux sont initialisés quand alors ? parce que la lors de la déclaration des tableaux, n n'est pas initialisé !


 
ce comportement est indéfini mais :
 

Code :
  1. int f(int i) { return 2*i; }
  2. int n = f(5);
  3. int tab[n];


 
est censé fonctionner en C99

n°1255152
blackgodde​ss
vive le troll !
Posté le 29-11-2005 à 10:55:00  profilanswer
 

oui, la variable doit avoir la bonne valeur avant d'etre utilisée pour déclarer le tableau (ce qui parait logique).
 
Donc je comprends pas comment son code fonctionne toujours.


---------------
-( BlackGoddess )-
n°1256880
Bruno_L
Posté le 01-12-2005 à 14:58:28  profilanswer
 

Je comprend pas non plsu pourquoi sa amrche ( surement que n prend une valeur bizare ou ché pas )
 
pis pourquoi tu parle de vecteur quand tout se que ta, cé des int ??


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

  Tris en c++

 

Sujets relatifs
help probleme de tris sous mysqlquest sur les algos de tris (à bulle, par insertion), nb de coups max
[algo - tris par tas] le parallèliser[Javascript] DOM, tris de tableaux coté client ... AIDE NEDDED
[Delphi] DBGrid et tris...programme de comparaison des algos de tris...
Plus de sujets relatifs à : Tris en c++


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)