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++);
}
}