Accueil > Forum > > > > je m'arrache les cheveu avec mes tableau
je m'arrache les cheveu avec mes tableau
mardi 23 novembre 2004 à 20:33:47 |
je m'arrache les cheveu avec mes tableau

slyiut
|
bonjour je dois faire un exo qui est la fusion de 2 tableau triés dans un troisieme tableau. Je sais qu'il y a sur le net plein de solution mais ce que j'aimerai c'est savoir pourquoi mon code ne marche pas alors qu'il semble bien tourner "a la main". J'ai une boucle inifini lors de l'execution machine a l'action fusion merci de m'aider voici le code #include <iostream.h> const int TAILLEMAX = 1000; typedef struct STtab{ int taille; int tab[TAILLEMAX]; }; void init(STtab &t1,STtab &t2) { t1.tab[0]=4; t1.tab[1]=5; t1.tab[2]=6; t1.tab[3]=9; t1.tab[4]=12; t1.tab[5]=14; t1.tab[6]=15; t2.tab[0]=0; t2.tab[1]=1; t2.tab[2]=2; t2.tab[3]=3; t2.tab[4]=7; t2.tab[5]=8; t2.tab[6]=10; t2.tab[7]=11; t2.tab[8]=13; } void affichage(STtab t) { int i; for(i=0;i<t.taille;i++) cout<<"case "<<i<<" : "<<t.tab[i]<<endl; cout<<endl; } void fusion(STtab t1,STtab t2,STtab &t3) { int i=1,k=0,j=0; int tab,temp; if(t1.tab[0]<t2.tab[0]) { tab = 1; k = 1; t3.tab[0] = t1.tab[0]; temp = t2.tab[0]; } else { tab = 2; j = 1; t3.tab[0] = t2.tab[0]; temp = t1.tab[0]; } while(i<t3.taille-1) { switch(tab){ case 1 : while((k<t1.taille)&&(t1.tab[k]<temp)) { t3.tab[i] = t1.tab[k]; i++; k++; } tab = 2; temp = t1.tab[k]; break; case 2 : while((j<t2.taille)&&(t2.tab[j]<temp)) { t3.tab[i] = t2.tab[j]; j++; i++; } tab = 1; temp = t2.tab[j]; break; default : cout<<"pas possible"<<endl; } } } int main() { STtab t1,t2,t3; t1.taille = 7; t2.taille = 9; t3.taille = t1.taille + t2.taille; init(t1,t2); affichage(t1); affichage(t2); cout<<t3.taille<<endl; fusion(t1,t2,t3); affichage(t3); }
|
|
mardi 23 novembre 2004 à 22:48:55 |
Re : je m'arrache les cheveu avec mes tableau

