Esercizio sulle Union: idee?

SalvatCpo
//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 :-)

Risposte
Super Squirrel
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.

apatriarca
@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.

SalvatCpo
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 :)

vict85
Direi che è una buona soluzione.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.