INSERIMENTO ELEMENTO VETTORE

di il
14 risposte

INSERIMENTO ELEMENTO VETTORE

Salve a tutti.. stavo tentando un metodo con passaggio di parametro per indirizzo per inserire un elemento in un vettore. Va tutto bene apparte che mette un elemento a caso nel nuovo elemento e non l'elemento che gli dico io. Vi allego il codice:

#include <iostream>

using namespace std;
const int n=100;
//creazione di un vettore
void creo(int a[],int& dima,int num)
{
    dima=num;
    int i;
    for (i=0;i<dima;i++)
     {
         cout<<"inserire elemento:"<<endl;
         cin>>a[i];
     }
}
//stampa di un vettore
void stampa(int a[],int dima)
{
    for(int i=0;i<dima;i++)
    {
        cout<<endl;
        cout<<a[i];
    }
}
//inserimento di un elemento
void inserimento(int a[],int& dima)
{
    dima++;
    cout<<"inserire l'elemento:"<<endl;
    cin>>a[dima];
}

int main()
{
    cout << "QUESTO PROGRAMMA E' UN CODICE PILOTA CHE SERVE A TESTARE LE SEGUENTI FUNZIONI:" << endl;
    cout<<"CREAZIONE STAMPA  DI UN VETTORE E INSERIMENTO DI UN  ELEMENTO IN UN VETTORE.."<<endl;
    cout<<endl;
    int dimv;
    int v[n];
    cout<<"Quanti elementi vuoi inserire?"<<endl;
    int numero;
    cin>>numero;
    cout<<endl;
    creo(v,dimv,numero);
    cout<<endl;
    cout<<"Il vettore creato e' il seguente :"<<endl;
    stampa(v,dimv);
    cout<<endl;
    cout<<"inserimento di un valore"<<endl;
    cout<<endl;
    cout<<"inserire il nuovo valore"<<endl;
    inserimento(v,dimv);
    cout<<endl;
    cout<<"il nuovo vettore creato e' il seguente"<<endl;
    stampa(v,dimv);
    cout<<endl;
    return 0;
}
Grazie anticipatamente a tutti coloro che mi aiuteranno.

14 Risposte

  • Re: INSERIMENTO ELEMENTO VETTORE

    C'è qualcuno?
  • Re: INSERIMENTO ELEMENTO VETTORE

    Dov'è il passaggio per riferimento e cos'è questo nella funzione inserimento:
    
    dima++;
    
    Passare per riferimento un int non ha senso in termini di velocità o di codice.
  • Re: INSERIMENTO ELEMENTO VETTORE

    Praticamente io ho un vettore con dimensione fisica n=100 poi però voglio lavorare sulla dimensione logica. quindi per sapere quanti elementi ho utilizzo int&dima che è la mia dimensione logica. dopo aver creato un array. se voglio inserire un altro elemento ho bisogno di aumentare di 1 la dimensione logica quindi dima++.
  • Re: INSERIMENTO ELEMENTO VETTORE

    Ma vuoi inserire o sostituire un elemento?
  • Re: INSERIMENTO ELEMENTO VETTORE

    Inserire, appunto aumento la dimensione logica.
  • Re: INSERIMENTO ELEMENTO VETTORE

    Forse ho fatto un ragionamento sbagliato?
  • Re: INSERIMENTO ELEMENTO VETTORE

    No il raggionamento è giusto ma i tuoi conti sono sbagliati. Prova questo.
    
    void inserimento(int a[],int& dima)
        {
            cout<<"inserire l'elemento:"<<endl;
            cin>>a[dima];
    		++dima;
        }
    
    e' sempre il debug che vi frega. Usatelo e non avrete di sti problemi.
  • Re: INSERIMENTO ELEMENTO VETTORE

    Si cosi va.. però se posso chiederti spiegazioni perchè io logicamente avrei detto se devo inserire un nuovo elemento aumento la dimensione logica cosi ho spazio e posso inserire. invece tu prima inserisci e poi aumenti la dimensione, non dovrebbe esserci una sovrapposizione?
  • Re: INSERIMENTO ELEMENTO VETTORE

    Vedi la funzione creo. Tu li dici di creare supponiamo 3 elementi e metti dim = num = 3. Inseriti i tre elementi questi vanno a 0 a 2. Nella funzione inserimento tu faccevi ++dima incrementando dima a 4. cin >> a[dima] inserisce nella posizione a[4] tralasciando a[3]. la funzione stampa non ti stampava la a[4] perche i andava da 0 a 3.
  • Re: INSERIMENTO ELEMENTO VETTORE

    Ah ho capito non consideravo la partenza dell'indice da zero.
  • Re: INSERIMENTO ELEMENTO VETTORE

    Avresti un video di youtube che spiega il debug?
  • Re: INSERIMENTO ELEMENTO VETTORE

    Io no ma youtube si. dipende dal tuo compilatore.
  • Re: INSERIMENTO ELEMENTO VETTORE

    Utilizzo codeblocks magari conoscevi un video ad hoc
  • Re: INSERIMENTO ELEMENTO VETTORE

    http://www.youtube.com/watch?v=uVz0IaIh8T
Devi accedere o registrarti per scrivere nel forum
14 risposte