Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - correzione progetto
Forum - C/C++ - correzione progetto

Avatar
ssc (Normal User)
Newbie


Messaggi: 1
Iscritto: 23/02/2010

Segnala al moderatore
Postato alle 21:56
Martedì, 23/02/2010
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

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define M 5
  5. #define N 15
  6. typedef struct
  7. {
  8. char titolo[N];
  9. char autore[N];
  10. int prezzo;
  11. } Disco;
  12. enum Categorie
  13. {
  14. ROCK,
  15. JAZZ,
  16. POP,
  17. HOUSE,
  18. ITALIANO,
  19. LATINO,
  20. CATEGORIE
  21. };
  22. typedef struct
  23. {
  24. char genere[N];
  25. int codice;
  26. int dischi;
  27. Disco disco[M];
  28. } Categoria;
  29. Categoria categoria[CATEGORIE];
  30. Disco disco[M];
  31. int record_inseriti;
  32.  
  33. void visualizzazione_record();
  34. int elimina_disco(const char * titolo);
  35. int inserimento_nuovo_record();
  36. int trova_prezzo_minore(int * picat);
  37. void assegna_categorie();
  38. int main()
  39. {
  40.  
  41. enum {
  42. inserimento,
  43. ordinamento_descrescente,
  44. visualizzazione,
  45. eliminazione,
  46. uscita
  47. } operazione;
  48. do {
  49. system("cls");
  50. printf("Che operazione vuoi eseguire? ");
  51. printf("\n\t 1. Inserisci nuovo disco");
  52. printf("\n\t 2. Restituisci disco con prezzo minore");
  53. printf("\n\t 3. Visualizza tutti dischi");
  54. printf("\n\t 4. Elimina un disco");
  55. printf("\n\t 5. Esci\n\t ");
  56. scanf("%d", &operazione);
  57.  
  58. getchar();
  59.  
  60. switch(--operazione) {
  61. case inserimento:
  62. inserimento_nuovo_record();
  63. break;
  64. case ordinamento_descrescente:
  65. trova_prezzo_minore();
  66. printf("\nIl disco con prezzo minore e' ");
  67. break;
  68. case visualizzazione:
  69. visualizzazione_record();
  70. break;
  71. case eliminazione:
  72. elimina_disco();
  73. puts ("Inserisci il disco che vuoi eliminare\n");
  74.  
  75.  
  76. break;
  77. case uscita:
  78. break;
  79. default:
  80. printf("\nHai effettuato una scelta non valida");
  81. }
  82.  
  83. if(operazione != uscita) {
  84. printf("\n\nPremi INVIO per continuare.");
  85. getchar();
  86. }
  87.  
  88. } while(operazione != uscita);
  89.  
  90. printf("\nPremi INVIO per uscire.");
  91. getchar();
  92. return 0;
  93. }
  94.  
  95.  
  96. //definizione della funzione di visualizzazione dei record
  97. void visualizzazione_record()
  98. {
  99. int i;
  100.  
  101. if(!record_inseriti) {
  102. printf("\nNon sono presenti record all'interno della tabella.");
  103. return;
  104. }
  105.  
  106. printf("\n%-15s %-15s %6s", "Titolo", "Autore", "Prezzo");
  107. for(i = 0; i < record_inseriti; i++) {
  108. printf("\n%-15s %-15s %6d", Disco[].titolo, Disco[].autore, Disco[].prezzo);
  109. }
  110. }
  111.  
  112.  
  113. int elimina_disco(const char * titolo)
  114. {
  115. int icat, idis;
  116. for (icat=0; icat<CATEGORIE; icat++)
  117. {
  118. int dischi = categoria[icat].dischi;
  119. for (idis=0; idis < dischi; idis++)
  120. {
  121. if (strncmp(titolo, categoria[icat].disco[idis].titolo, N-1) == 0)
  122. {
  123. if ( idis != dischi-1)
  124. memcpy(&(categoria[icat].disco[idis]), &(categoria[icat].disco[dischi-1]), sizeof(Disco));
  125. categoria[icat].dischi--;
  126. return categoria[icat].dischi;
  127. }
  128. }
  129. }
  130. return -1;
  131. }
  132.  
  133. int trova_prezzo_minore(int * picat)
  134. {
  135. int prezzo_minore;
  136. int icat, idis, idis_trovato=-1;
  137. *picat = -1;
  138. for (icat=0; icat<CATEGORIE; icat++)
  139. {
  140. int dischi = categoria[icat].dischi;
  141. for (idis=0; idis < dischi; idis++)
  142. {
  143. if ( prezzo_minore > categoria[icat].disco[idis].prezzo )
  144. {
  145. prezzo_minore = categoria[icat].disco[idis].prezzo;
  146. idis_trovato = idis;
  147. *picat = icat;
  148. }
  149. }
  150. }
  151. return idis_trovato;
  152. }
  153.  
  154. void assegna_categorie()
  155. {
  156. categoria[ROCK].codice = ROCK;
  157. strncpy(categoria[ROCK].genere, "rock", N-1);
  158. categoria[ROCK].dischi = 0;
  159.  
  160. categoria[JAZZ].codice = JAZZ;
  161. strncpy(categoria[JAZZ].genere, "jazz", N-1);
  162. categoria[JAZZ].dischi = 0;
  163.  
  164. categoria[POP].codice = POP;
  165. strncpy(categoria[POP].genere, "pop", N-1);
  166. categoria[POP].dischi = 0;
  167.  
  168. categoria[HOUSE].codice = HOUSE;
  169. strncpy(categoria[HOUSE].genere, "house", N-1);
  170. categoria[HOUSE].dischi = 0;
  171.  
  172. categoria[ITALIANO].codice = ITALIANO;
  173. strncpy(categoria[ITALIANO].genere, "italiano", N-1);
  174. categoria[ITALIANO].dischi = 0;
  175.  
  176. categoria[LATINO].codice = LATINO;
  177. strncpy(categoria[LATINO].genere, "latino", N-1);
  178. categoria[LATINO].dischi = 0;
  179. }
  180.  
  181. int aggiungi_disco(int codice, const char * titolo, const char * autore, int prezzo)
  182. {
  183. int indice;
  184. if (codice < 0 || codice >= CATEGORIE) return -1;
  185.  
  186. if (categoria[codice].dischi >= M) return -2;
  187. indice = categoria[codice].dischi;
  188. strncpy(categoria[codice].disco[indice].autore, autore, N-1);
  189. strncpy(categoria[codice].disco[indice].titolo, titolo, N-1);
  190. categoria[codice].disco[indice].prezzo = prezzo;
  191. categoria[codice].dischi++;
  192. return categoria[codice].dischi;
  193. }
  194. //definizione della funzione di inserimento di un nuovo record
  195.  
  196. int inserimento_nuovo_record()
  197. {
  198. int iCat;
  199. int iCatScelta;
  200. int prezzo;
  201. char titolo[256];
  202. char autore[256];
  203. printf("scegli la categoria: \n");
  204. for (iCat=0; iCat<CATEGORIE; iCat++)
  205. {
  206. printf("%d) %s\n", iCat, categoria[iCat].genere);
  207. for(;;)
  208. {
  209. scanf("%d", &iCatScelta);
  210. if ( iCatScelta >= 0 || iCatScelta < CATEGORIE) break;
  211. printf("categoria non valida\n");
  212. }
  213. printf("inserisci il titolo: ");
  214. scanf("%s", titolo);
  215. printf("\ninserisci l'autore: ");
  216. scanf("%s", autore);
  217. printf("\ninserisci il prezzo: ");
  218. scanf("%d", & prezzo);
  219. return aggiungi_disco(categoria[iCatScelta].codice,titolo, autore, prezzo);
  220. }
  221. }



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 il 24/02/2010 alle 10:23
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 22:38
Martedì, 23/02/2010
sia trova_pezzo che elimina_disco vogliono un parametro in ingresso ma nello switch tu le richiami con zero parametri


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote