Un problema mi sta facendo dannare l'anima e quindi mi rivolgo a voi per un aiuto da esperti!
Devo scrivere un programma, ma continua a darmi certi errori che non capisco bene.
Vi allego il testo dell'esercizio e il mio sorgente per cercare di capire cosa non va.
ps: suggerimenti per migliorare sono ben accetti.
Testo del problema
Codice: Seleziona tutto
#include <stdio.h>
struct persona //creo la struct
{ char nome[10];
struct persona * mamma;
struct persona * babbo;
} ;
typedef struct persona Persona; //sì, potevo farlo diretto
void ins_nome(Persona *d, Persona *e, Persona *f) //inserisco i nomi delle 3 struct
{ int i;
for (i=0; i<10; i++)
scanf("%c", &d->nome[i]);
for (i=0; i<10; i++)
scanf("%c", &e->nome[i]);
for (i=0; i<10; i++)
scanf("%c", &f->nome[i]);
}
void ins_genitori(Persona *x, Persona *y, Persona *z) //associo le struct
{ char temp;
if(y->nome!=NULL)
for(int i=0;i<10;i++)
{ temp=y->nome[i];
x->mamma->nome[i]=temp;
}
if(z->nome!=NULL)
for(int i=0;i<10;i++)
{ temp=z->nome[i];
x->babbo->nome[i]=temp;
}
}
void print_persona (Persona w) //stampa output nel formato richiesto
{ int i;
for(i=0;i<10;i++)
printf("%c", w.nome[i]);
printf("\n");
{ if (&mamma.nome != NULL)
for(i=0;i<10;i++)
printf("%c", mamma.nome[i]);
else
printf("Sconosciuto");
}
/*error: ‘mamma’ undeclared (first use in this function)
{ if (&mamma.nome != NULL)
^~~~~
famiglia.c:36:9: note: each undeclared identifier is reported only once for each function it appears in*/
//idem nel blocco successivo
{ if (&babbo.nome != NULL)
for(i=0;i<10;i++)
printf("%c", babbo.nome[i]);
else
printf("Sconosciuto");
}
printf("\n");
}
int main()
{ Persona figlio, madre, padre, ignoto; //creo le 4 struct
ins_nome(&figlio, &madre, &padre); //inserisco i nomi negli array
figlio.mamma=&madre; //associo figlio con genitori
figlio.babbo=&padre;
ins_genitori(&figlio, &madre, &padre); //inserisco i nomi dei genitori
ins_genitori(&madre, &ignoto, &ignoto);
ins_genitori(&padre, &ignoto, &ignoto);
print_persona(figlio); //stampo le stringhe richieste
print_persona(madre);
print_persona(padre);
return 0;
}
(Spero di aver azzeccato la sezione giusta )