Problemi con struct

di il
4 risposte

Problemi con struct

Buongiorno a tutti, ho scritto il seguente codice che dopo aver digitato le varie informazioni (Nome, età eccc...) da in output dei valori strani, vi allego lo screenshot di quello che mi da in output.

Vi allego tutto il codice del programmma:
#include <iostream>
using namespace std;

//Dichiarazione structure
struct impiegato
{
	struct persona *info;
	int salario;
	int ore_lavoro;
};

struct persona 
{
	char nome[20];
	int eta;
	char altezza[6];
	struct data_nascita *data_di_nascita;
};

struct data_nascita
{
	int giorno;
	int mese;
	int anno;
};
//Prototipi
void input_persona(persona x);
void input_data(data_nascita dati);
void input_persona(persona x);
void visualizza_info(data_nascita dati, persona y, impiegato x);
//Programma
void input_data(data_nascita dati)
{
	cout << "Inserisci il giorno di nascita: "; cin >> dati.giorno;
	cout << "Inserisci il mese di nascita: "; cin >> dati.mese;
	cout << "Inserisci l'anno di nascita: "; cin >> dati.anno;
}

void input_persona(persona y)
{
	cout << "Inserisci il nome: "; cin >> y.nome;
	cout << "Inserisci l'eta': "; cin >> y.eta;
	cout << "Inserisci l'altezza: "; cin >> y.altezza;
}

void input_impiegato(impiegato x)
{
	cout << "Inserisci il salario "; cin >> x.salario;
	cout << "Inserisci le ore di lavoro: "; cin >> x.ore_lavoro;
}

void visualizza_info(data_nascita dati, persona y, impiegato x)
{
	cout << "Nome: " << y.nome << endl;
	cout << "Eta': " << y.eta << endl;
	cout << "Altezza: " << y.altezza << endl;
	cout << "Salario: " << x.salario << endl;
	cout << "Ore di lavoro: " << x.ore_lavoro << endl;
	cout << "Data di nascita (gg/mm/aaaa): " << dati.giorno << "/" <<  dati.mese << "/" << dati.anno << endl;
}

int main(void)
{
	persona y;
	impiegato x;
	data_nascita dati;
	input_persona (y);
	input_impiegato (x);
	input_data (dati);
	void visualizza_info(data_nascita dati, persona y, impiegato x);
}

Allegati:
26264_7aaf29519245917442b63c1f0dbaa3a2.png
26264_7aaf29519245917442b63c1f0dbaa3a2.png

4 Risposte

  • Re: Problemi con struct

    Angelo99Franciamore ha scritto:


    
    	struct persona *info;
    	struct data_nascita *data_di_nascita;
    
    Perché dichiari dei puntatori?
    Se lo fai, poi devi allocare la memoria, etc...
  • Re: Problemi con struct

    nicolap ha scritto:


    Angelo99Franciamore ha scritto:


    
    	struct persona *info;
    	struct data_nascita *data_di_nascita;
    
    Perché dichiari dei puntatori?
    Se lo fai, poi devi allocare la memoria, etc...
    Sono riuscito a risolvere il problema, avevo sbagliato a dichiarare i prototipi. Comunque se non dichiaro dei puntatori mi da questo errore
    Allegati:
    26264_eed10cee977bf0f823e0594631279929.png
    26264_eed10cee977bf0f823e0594631279929.png
  • Re: Problemi con struct

    La butto lì, a te controllare se le cose stanno o non stanno così...

    Nella struct impiegato, il campo info è un puntatore, così come nella struct persona il campo data_di_nascita. Un puntatore si suppone che punti a qualcosa che "concretamente" occupa spazio in memoria. Nel tuo programma, a una rapida occhiata, non ho trovato quel qualcosa (magari m'è sfuggito, chissà).

    In secondo luogo, quando nel main() chiami le varie funzioni input_xxx() passi parametri per valore, aspettandoti che vengano modificati. In realtà, quel che modifichi nelle funzion è UNA COPIA del dato che hai passato nel corso della chiamata (l'originale rimane intatto).

    Fai tutte le tue verifiche, mi raccomando.
  • Re: Problemi con struct

    Angelo99Franciamore ha scritto:


    nicolap ha scritto:


    Angelo99Franciamore ha scritto:


    
    	struct persona *info;
    	struct data_nascita *data_di_nascita;
    
    Perché dichiari dei puntatori?
    Se lo fai, poi devi allocare la memoria, etc...
    Sono riuscito a risolvere il problema, avevo sbagliato a dichiarare i prototipi. Comunque se non dichiaro dei puntatori mi da questo errore
    Infatti hai sbagliato: stai dichiarando le strutture nell'ordine inverso. Come fai a dichiarare una struttura usando una struttura che dichiari più sotto?
Devi accedere o registrarti per scrivere nel forum
4 risposte