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

    [C++]: esercizio allocazione dinamica

    ciao a tutti,
    sto facendo questo esercizio sull'allocazione dinamica. Ecco la traccia:
    Scrivere un programma che gestisce un array di record allocato
    dinamicamente. Il record è costituito da un campo "chiave" e da un campo"
    valore". Il programma effettua su tale struttura dati le seguenti
    operazioni:



    1) creazione della struttura

    2) inserimento dei dati

    3) stampa dei dati

    4) distruzione della struttura



    Organizzare il programma sui seguenti file:

    1. Tabella.h: contiene la dichiarazione della struttura "Record", la
    dichiarazione di un tipo "Tabella" puntatore a "Record" e i prototipi delle
    4 funzioni che implementano rispettivamente le 4 funzionalità sopra
    elencate.

    2. Tabella.cpp: Contiene l'implementazione delle 4 funzioni

    3. Main.h: Contiene il programma "main" che dichiara una variabile
    "tabella" di tipo Tabella, una variabile intera "num_entry" che rappresenta
    il numero di elementi dell'array e chiama le funzioni

    Ecco il mio file tabella.h:



    struct Record {
    char chiave;
    int valore;};



    typedef Record* tabella;



    sull'ultima riga non sono sicuro...:-((



    ecco il mio codice per l'inserimento dei dati (non ho ancora fatto la
    funzione, per ora è tutto nel main):



    #include <iostream>
    #include "tabella.h"
    #include <cstdlib>
    int main(int argc, char *argv[])
    { int n;
    tabella tab;
    cout<<"Creazione struttura";
    cout<<"Quante entry?";
    cin>>n;
    tabella a = new Record[n];
    for(int i=0; i<n; i++){
    cout<<"Inserisci la entry di posizione "<<i<<"\n";
    cout<<"chiave?";
    char id;
    cin>>id;
    tab->chiave = new char;
    strcpy(tab->chiave, id);
    cout<<"valore?";
    char val;
    cin>>val;
    tab->valore = new char;
    strcpy(tab->valore, val);

    }
    return 0;
    }



    quando compilo ricevo 6 errori:

    16 main.cpp: assignment to `char' from `char *' lacks a cast

    17 main.cpp: passing `char' to argument 1 of `strcpy(char *, const char *)'
    lacks a cast

    17 main.cpp: passing `char' to argument 2 of `strcpy(char *, const char *)'
    lacks a cast

    21 main.cpp: assignment to `int' from `char *' lacks a cast

    22 main.cpp: passing `int' to argument 1 of `strcpy(char *, const char *)'
    lacks a cast

    22 main.cpp: passing `char' to argument 2 of `strcpy(char *, const char *)'
    lacks a cast


    dove sbaglio???

    ciao!
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  2. #2
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357

    Re: [C++]: esercizio allocazione dinamica

    Originariamente inviato da elevation
    quando compilo ricevo 6 errori:

    16 main.cpp: assignment to `char' from `char *' lacks a cast
    una new ritorna un puntatore;chiave e' un char!non puoi assegnare un puntatore a un char.....

    ora vedo anche le altre

  3. #3
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    cmq mi sa che stai facendo un po' di confusione.....

    dichiari tab....poi a e poi usi solo tab(in modo errato...)

  4. #4
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    codice:
    #include <iostream> 
    #include "tabella.h" 
    #include <cstdlib> 
    int main(int argc, char *argv[]) 
    { int n; 
    
    cout<<"Creazione struttura"; 
    cout<<"Quante entry?"; 
    cin>>n; 
    tabella tab = new Record[n]; 
    for(int i=0; i<n; i++){ 
    cout<<"Inserisci la entry di posizione "<<i<<"\n"; 
    cout<<"chiave?"; 
     cin>>tab->chiave;  
    cout<<"valore?"; 
     cin>>tab->valore; 
    } 
    return 0; 
    }

  5. #5
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    Originariamente inviato da Zalex
    codice:
    #include <iostream> 
    #include "tabella.h" 
    #include <cstdlib> 
    int main(int argc, char *argv[]) 
    { int n; 
    
    cout<<"Creazione struttura"; 
    cout<<"Quante entry?"; 
    cin>>n; 
    tabella tab = new Record[n]; 
    for(int i=0; i<n; i++){ 
    cout<<"Inserisci la entry di posizione "<<i<<"\n"; 
    cout<<"chiave?"; 
     cin>>tab->chiave;  
    cout<<"valore?"; 
     cin>>tab->valore; 
    } 
    return 0; 
    }

    sono ubriaco

  6. #6
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    ecco il codice giusto
    codice:
    #include <iostream> 
    #include "tabella.h" 
    #include <cstdlib> 
    void stampa(tabella,int);
    
    int main(int argc, char *argv[]) 
    { int n; 
    
    cout<<"Creazione struttura"; 
    cout<<"Quante entry?"; 
    cin>>n; 
    tabella tab = new Record[n]; 
    for(int i=0; i<n; i++){ 
    cout<<"Inserisci la entry di posizione "<<i<<"\n"; 
    cout<<"chiave?";
     cin>>tab[i].chiave;  
    cout<<"valore?"; 
     cin>>tab[i].valore; 
    } 
    
     stampa(tab,n);
    return 0; 
    } 
    
    
    void stampa(tabella t,int dim){
      for(int i=0;i<dim;i++)
        cout<<"Chiave: "<<t[i].chiave<<"  |  Valore: "<<t[i].valore<<endl;
    }
    ciao

  7. #7
    thanks!
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  8. #8
    Mi sono permesso di inserirlo nei rispettivi file

    main.cpp
    codice:
    /*
    3. Main.cpp: Contiene il programma "main" che dichiara una variabile 
    "tabella" di tipo Tabella, una variabile intera "num_entry" che
     rappresenta il numero di elementi dell'array e chiama le funzioni.
    */
    
    #include <iostream>
    #include "funzioni.h"
    using namespace std;
    
    int main()
    {
        Tabella tabella = NULL;
    	
        int num_entry;
    
        cout << "Inserisci il numero dei record da inserire: ";
        cin >> num_entry;
        
        tabella = creazione_struttura(tabella, num_entry);
    
        tabella = inserimento_dati(tabella, num_entry);
    
        stampa_dati(tabella, num_entry);
    
        distruzione_struttura(tabella);
    
        return 0;
    }
    funzioni.h // <-- era tabella.cpp
    codice:
    /*
    2. Funzioni.h: Contiene l'implementazione delle 4 funzioni 
    */
    
    #include <iostream>
    #include "tabella.h"
    using namespace std;
    
    Tabella creazione_struttura(Tabella p, int n)
    {
        try{
    	p = new Record[n];
    	cout << "Struttura creata con successo\n";
        } catch(bad_alloc xa){
            cout << "Errore di allocazione\n";
    	exit(1);
        }
       
        return p;
    }
    
    
    
    Tabella inserimento_dati(Tabella p, int n)
    {
        for (int i = 0; i < n; i++)
        {
    	cout << "Record N. " << i+1 << " di " << n << endl << "Inserisci CHIAVE: ";
    	cin >> p[i].chiave;
    	cout << "Inserisci VALORE: ";
    	cin >> p[i].valore;
        }
    
        return p;
    }
    
    
    
    void stampa_dati(Tabella p, int n)
    {
        for(int i = 0; i < n; i++)
            cout << "CHIAVE: " << p[i].chiave << ", VALORE: " << p[i].valore << endl;
    }
    
    
    
    void distruzione_struttura(Tabella p)
    {
        p = NULL;
        delete [] p;
        cout << "Struttura distrutta con successo\n";
    }
    tabella.h
    codice:
    /*
    1. Tabella.h: contiene la dichiarazione della struttura "Record", 
    la dichiarazione di un tipo "Tabella" puntatore a "Record" 
    e i prototipi delle 4 funzioni che implementano 
    rispettivamente le 4 funzionalità sopra elencate. 
    */
    
    struct Record
    {
        int chiave;
        char valore[20];
    };
    
    typedef Record *Tabella;
    
    
    Tabella creazione_struttura(Tabella, int);
    
    Tabella inserimento_dati(Tabella, int);
    
    void stampa_dati(Tabella, int);
    
    void distruzione_struttura(Tabella);
    ...Terrible warlords, good warlords, and an english song

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.