Mettendo il ciclo for(j=0;j<riemp2;j++) nel main e richiamando in esso la funzione insert si ha il risultato voluto. Lo sbaglio del primo codice postato stava nel fatto che la funzione insert (non essendo ciclata) non ripeteva il processo di creazione posto, di ricerca,e di inserimento per ogni valore di V2.
Ecco il codice:
codice:
#include<iostream>
#include<stdlib.h>
using namespace std;
void input_V1(int vett1[],int& riemp1);
void input_V2(int vett2[],int& riemp2);
void insert(int vett1[],int vett2[],int& riemp1,int& j);
void output(int vett1[],int riemp1);
int main()
{
int V1[100],V2[100];
int n1,n2;
int j;
input_V1(V1,n1);
input_V2(V2,n2);
for(j=0;j<n2;j++)
{
insert(V1,V2,n1,j);
}
output(V1,n1);
system("PAUSE");
return 0;
}
//Funzione input V1;
void input_V1(int vett1[],int& riemp1)
{
int i;
cout<<"\nAssegna valore intero al riempiemnto di V1:\t";
cin>>riemp1;
cout<<"\n\nAssegna "<<riemp1<<" valori interi a V1;\n";
for(i=0;i<riemp1;i++)
{
cin>>vett1[i];
}
}
//Funzione input V2;
void input_V2(int vett2[],int& riemp2)
{
int i;
cout<<"\nAssegna valore intero al riempiemnto di V2:\t";
cin>>riemp2;
cout<<"\n\nAssegna "<<riemp2<<" valori interi a V2;\n";
for(i=0;i<riemp2;i++)
{
cin>>vett2[i];
}
}
//Funzione insert;
void ric_posto(int vett1[],int vett2[],int riemp1,int& i,int& ins,int& j);
void insert(int vett1[],int vett2[],int& riemp1,int& j)
{
int i,k,ins;
ric_posto(vett1,vett2,riemp1,i,ins,j);
if(ins)
{
for(k=riemp1-1;k>=i;k--)
{
vett1[k+1]=vett1[k];
}
vett1[i]=vett2[j];
}
else
vett1[i+1]=vett2[j];
riemp1++;
}
void ric_posto(int vett1[],int vett2[],int riemp1,int& i,int& ins,int& j)
{
i=0; ins=0;
while(i<riemp1 && !ins)
{
ins=vett1[i]>vett2[j];
i++;
}
i--;
}
//Funzione output;
void output(int vett1[],int riemp1)
{
int i;
cout<<"\n\n V = ";
for(i=0;i<riemp1;i++)
{
cout<<vett1[i]<<" ";
}
cout<<"\n\n";
}
Ciao e grazie ancora..Blind