devo fare questo esercizio:
Definire le strutture necessarie a ospitare le informazioni relative all'anagrafica di
studenti e insegnanti. È sufficiente una rappresentazione semplificata delle
informazioni che effettivamente si vorrebbe potere memorizzare.
Riutilizzare per quanto possibile membri comuni. Per esempio l’indirizzo, che
potrebbe essere composto dei membri via_corso_piazza, numero_civico,
cap, citta, nazione è comune sia agli studenti sia agli insegnanti.
Definire inoltre la struttura necessaria a descrivere i libri (titolo, autore/i, editore,
ISBN, argomento, anno di pubblicazione, indirizzo web, etc.).
Definire una struttura corso, contenente uno o più insegnanti, un numero variabile
di studenti, e uno o più libri di testo.
ATTENZIONE! È necessario definire tutti gli oggetti complessi. Per esempio
l'indirizzo, membro delle strutture studenti e insegnanti, è a sua volta una struttura.
Scrivere le funzioni per l'immissione delle informazioni relative a tutte le strutture (e
relativi membri) menzionate nell'esercizio precedente, e per la visualizzazione.
Sperimentare il passaggio delle strutture sia per valore sia per riferimento.
ho provato a fare cosi ma mi da errore
codice:#include<stdio.h> #include<string.h> struct data_nascita{ int giorno; char mese[10]; int anno; }; struct indirizzo{ char via[300]; int numero; int CAP; char nazione[30]; char citta[30]; char provincia[2]; }; struct studenti{ char nome[20]; char cognome [20]; struct data_nascita d_t; struct indirizzo ind; int matricola; }; struct insegnanti{ char nome[20]; char cognome [20]; struct data_nascita d_t; struct indirizzo ind; }; struct libri{ char titolo[30]; char autore[30]; char editore[30]; char ISBN[30]; int anno_publicazione; }; struct corso{ struct studenti std; struct insegnanti ins; struct libri lib; }; int ins (int); void vis (struct corso *); void vis_cor(void); struct corso b[10]; int ind =0; main(){ printf("1. inserisci\n 2.visualizza\n "); int scelta; scanf("%d",&scelta); switch (scelta){ case 1: ind = ins(ind); break; case 2: vis_cor(); break; } } int ins(int a){ if(a>10){ printf("non ce piu spazio"); } printf("inserisci"); printf("studenti"); gets(b[a].std); printf("insegnanti"); gets(b[a].ins); printf("libri"); gets(b[a].lib); a++; return(a); } void vis(struct corso *p){ printf("studente %s", p->std); printf("insegnante %s",p->ins) ; printf("libro %s", p->lib); } void vis_cor(void){ int i; struct corso *ps = &b[0]; for(i=0; i<ind;i++){ vis(ps++); } }

Rispondi quotando