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

  FORUM HardWare.fr
  Programmation
  C++

  Fusion de deux tableaux(Noob Inside)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fusion de deux tableaux(Noob Inside)

n°1502818
XamamaX
Posté le 14-01-2007 à 20:39:06  profilanswer
 

Bonjour, j'essaye de resoudre un exercice qui me demande de fusioner deux tableaux T1 & T2 contenant des nombres croissants dans T3 de nombre croissant aussi
 
J'ai commencé comme ça  

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main (int argc, char *argv[])
  4. {
  5.   const int N=4,M=5,O=9;
  6.   int T1[M]={1,3,5,7,9};
  7.   int T2[N]={2,4,6,8};
  8.   int T3[O]={0};
  9.   int i=0,j=0;
  10.   for(int x=0;x<O;x++){
  11.   if(T2[i]<T1[j]){
  12.        T3[x]=T2[i];
  13.        i++;
  14.        }
  15.     else{
  16.      T3[x]=T1[j];
  17.      j++;}
  18.     }
  19.  
  20. for(int x=0;x<O;x++){
  21. cout << T3[x] <<endl;}
  22.   system("PAUSE" );
  23.   return 0;
  24. }


 
L'ennui c'est que je ne vois pas comme faire pour que, lorsque un tableau est vide (Ici T2), il ne se préoccupe plus de les comparer mais va simplement prendre le reste de l'autre(T1) pour le mettre dans le 3ème(T3)... Et je m'acharne depuis tantot avec des IF dans tout les sens mais ça veut pas marcher ;(


Message édité par XamamaX le 15-01-2007 à 07:23:29
mood
Publicité
Posté le 14-01-2007 à 20:39:06  profilanswer
 

n°1502833
Joel F
Real men use unique_ptr
Posté le 14-01-2007 à 20:57:25  profilanswer
 

il est où le C++ à part cout ?
les vecteur en C++, c'est std::vector, et std::algorithm doit te permettre de faire ton truc en 2 lignes.
 
Sinon direction forum C.
 
L'algorithme à l'air ok sauf que bon T3 à une taille constant de 1 élément, ce qui n'arrange rien.
Remplace tes T1[N] par des vector :o


Message édité par Joel F le 14-01-2007 à 20:58:26
n°1502861
XamamaX
Posté le 14-01-2007 à 21:41:48  profilanswer
 

J'ai transferé dans le forum C alors ^^
J'insiste sur le Noob Inside du titre... je connais pas trop les différences C/C++, j'ai juste eu un petit aperçu de programmation dans un cours d'info donc voila , ça se resume à cin cout while if for ...

n°1502879
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-01-2007 à 22:23:54  profilanswer
 

XamamaX a écrit :

J'ai transferé dans le forum C alors ^^
J'insiste sur le Noob Inside du titre... je connais pas trop les différences C/C++, j'ai juste eu un petit aperçu de programmation dans un cours d'info donc voila , ça se resume à cin cout while if for ...


Tu as été mal redirigé, ton programme n'est pas du C.
 
Tu cherches à écrire en C ou en C++ ? Ce sont 2 langages différents, 2 compilateurs différents et il faut faire un choix (de langage, puis de forum).


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1502924
XamamaX
Posté le 15-01-2007 à 07:21:21  profilanswer
 

Bon, je suis en train de faire du ping pong entre les deux forums ...
Home sweet home C++...

n°1502983
Ace17
Posté le 15-01-2007 à 10:53:27  profilanswer
 

Commence par verifier si tu n'es pas arrive en fin de tableau *avant* de tester les valeurs des cases.  
 
A chaque iteration :  
si T1 est fini et T2 n'est pas fini
   prendre une case de T2
sinon si T2 est fini et T1 n'est pas fini
   prendre une case de T1
sinon si T1 est fini et T2 est fini
   exit la boucle
sinon  
   prendre une case de T1 et de T2 et puis les comparer  
fin si
 
Voila est-ce que c'est clair ?

n°1503047
XamamaX
Posté le 15-01-2007 à 12:28:10  profilanswer
 

Ace17 a écrit :

Commence par verifier si tu n'es pas arrive en fin de tableau *avant* de tester les valeurs des cases.  
 
A chaque iteration :  
si T1 est fini et T2 n'est pas fini
   prendre une case de T2
sinon si T2 est fini et T1 n'est pas fini
   prendre une case de T1
sinon si T1 est fini et T2 est fini
   exit la boucle
sinon  
   prendre une case de T1 et de T2 et puis les comparer  
fin si
 
Voila est-ce que c'est clair ?


 
Littéralement ça donne :  
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main (int argc, char *argv[])
  4. {
  5.   const int N=4,M=5,O=9;
  6.   int T1[M]={1,3,5,7,9};
  7.   int T2[N]={2,4,6,8};
  8.   int T3[O]={0};
  9.   int i=0,j=0;
  10.   bool boucle=true;
  11.   for(int x=0;boucle==true;x++){ // Pour chaque itération
  12.   if(x>j && x<i){ // Si T1 fini et T2 pas fini
  13.       T3[x]=T2[i]; // On met T2 dans T1
  14.       i++;} 
  15.   else if(x<j && x>i){ // Si T2 fini et T1 pas fini
  16.   T3[x]=T1[j]; // On met T1 dans T3
  17.   j++;}
  18.   else if(x>j && x>i) boucle=false; // Si les deux son fini, stop la boucle
  19.   else if(T2[i]<T1[j]){ //Si aucun n'est fini, on compare
  20.        T3[x]=T2[i];
  21.        i++;
  22.        }
  23.     else{
  24.      T3[x]=T1[j];
  25.      j++;}
  26.     }
  27.  
  28. for(int x=0;x<O;x++){
  29. cout << T3[x] <<endl;} //Mais ça marce paaaaaaaas :(
  30.   system("PAUSE" );
  31.   return 0;
  32. }

n°1503055
Ace17
Posté le 15-01-2007 à 12:36:38  profilanswer
 

T'es sur de tes conditions ? "x < i" j'aurais plutot mis "i < N"

n°1503076
XamamaX
Posté le 15-01-2007 à 12:51:49  profilanswer
 

Ace17 a écrit :

T'es sur de tes conditions ? "x < i" j'aurais plutot mis "i < N"


 
Juste ;)
Merci !

