PDA

Visualizza la versione completa : [C] problemi con "enum"


LucaBB
23-04-2013, 16:23
Ciao,
ho difficoltà a capire il tipo enum, ho svolto un esercizio, ma non riesco ad assegnare i valori,
segue testo esercizio e mia soluzione.
*********************************
Archivi di CD musicali
Si considerino 2 archivi di CD A e B con un numero di Max 100 posizioni, caratterizzati da un codice numerico (no progressivo), il titolo, se italiano o no (0 o 1), se gruppi o cantanti singoli (0 o 1), la quantità ed il prezzo unitario, nell’archivio A vanno messi i CD italiani ed in B quelli stranieri.

Scrivere in C un programma che:
1) Legge da tastiera il codice numerico di un CD, e gli altri dati, ed a secondo della nazionalità determina se metterlo nello archivio A od in quello B (possibilmente utilizzando una funzione inserisci), curandosi di non lasciare alcuna posizione libera negli archivi.
*************************************




#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef enum {SI=0,NO=1} boolean;
typedef boolean risposta;

typedef struct {
int codice;
char titolo[20];
boolean italiano;
boolean gruppo;
int quantita;
float prezzo;} CD;

#define MAX 100

typedef CD Archivio[MAX];

void inserisci (Archivio A, Archivio B);

int main() {
Archivio A={0};
Archivio B={0};

system("PAUSE");
return 0;
}


void inserisci (Archivio A, Archivio B) {
char buffer[3];
risposta r;
int done=0;
int i=0;
do {
printf("Ci sono degli arrivi da inserire in magazzino? dgt SI per conferma\n");
scanf("%s",buffer);

printf("Il gruppo del CD n.ro % e italiano? rispondi SI/NO\n",i+1);
scanf("%s",buffer);
if(!strcmp(buffer,"SI")) {
A[i].italiano=0; //ERRORE
printf("Inserisci il codice del CD n.ro %d\n",i+1);
scanf("%d",&A[i].codice);
printf("Inserisci il titolo del CD n.ro %d\n",i+1);
scanf("%s",A[i].titolo);
printf("Per il CD n.ro %d Inserisci %d se gruppo %d se singolo\n",i+1,SI,NO);
scanf("%d",&r);
printf("Inserisci la quantita di CD n.ro %d\n",i+1);
scanf("%d",&A[i].quantita);
printf("Inserisci il prezzo del CD n.ro %d\n",i+1);
scanf("%f",&A[i].prezzo);
i++;
}
else if (!strcmp(buffer,"NO")) {
B[i].italiano=1; //ERRORE
printf("Inserisci il codice del CD n.ro %d\n",i+1);
scanf("%d",&B[i].codice);
printf("Inserisci il titolo del CD n.ro %d\n",i+1);
scanf("%s",B[i].titolo);
printf("Per il CD n.ro %d Inserisci %d se gruppo %d se singolo\n",i+1,SI,NO);
scanf("%d",&r);
printf("Inserisci la quantita di CD n.ro %d\n",i+1);
scanf("%d",&B[i].quantita);
printf("Inserisci il prezzo del CD n.ro %d\n",i+1);
scanf("%f",&B[i].prezzo);
i++;
}
else
done=1;
} while(!done);
}


Grazie mille

Loading