Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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

PM Quote