28/12/11 11:48
904
Salve non riesco col seguente programma non stampa quello che dovrebbe stampare!
/* Corso di laurea: Ingegneria Informatica * Esame: Fondamenti di Informatica * Prova scritta del: 23 gennaio 2006 * * Si scriva un programma che soddisfi le seguenti specifiche: * - carica da un file di testo un elenco di modelli di autovetture; per * ogni modello di autovettura le informazioni sono: marca, modello e * prezzo * - visualizza a video l'elenco caricato; * - ordina l'elenco in base alla marca e quindi al modello; * - visualizza a video l'elenco ordinato; * - elimina record duplicati nell'elenco: due o più record sono da * considerarsi duplicati se coincidono tutti e tre i relativi campi; * nel caso vengano rilevati dati duplicati il programma elimina tutte * le copie del dato tranne una; * - visualizza a video l'elenco * - salva in un file l'elenco rispettando la sintassi del file riportata * in basso nelle ulteriori specifiche * * Ulteriori specifiche: * - il file di testo contentente l'elenco è strutturato come segue: * la prima riga contiene un numero intero che rappresenta quanti record * sono presenti nell'elenco salvato su file; * su ogni riga c'è un record riportato secondo la seguente sintassi: * !Campo_Marca!Campo_Modello!Campo_Prezzo! * - la dimensione massima dell'elenco gestito è pari a 100 * - oltre al main si scrivano funzioni per effettuare le operazioni di: * -> caricamento dell'elenco da file * -> ordinamento dell'elenco mediante algoritmo di bubble sort * -> elimina i record duplicati nell'elenco * -> visualizzazione a video dell'elenco * -> salvataggio elenco su file * * Altro: * - per maggiore chiarezza è stato allegato al presente compito un file di * input di esempio ("auto.txt") */ #include <stdio.h> #include <stdlib.h> #define MAX 100 int carica(char marca[][MAX],char modello[][MAX],float prezzo[][MAX]); void stampa(char marca[][MAX],char modello[][MAX],float prezzo[][MAX],int rec); int main() { int rec,i; char marca[MAX][MAX],modello[MAX][MAX]; float prezzo[MAX][MAX]; rec=carica(marca,modello,prezzo); stampa(marca,modello,prezzo,rec); system("PAUSE"); return 0; } int carica(char marca[][MAX],char modello[][MAX],float prezzo[][MAX]) { int rec,i; FILE *autom; char nome[MAX]; printf("Inserisci il nome del file da aprire:\n"); scanf("%s", nome); autom=fopen(nome,"r"); if(autom==NULL) { printf("Errore nell'apertura del file\n"); system("pause"); exit(1); } fscanf(autom,"%d", &rec); for(i=0;i<rec;++i) fscanf(autom,"!%s!%s!%s!", marca[i],modello[i],prezzo[i]); return rec; } void stampa(char marca[][MAX],char modello[][MAX],float prezzo[][MAX],int rec) { int i; printf("\tMARCA\tMODELLO\tPREZZO\n"); for(i=0;i<rec;++i) printf("\t%s\t%s\t%f\n",marca[i],modello[i],prezzo[i] ); }
aaa