Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C++] Inserimento elemento in un vettore

    Salve, ragazzi, avrei un problemino con un algoritmo...ho due vettori v1 e v2...v1 è composto da elementi inseriti in ordine crescente mentre v2 sono inseriti casualmente...io devo fare un programma che inserisca gli elementi di v2 in v1 nel posto giusto in modo tale che gli elementi continuano ad essere in ordine crescente...ho fatto un algoritmo ma mi va in crash il programma e non capisco quale sia il motivo, potete aiutarmi a capire dov'è l'errore? vi posto il codice con la traccia anche:

    codice:
    /*Prova 4
    Siano assegnati in ingresso, da tastiera, due vettori di interi V1 ed V2, 
    ed i loro riempimenti n1 ed n2. Si supponga che gli elementi del vettore V1 
    siano ordinati in senso crescente. Si scriva un programma che inserisca in 
    ordine nel vettore V1 tutti gli elementi del vettore V2. Si stampi quindi il 
    vettore V1 modificato. Il programma deve essere articolato in funzioni 
    (ad es.: input, output, inserisci). Suggerimento: la funzione inserisci riceve 
    in ingresso n1, V1, n2 e V2 e modifica il vettore V1 ed il suo riempimento.
    Esempio
    INPUT:	n1 =  7		V1 =  1 4 7 9 12 15 22 	n2 =  4		V2 =  14 3 5 25
    OUTPUT:	V1 = 1 3 4 5 7 9 12 14 15 22 25
    
    */
    
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    /*PROTOTIPI FUNZIONI*/
    void input (int vett1[], int vett2[], int &riemp1, int &riemp2);    //funz. input
    void insert (int vett1[], int vett2[], int &riemp1, int riemp2);      //funz. inserimetno
    
    
    int main()
    { int v1[100],v2[100];
      int n1,n2;
        
      input (v1,v2,n1,n2);    //chiamata a funzione
      insert(v1,v2,n1,n2);    //chiamata a funzione inserimento
          
        system("PAUSE");
        return 0;
    }
    
    /*DEFINIZIONI FUNZIONI*/
    
    //funz. input
    void input (int vett1[], int vett2[], int &riemp1, int &riemp2)
    { int i; //variabile scorrimento vettore
      /*Istruzioni di richiesta input valori, prima si assegnano i riempimenti dei
      due vettori e in seguito si richiede di inserire i singoli componenti dei due
      vettori, con esplicita richiesta che gli elementi di V1 devono essere inseriti 
      ordine crescente.*/
    
      cout<<"Si assegnino due interi ai riempimenti N1 ed N2: \n";
      cin>>riemp1>>riemp2;
      
      cout<<"Si assegnino "<<riemp1<<" elementi interi in ordine crescente a V1: \n";
      for(i=0;i<riemp1;i++)
      cin>>vett1[i];
      
      cout<<"\n";
      cout<<"Si assegnino "<<riemp2<<" elementi interi a V2: \n";
      for(i=0;i<riemp2;i++)
      cin>>vett2[i];
      
      cout<<"\n";
    }  //end funzione input 
    
    //funzione di inserimento
    void insert (int vett1[], int vett2[], int &riemp1, int riemp2)
    {int i,j,k; //variabili di scorrimento nei cicli for
    
      /*Spiegazione algoritmo: con il primo ciclo si analizzano tutti gli elementi 
      di v2. Ad ogni elemento [i] poi si apre un altro ciclo for che controlla tutti
      gli elementi [j] di v1 finchè non trova l'elemento >= dell'elemento [i]analizzato
       di v2. A questo punto allora si incrementa di 1 il riempimento di v1 e si apre un 
      ulteriore ciclo for che sposta a partire dall'ultimo elemento [k] tutti gli elementi
      di v1 di un posto in avanti fino ad arrivare all'elemento [j] analizzato, si esce 
      dal ciclo e nella posizione di quest'ultimo elemento [j] si inserisce 
      l'elemento di v2 di posto [i] analizzato.*/
      
     for(i=0;i<riemp2;i++)
     { for(j=0;j<riemp1;j++)
        { if (vett1[j]>= vett2[i])
            { riemp1++;
              for(k=riemp1;k>=j;k--)
              {vett1[k]=vett1[k-1];}
              vett1[j]=vett2[i];
            } 
        }     
      }   
      
      //cout di prova
      cout<<"nuovo riemp"<<riemp1;
      cout<<"nuovi elementi \n";
      for(i=0;i<riemp1;i++)
      cout<<vett1[i]<<"\t";     
    }

  2. #2
    up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.