23/02/10 20:56
ssc
ciao a tutti mi servirebbe le correzione di questo progetto entro domani perchè devo consegnarlo...mi da 3 errori...
il testo
Si supponga di voler gestire un archivio di dischi. Supponiamo di avere n categorie
musicali identificate da un codice numerico e dal nome del genere (jazz, rock, punk,
ecc..) e di disporre di possibili dischi identificati da un titolo, autore e prezzo. Per
gni categoria è possibile inserire fino a m prodotti.
Gestire l’archivio in modo tale che l’utente può
· Data una categoria inserire un nuovo disco se è possibile. Considerare anche
le posizioni dei prodotti eventualmente venduti.
· Dato solo il titolo eliminare un prodotto.
· Restituire il titolo e la categoria del disco con prezzo minore.
il codice cn i relativi errori
ERRORI
C:\Users\Rita\Desktop\Nuova cartella (2)\stella.c(65) : error C2198: 'trova_prezzo_minore' : too few actual parameters
C:\Users\Rita\Desktop\Nuova cartella (2)\stella.c(72) : error C2198: 'elimina_disco' : too few actual parameters
C:\Users\Rita\Desktop\Nuova cartella (2)\stella.c(108) : error C2059: syntax error : 'type'
Error executing cl.exe.
stella.obj - 3 error(s), 0 warning(s)
EDIT by HeDo: Il codice va racchiuso tra i tag code
il testo
Si supponga di voler gestire un archivio di dischi. Supponiamo di avere n categorie
musicali identificate da un codice numerico e dal nome del genere (jazz, rock, punk,
ecc..) e di disporre di possibili dischi identificati da un titolo, autore e prezzo. Per
gni categoria è possibile inserire fino a m prodotti.
Gestire l’archivio in modo tale che l’utente può
· Data una categoria inserire un nuovo disco se è possibile. Considerare anche
le posizioni dei prodotti eventualmente venduti.
· Dato solo il titolo eliminare un prodotto.
· Restituire il titolo e la categoria del disco con prezzo minore.
il codice cn i relativi errori
#include <stdio.h> #include <stdlib.h> #include <string.h> #define M 5 #define N 15 typedef struct { char titolo[N]; char autore[N]; int prezzo; } Disco; enum Categorie { ROCK, JAZZ, POP, HOUSE, ITALIANO, LATINO, CATEGORIE }; typedef struct { char genere[N]; int codice; int dischi; Disco disco[M]; } Categoria; Categoria categoria[CATEGORIE]; Disco disco[M]; int record_inseriti; void visualizzazione_record(); int elimina_disco(const char * titolo); int inserimento_nuovo_record(); int trova_prezzo_minore(int * picat); void assegna_categorie(); int main() { enum { inserimento, ordinamento_descrescente, visualizzazione, eliminazione, uscita } operazione; do { system("cls"); printf("Che operazione vuoi eseguire? "); printf("\n\t 1. Inserisci nuovo disco"); printf("\n\t 2. Restituisci disco con prezzo minore"); printf("\n\t 3. Visualizza tutti dischi"); printf("\n\t 4. Elimina un disco"); printf("\n\t 5. Esci\n\t "); scanf("%d", &operazione); getchar(); switch(--operazione) { case inserimento: inserimento_nuovo_record(); break; case ordinamento_descrescente: trova_prezzo_minore(); printf("\nIl disco con prezzo minore e' "); break; case visualizzazione: visualizzazione_record(); break; case eliminazione: elimina_disco(); puts ("Inserisci il disco che vuoi eliminare\n"); break; case uscita: break; default: printf("\nHai effettuato una scelta non valida"); } if(operazione != uscita) { printf("\n\nPremi INVIO per continuare."); getchar(); } } while(operazione != uscita); printf("\nPremi INVIO per uscire."); getchar(); return 0; } //definizione della funzione di visualizzazione dei record void visualizzazione_record() { int i; if(!record_inseriti) { printf("\nNon sono presenti record all'interno della tabella."); return; } printf("\n%-15s %-15s %6s", "Titolo", "Autore", "Prezzo"); for(i = 0; i < record_inseriti; i++) { printf("\n%-15s %-15s %6d", Disco[].titolo, Disco[].autore, Disco[].prezzo); } } int elimina_disco(const char * titolo) { int icat, idis; for (icat=0; icat<CATEGORIE; icat++) { int dischi = categoria[icat].dischi; for (idis=0; idis < dischi; idis++) { if (strncmp(titolo, categoria[icat].disco[idis].titolo, N-1) == 0) { if ( idis != dischi-1) memcpy(&(categoria[icat].disco[idis]), &(categoria[icat].disco[dischi-1]), sizeof(Disco)); categoria[icat].dischi--; return categoria[icat].dischi; } } } return -1; } int trova_prezzo_minore(int * picat) { int prezzo_minore; int icat, idis, idis_trovato=-1; *picat = -1; for (icat=0; icat<CATEGORIE; icat++) { int dischi = categoria[icat].dischi; for (idis=0; idis < dischi; idis++) { if ( prezzo_minore > categoria[icat].disco[idis].prezzo ) { prezzo_minore = categoria[icat].disco[idis].prezzo; idis_trovato = idis; *picat = icat; } } } return idis_trovato; } void assegna_categorie() { categoria[ROCK].codice = ROCK; strncpy(categoria[ROCK].genere, "rock", N-1); categoria[ROCK].dischi = 0; categoria[JAZZ].codice = JAZZ; strncpy(categoria[JAZZ].genere, "jazz", N-1); categoria[JAZZ].dischi = 0; categoria[POP].codice = POP; strncpy(categoria[POP].genere, "pop", N-1); categoria[POP].dischi = 0; categoria[HOUSE].codice = HOUSE; strncpy(categoria[HOUSE].genere, "house", N-1); categoria[HOUSE].dischi = 0; categoria[ITALIANO].codice = ITALIANO; strncpy(categoria[ITALIANO].genere, "italiano", N-1); categoria[ITALIANO].dischi = 0; categoria[LATINO].codice = LATINO; strncpy(categoria[LATINO].genere, "latino", N-1); categoria[LATINO].dischi = 0; } int aggiungi_disco(int codice, const char * titolo, const char * autore, int prezzo) { int indice; if (codice < 0 || codice >= CATEGORIE) return -1; if (categoria[codice].dischi >= M) return -2; indice = categoria[codice].dischi; strncpy(categoria[codice].disco[indice].autore, autore, N-1); strncpy(categoria[codice].disco[indice].titolo, titolo, N-1); categoria[codice].disco[indice].prezzo = prezzo; categoria[codice].dischi++; return categoria[codice].dischi; } //definizione della funzione di inserimento di un nuovo record int inserimento_nuovo_record() { int iCat; int iCatScelta; int prezzo; char titolo[256]; char autore[256]; printf("scegli la categoria: \n"); for (iCat=0; iCat<CATEGORIE; iCat++) { printf("%d) %s\n", iCat, categoria[iCat].genere); for(;;) { scanf("%d", &iCatScelta); if ( iCatScelta >= 0 || iCatScelta < CATEGORIE) break; printf("categoria non valida\n"); } printf("inserisci il titolo: "); scanf("%s", titolo); printf("\ninserisci l'autore: "); scanf("%s", autore); printf("\ninserisci il prezzo: "); scanf("%d", & prezzo); return aggiungi_disco(categoria[iCatScelta].codice,titolo, autore, prezzo); } }
ERRORI
C:\Users\Rita\Desktop\Nuova cartella (2)\stella.c(65) : error C2198: 'trova_prezzo_minore' : too few actual parameters
C:\Users\Rita\Desktop\Nuova cartella (2)\stella.c(72) : error C2198: 'elimina_disco' : too few actual parameters
C:\Users\Rita\Desktop\Nuova cartella (2)\stella.c(108) : error C2059: syntax error : 'type'
Error executing cl.exe.
stella.obj - 3 error(s), 0 warning(s)
EDIT by HeDo: Il codice va racchiuso tra i tag code
Ultima modifica effettuata da HeDo 24/02/10 9:23
aaa