Inserimento in lista di una variabile allocata dinamicamente

di il
5 risposte

Inserimento in lista di una variabile allocata dinamicamente

Buonasera, sto scrivendo un codice per la preparazione di un esame, in parole povere la traccia richiede,anche,di inserire in lista un nodo avente due stringhe allocate dinamicamente,il codice l'ho prima scritto allocando staticamente le stringhe al momento della dichiarazione del nodo e lista, e funziona tutto come si deve,il problema si verifica quando provo a rifarlo dichiarando le stringhe del nodo dinamicamente. Premetto che ho già cambiato le reference infatti, il codice va in exe, ma,al momento dell'inserimento,che sia ordinato o in testa, mi copia l'ultima stringa passata in input in tutto i nodi inseriti.

ESEMPIO
inserendo delle automobili per modello,marca,cilindrata che siano;

INPUT
Giulietta Alfa Romeo 1600
Evoque Range Rover 2000
California Ferrari 3000

OUTPUT (stampa della lista)
California Ferrari 1600
California Ferrari 2000
California Ferrari 3000

5 Risposte

  • Re: Inserimento in lista di una variabile allocata dinamicamente

    E il codice quale sarebbe?
  • Re: Inserimento in lista di una variabile allocata dinamicamente

    Chiedo scusa pubblico subito,
    
    #include <iostream>
    #include "libreria.h"
    #include "funzioni.h"
    
    using namespace std;
    
    int main() {
    
    	lista macchine;
    	macchine.first=0;
    	int ci;
        int k,cont=0;
        lista newcar;
        newcar.first=0;
        string* mo=new string;
        string* ma=new string;
        int cil2;
        int scelta;
        int n=0;
    	int i=0;
    	int cilminore;
    
    
    
    	do{
    cout<<"ELENCO OPERAZIONI \n"<<endl;
    cout<<"1.INSERIMENTO IN LISTA \n";
    cout<<"2.CONTEGGIO NODI CON CILINDRATA MAGGIORE DI K PRESO IN INGRESSO \n";
    cout<<"3.CREAZIONE LISTA NODI CON VALORE UGUALE A QUELLO FORNITO IN INGRESSO \n";
    cout<<"5.ELIMINAZIONE ELEMENTI MINORI DI CILINDRATA IN LISTA \n";
    cout<<"6.INVERTIRE ELEMENTI DI TESTA E CODA DELLA LISTA \n";
    cout<<"7.SVUOTARE LISTA \n";
    cout<<"8.STAMPA LISTA INIZIALE \n";
    cout<<"9.STAMPA LISTA CREATA \n";
    cout<<"10.EXIT \n";
    
    cout<<"Inserisci operazione da eseguire: ";
    cin>>scelta;
    cout<<endl;
    
    mac* p=new mac;
    switch (scelta){
    
    case (1) :
    
    	cout<<"Quante auto vuoi inserire? ";
    	cin>>n;
    	while (i<n){
    
    		cout<<"Inserisci modello "<<endl;
    		cin.ignore();
    		getline(cin,*mo);
    
    		cout<<"Inserisci marca "<<endl;
    		getline(cin,*ma);
    
    		cout<<"Inserisci ciindrata "<<endl;
    		cin>>ci;
    
    
    
    		//ordinalista (macchine,ci,ma,mo);
    	i++;
    	}
    	cout<<endl;
        break;
    
    case (2) :
    	cout<<"Inserisci soglia cilindrata: ";
    	cin>>k;
    
    	cont=contanodi (macchine,k);
    	cout<<"Automobili con cilindrata maggiore di "<< k <<" "<<cont<<endl;
    	cout<<endl;
    	break;
    
    case (3) :
    	cout<<"Inserisci cilindrata"<<endl;
    	cin>>cil2;
    	listacili (macchine,newcar,cil2);
    	cout<<endl;
    	break;
    
    case (5) :
    	cout<<"Inserisci cilindrata soglia: ";
        cin>>cilminore;
    	eliminapiuvalori (macchine,cilminore);
    	cout<<endl;
    	break;
    
    case (6) :
        inverti (macchine);
         cout<<endl;
        break;
    
    case (7) :
    		svuotalista (macchine);
    	break;
    
    case (8) :
    	stampalista (macchine);
        cout<<endl;
        break;
    
    case (9) :
    	stampalista (newcar);
        cout<<endl;
        break;
    
    case (10) ://ESCI
        break;
    }
    	}while(scelta!=10);
    	return 0;
    }
    

    il sottoprogramma invece per l'inserimento è il seguente:
    #include "libreria.h"
    
    
    void inserimentotesta (lista& l,int cil,string *mar,string *mod){
    
    	mac* p=new mac;
    
    p->cilindrata=cil;
    p->marca=mar;
    p->modello=mod;
    p->next=l.first;
    l.first=p;
    
    }
  • Re: Inserimento in lista di una variabile allocata dinamicamente

    L'allocazione delle stringhe va fatta per ogni elemento non solo all'inizio
  • Re: Inserimento in lista di una variabile allocata dinamicamente

    Perdonami,per ogni elemento cosa intendi
  • Re: Inserimento in lista di una variabile allocata dinamicamente

    Risolto...

    nelle righe del sottoprogramma andavano referenziate le i campi del nodo e del puntatore
    p->cilindrata=cil;
    *p->marca=*mar;
    *p->modello=*mod;
    p->next=l.first;
    l.first=p;
Devi accedere o registrarti per scrivere nel forum
5 risposte