Esercizio sulle Union: idee?
//In uno zoo, i felini sono contrassegnati con delle lettere mentre le scimmie con dei numeri.
//Scrivi un programma che prenda contrassegno, specie ed età di 10 animali.
#include
#include
#include
int main()
{
struct animale {
char specie[20];
int age;
union {
int n;
char c;
} contrassegno;
} animali[10];
int i=0;
while (i<10)
{
printf ("Dammi specie, età e contrassegno: ");
scanf ("%s", &animali.specie);
scanf ("%d", &animali.age);
???
i++;
}
system ("PAUSE");
return 0;
}
NON SO COME CHIEDERE IL CONTRASSEGNO, DATO CHE NELLA SCANF NON POSSO SAPERE A PRIORI SE E' UN INTERO O UN CARATTERE.
DOVE HO MESSO I PUNTINI INTERROGATIVI... CHE RIGA DI CODICE DOVREBBE ESSERCI?
Grazie in anticipo
//Scrivi un programma che prenda contrassegno, specie ed età di 10 animali.
#include
#include
#include
int main()
{
struct animale {
char specie[20];
int age;
union {
int n;
char c;
} contrassegno;
} animali[10];
int i=0;
while (i<10)
{
printf ("Dammi specie, età e contrassegno: ");
scanf ("%s", &animali.specie);
scanf ("%d", &animali.age);
???
i++;
}
system ("PAUSE");
return 0;
}
NON SO COME CHIEDERE IL CONTRASSEGNO, DATO CHE NELLA SCANF NON POSSO SAPERE A PRIORI SE E' UN INTERO O UN CARATTERE.
DOVE HO MESSO I PUNTINI INTERROGATIVI... CHE RIGA DI CODICE DOVREBBE ESSERCI?
Grazie in anticipo

Risposte
Non mi ero mai imbattuto nelle union prima d'ora, ho appena letto cosa sono. 
Per quanto riguarda la tua domanda, potresti controllare con un if se sei nel caso "felino" o nel caso "scimmia" e regolarti di conseguenza prevedendo due diverse scanf.

Per quanto riguarda la tua domanda, potresti controllare con un if se sei nel caso "felino" o nel caso "scimmia" e regolarti di conseguenza prevedendo due diverse scanf.
@SuperSquirrel ha ragione.. Devi usare un if che confronti il valore letto con "scimmia" o "felino" (non è chiaro come tu debba agire nel caso in cui il valore letto sia diverso da questi due valori.. immagino mostrare un errore) e quindi leggere il valore diversamente in base al risultato di questo confronto.
beh, nell'if dovrei mettere un confronto con tutti i felini e con tutte le scimmie esistenti...
quindi preferisco chiedere direttamente all'utente "stai inserendo una scimmia o un felino?" e poi differenziare le due scanf come avete suggerito. Grazie dell'aiuto
quindi preferisco chiedere direttamente all'utente "stai inserendo una scimmia o un felino?" e poi differenziare le due scanf come avete suggerito. Grazie dell'aiuto

Direi che è una buona soluzione.