Bonjour à tous,

Comme dit dans le titre, à partir de deux tableaux triés distincts, je dois en créer un 3ème qui est la fusion des deux précédents, également trié.

Voici mon code, pour le tri des deux premiers tableaux ça va, mais c'est plus la fusion qui me pose problème à vrai dire, je pense que mon code n'est pas correct mais je ne vois pas d'autre manière de traiter le problème

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <stdio.h>
#include <stdlib.h>
 
int lecture1 (int tab1[])
{
    int nb;
    int tabtemp1;
    nb=0;
 
    do
    {
         printf("nombre:" );
         scanf("%d",&tabtemp1);
         nb++;
         tab1[nb]=tabtemp1;
    }
    while (tabtemp1!=-1);
    return nb;
}
 
int lecture2 (int tab2[])
{
    int nb2;
    int tabtemp2;
    nb2=0;
 
    do
    {
         printf("nombre:" );
         scanf("%d",&tabtemp2);
         nb2++;
         tab2[nb2]=tabtemp2;
    }
    while (tabtemp2!=-1);
    return nb2;
}
 
void tri1 (int tab1[],int nb1)
{
     int i,j,temp;
 
     for(i=0;i<(nb1-1);i++)
     {
                         for(j=i+1;j<nb1;j++)
                         {
                                           if(tab1[j]<tab1[i])
                                           {
                                                           temp=tab1[i];
                                                           tab1[i]=tab1[j];
                                                           tab1[j]=temp;
                                           }
                         }
     }
}
 
void tri2 (int tab2[],int nb2)
{
     int k,l,temp;
 
     for(k=0;k<(nb2-1);k++)
     {
                         for(l=k+1;l<nb2;l++)
                         {
                                           if(tab2[l]<tab2[k])
                                           {
                                                           temp=tab2[k];
                                                           tab2[k]=tab2[l];
                                                           tab2[l]=temp;
                                           }
                         }
     }
}
 
int fusion(int tabf[],int tab1[],int tab2[],int nb1, int nb2)
{
    for (f=0;f<=nb1;f++)
    {
        if (tab1[f]<tab2[f])
        {
                            tabf[f]=tab1[f];
                            tabf[f+1]=tab2[f];
        }
        else if (tab2[f]<tab1[f])
        {
             tabf[f]=tab2[f];
             tabf[f+1]=tab1[f];
        }
    }
    return f;
}
 
void affiche(int tab[],int f)
{
     int i,j;
    printf("le vecteur trie est:\n\n");
    for(i=0;i<=f-1;i++)
    {
                      printf(" %d ",tab[i]);
    }
}
 
int main()
{
    int nb1,nb2,tab1[50],tab2[50],tabf[100],f;
 
    nb1=lecture1(tab1);
    nb2=lecture2(tab2);
    f=fusion(tabf,tab1,tab2,nb1,nb2);
    affiche(tabf,f);
    system("pause");
}
Merci!