6co
|
à première vue, il semblerait que tu n'incrémentes pas i aussi souvent qu'il le faut...
à ajouter dans ton code :
...while(i<t3.taille) {
if (t1.tab[k]>temp || t2.tab[j]>temp) i++; switch(tab){ case 1 :...
ça devrait fonctionner (à peu près)
6co
|
|
mercredi 24 novembre 2004 à 17:40:07 |
Re : je m'arrache les cheveu avec mes tableau

Bebert37
|
regarde un peu du coté de la declaration de fusion et de ton appel .. void fusion(STtab t1,STtab t2,STtab &t3) et tu fait fusion(t1,t2,t3) alors que ton t3 n'est pas le même enfin j'ai juste vite vu essai plutot avec : fusion(t1,t2,&t3) Ce sont les tonneaux vides et les hommes pleins qui font le plus de bruit 
|
|
jeudi 25 novembre 2004 à 12:27:23 |
Re : je m'arrache les cheveu avec mes tableau

djl
|
non, fusion(t1,t2,t3) est correcte
STtab &t3, t3 est une reference sur un objet STtab
|
|
jeudi 25 novembre 2004 à 18:39:40 |
Re : je m'arrache les cheveu avec mes tableau

minet03
|
Réponse acceptée !
je n'ai compris toutes les phases du code, seulement je crois comprendre que tu insères les nombres dans le troisième tableau en les comparant. Ce ne serai pas plus simple de fusionner directement tes tableaux avec un truc du genre :
void Fusion(STtab t1, STtab t2, STtab t3) { for(i=0;i<t1;i++) t3.tab[i] = t1.tab[i]; for(i=t1.taille+1;i<t2;i++) t3.tab[i] = t1.tab[i]; }
Et ensuite faire un petit algorythme de trie qui va trier le tableau 3 :
void Tri(STtab t3) { int Tmp = 0; for(int i=0;i<t3.taille;i++) { for(int j=0;j<(t3.taille-1);j++) { if(t3.tab[j]>=t3.tab[j+1]) { Tmp = t3.tab[j]; t3.tab[j] = t3.tab[j+1]; t3.tab[j+1] = Tmp; } } }
pour moi c'est beaucoup plus clair et comprehensible.
|
|
jeudi 25 novembre 2004 à 19:19:43 |
Re : je m'arrache les cheveu avec mes tableau

djl
|
oui c 'est plus claire, mais ca ne tire pas profit du langage, c'est vraiment l'algo détaillé (c'est peut etre le but de l'exercice)
par exemple Fusion se resume à 2 memcpy, en c++ avec la stl le tout se fait en quelquel lignes...
|
|
jeudi 25 novembre 2004 à 19:20:01 |
Re : je m'arrache les cheveu avec mes tableau

slyiut
|
ouai bien sur c'est plus simple mais c'est plus couteu en operation ...
|
|
jeudi 25 novembre 2004 à 19:28:55 |
Re : je m'arrache les cheveu avec mes tableau

minet03
|
je ne vois pas pourquoi ce serai plus couteu en opération, il est très court, bien qu'il y ait des boucles.
|
|
jeudi 25 novembre 2004 à 19:37:25 |
Re : je m'arrache les cheveu avec mes tableau

djl
|
le code de minet03 est largement plus claire, c'est le plus important (sinon tu seras chauve avant d'avoir fais un prog de + de 500 lignes)
l'optimisation ca vient apres, en tirant profits du langage
en c++
void Fusion ==> std::copy void Tri ==> std::sort
en c
void Fusion ==> memcpy void Tri ==> qsort
et surtout en c++ pensez à déclaré vaut variable uniquement quand vous en avez besoin, de maniere à pouvoir l'initialiser de suite
|
|
jeudi 25 novembre 2004 à 19:54:50 |
Re : je m'arrache les cheveu avec mes tableau

minet03
|
Je suis content que mon morceau de code soit aprécié. Ce n'est pas souvent dans le quotidien d'un débutant comme moi. Mais comme on dit, y a un début à tout ! Merci
|
|
Cette discussion est classée dans : taille, t1, t2, tab, t3
Répondre à ce message
Sujets en rapport avec ce message
strncat [ par Darkvlador ]
lu !j'ai un problème concernant strncat voilà mon codechar *t1 = "hello";char *t2 = "12mo";char *t3;strncpy(t3, t1, 2);aprèsstrncat(t3, t2, 2);et la q
Concatener 2 tableuax triés [ par Strick9 ]
Salut à tous, je bloque sur l'énoncé suivant.De l'aide serait plus que bienvenue.Ecrire une fonction qui permet d'insérer un tableau d'entier T2 dans
aide c++ [ par jekburn ]
#include #include typedef struct{ int heure; int minute; int seconde;}TEMPS; TEMPS diff(TEMPS t1,TEMPS t2){ TEMPS t3; &n
IOSTREAM [ par hell ]
Bonjour à vous tous je vous remercie de m'aiderIl arrive souvent avec iostream que je ne suis pa capable de voir mon programme il y a toujour cette e
Parsage tableau [ par JAYDEN ]
Bonjour,Désolé de vous déranger mais dans le cadre d'un projet j'ai besoin a un moment donner de parser une suite de binaire et de les stocker dans un
map [ par vecchio56 ]
Bonjour, J'ai une map m. J'ajoute une clé de la manière suivante: m[t1] = T2(...); et tout de suite après j'ai besoin de récupérer l'objet que je vi
transfer de valeur de tableaux à tableaux [ par cabarrus ]
soient 2 tbleaux t1 et t2 déclaré ainsi:float t1[10],t2[10];mon prog doit écrire les instructions permettant de recopier ds t1 tous les éléments posit
Diffence de date [ par keerigan ]
Bonjour ,Je dois calculer une difference de date. A savoir j'ai une date t1 et une date t2 et je dois dire qu'entre ces 2 date il s'est ecoule x secon
Demande d'explication a propos d'un code. [ par Strick9 ]
Salut à tous, j'ai obtenu grâce à se merveilleux site ce code sources pour cet énoncés:un programme permettant de donner toute les combinaison suite a
Taille TAB CONTROL [ par goutbouyo ]
Salut,J'ai crée un TAB CONTROL et j'ai crée une dialog box pour chaque onglet du tab control.Maintenant j'aimerais ajuster la taille du dialog box pou
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|