n°1503298
Taz
bisounours-codeur
Posté le 15-01-2007 à 18:53:38  profilanswer
 
mood
Publicité
Posté le 15-01-2007 à 18:53:38  profilanswer
 

n°1503302
XamamaX
Posté le 15-01-2007 à 18:59:51  profilanswer
 


 
Ha bon ?
(J'avoue avoir du chercher la definition de imbitable pour comprendre ce que tu voulais dire  :whistle: )

n°1503306
++fab
victime du syndrome IH
Posté le 15-01-2007 à 19:16:11  profilanswer
 

Spoiler :

maintenant, laisse Taz s'expliquer sur son commentaire - je suis assez d'accord - et retransfère le topic en cat C

n°1503309
Ace17
Posté le 15-01-2007 à 19:19:02  profilanswer
 

La question est : Dans quelle cat range-t-on le tres mauvais C++ ?

n°1503315
++fab
victime du syndrome IH
Posté le 15-01-2007 à 19:34:55  profilanswer
 

ben si tu le range en C, tu tombes sur le répondeur :
"Pas du C, le C++ c'est à côté"

n°1503320
Ace17
Posté le 15-01-2007 à 19:48:12  profilanswer
 

Ouais ben faut pas esperer que l'auteur du topic le rebouge dans C alors :D

n°1503321
0x90
Posté le 15-01-2007 à 19:49:47  profilanswer
 

Ce truc compile en C++ et pas en C, c'est donc du C++ c'est tout.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1503332
XamamaX
Posté le 15-01-2007 à 20:17:57  profilanswer
 

++fab a écrit :

ben si tu le range en C, tu tombes sur le répondeur :
"Pas du C, le C++ c'est à côté"


 
Mwai, j'ai fait C++>C>C++ alors j'y suis j'y reste !
 

0x90 a écrit :

Ce truc compile en C++ et pas en C, c'est donc du C++ c'est tout.


 
Pour ma gouverne, en quoi c'est du trés mauvais C++ ? Et pourquoi c'est confondable avec du C ?
Dés que je recherche des trucs C++ pour débutant, je tombe sur les mêmes commandes de "base" (cout/cin/T[N]/for/while/if/else/... ) ...

n°1503335
Ace17
Posté le 15-01-2007 à 20:23:01  profilanswer
 

Du tres mauvais C++, c'est, entre autres, du C++  qui pourrait "presque" etre compile par un compilateur C.  
 
Ton code, tu lui remplaces "cout" par "printf" et hop le tour est joue, bienvenue dans la cat C :D
 
En C++, la bonne facon de faire commence par utiliser les types de la STL des que c'est possible. Ici std::vector serait plus approprie que de simples tableaux.

n°1503344
XamamaX
Posté le 15-01-2007 à 20:36:34  profilanswer
 

Ace17 a écrit :

Du tres mauvais C++, c'est, entre autres, du C++  qui pourrait "presque" etre compile par un compilateur C.  
 
Ton code, tu lui remplaces "cout" par "printf" et hop le tour est joue, bienvenue dans la cat C :D
 
En C++, la bonne facon de faire commence par utiliser les types de la STL des que c'est possible. Ici std::vector serait plus approprie que de simples tableaux.


 
Okay dokay, moi je ne fait qu'appliquer ce qu'on m'a appris dans mon cours, qui est juste un cours super général sur l'info, ce qui passe par un introduction à la programmation, je suppose donc qu'on nous a appris la base de la base et que les trucs STL sont moins... pédagogique... pour donner un aperçu...
Enfin bref ;)
 
EDIT: On m'a pas appri les quotes non plus  :whistle:


Message édité par XamamaX le 15-01-2007 à 20:37:17
n°1503350
Ace17
Posté le 15-01-2007 à 20:53:04  profilanswer
 

Faut surtout pas le prendre comme une insulte; personnellement j'ai commence en écrivant du code comme le tien. Mais beaucoup de puristes te diront qu'ils pensent que ca file des mauvaises habitudes.
 
Il n'y a rien de mauvais, a mon avis, a ne pas faire les choses "correctement" des le départ. Le tout est de ne pas s'y cantonner.
 
edit: et au fait, un autre truc qui rend ton code "imbitable", c'est l'absence d'indentation. J'ai du editer ton message, copier-coller ton code, puis le reindenter pour pouvoir le lire. Taz n'a manifestement pas été jusque la, et j'aurais tres bien pu ne pas en faire autant. Ca n'est pas un caprice de ma part, tout le monde ici peut te le confirmer.


Message édité par Ace17 le 15-01-2007 à 20:56:21
n°1503393
Taz
bisounours-codeur
Posté le 15-01-2007 à 22:32:46  profilanswer
 

ton bazar est même pas indenté, la mise en forme est pascohérente. Rien qu'en style, c'est pourri.
 
Après t'as des noms de variables à la noix.
 
T'en es au point où on apprend à faire ses lettres avant même de savoir écrire un mot. Sauf que tu crames les étapes et tu nous a vomis


Message édité par Taz le 15-01-2007 à 22:33:37
n°1503395
Taz
bisounours-codeur
Posté le 15-01-2007 à 22:35:51  profilanswer
 

surtout tu ferais bien d'utiliser std::vector<T>::at pour détecter les erreurs de tableau, parce qu'à priori, y en a.

n°1503423
++fab
victime du syndrome IH
Posté le 16-01-2007 à 00:05:57  profilanswer
 

Ace17 a écrit :

Du tres mauvais C++, c'est, entre autres, du C++  qui pourrait "presque" etre compile par un compilateur C.

Si j'extrapole un tout petit peu, du très mauvais C++, c'est du C. Mais quelle sorte de C, du très mauvais ou du très bon ?
Mon avis est que la qualité d'un code C++ est orhogonale à sa ressemblance avec un code C -- sauf si l'on perverti la définition de "qualité".


Message édité par ++fab le 16-01-2007 à 00:06:14
n°1503425
0x90
Posté le 16-01-2007 à 00:12:46  profilanswer
 

et du C qu'on peut pas compiler avec un compilateur C++, c'est quoi [:autobot]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1503426
++fab
victime du syndrome IH
Posté le 16-01-2007 à 00:18:29  profilanswer
 

un pied de nez à K&R, et/ou à la communauté C++ que beaucoup font semblant d'ignorer.


Message édité par ++fab le 16-01-2007 à 00:24:08
mood
Publicité
Posté le   profilanswer
 


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

  Fusion de deux tableaux(Noob Inside)

 

Sujets relatifs
mysql +noob + plusieurs tablesnoob recherche aide c++
[Javascript] Question de noob sur les evenements (premier code Javascrfgetcsv, fputcsv et les tableaux associatifs
[noob]lire des sources?[HTML] Informations sur les input type FILE [Liens inside]
Recherche informations pour PL7pro(tableaux, graphiques, enre ! pleaseComment dissocier les deux "manettes" d'une courbe (photo inside)
alignement horizontale de tableaux dans une div[nOOb][MySQL/PHP]Créer un site ....particulié ...
Plus de sujets relatifs à : Fusion de deux tableaux(Noob Inside)


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