PDA

Visualizza la versione completa : Problema Programma non trovo l'errore!!!


Ki11aTom
29-05-2012, 14:45
Salve a tutti ho bisogno di una mano in questo programma.
Allora sulla base del fatto che questo programma deve creare dei file leggendo da un'altro file(binario) di nome Trimestre.bin ho un problema. Nel trimestre ci sono memorizzati strutture utenti con i campi nome,cognome,indirizzo ecc mi dovrebbe creare i file calcolando tutti gli importi ma non funziona mi calcola bene gli importi ma non crea i file correttamente e mi ritorna -10923030 ecc

#include <stdio.h> #include <windows.h> #include <stdlib.h> #include <string.h> #define MAX 100 typedef struct { char nome[21]; char cognome[21]; char fiscale[17]; char indirizzo[50]; // via ... float cFine_TriAttu; // lettura del contatore alla fine del trimestre attuale (metri cubi) float cFine_TriPrec; // lettura del contatore alla fine del trimestre precedente (metri cubi) float boll_Npag; // importo di eventuali bollette precedenti non pagate } Utente; void bolletta(Utente v[],int n); int main() { Utente tab[MAX]; FILE *fp; int i=0,l,n=0; system("cls"); if((fp=fopen("Trimestre.bin","rb"))==NULL) { printf("Devi prima creare un file TRIMESTRE.bin"); exit(1); } fread(&tab[0],sizeof(Utente),1,fp); while(!feof) { i++; l=i; fread(&tab[i],sizeof(Utente),1,fp); } fclose(fp); bolletta(tab,l); system("pause"); system("cls"); } void bolletta(Utente v[],int n) { FILE *f; char appo[51]; int i,j,mora=10; float tot,var; gotoXY(32,4); printf("|"); gotoXY(1,4); printf("|"); for(j=0; j<30; j++) { printf("%c",219); Sleep(150); } for(i=0; i<n; i++) { // for per creare bolletta per ogni utente strcpy(appo,v[i].fiscale); strcat(appo,".txt"); if(( f=fopen(appo,"w"))==NULL) { printf("\n\n ERRORE"); exit(1); } fprintf(f,"Nome: %s\n",v[i].nome); fprintf(f,"Codice Fiscale: %s\n",v[i].fiscale); fprintf(f,"Indirizzo: %s\n",v[i].indirizzo); fprintf(f,"Importo bollette precedenti: %f\n",v[i].boll_Npag); if(v[i].boll_Npag!=0) { fprintf(f,"mora: %d\n",mora); } fprintf(f,"Consumi Perioro (mc): %f\n",v[i].cFine_TriAttu); fprintf(f,"Quota fissa: %d\n",15); var=(2.5*v[i].cFine_TriAttu); fprintf(f,"Quota variabile: %f\n",var); if(v[i].boll_Npag!=0) { tot=10+var+15+v[i].boll_Npag; fprintf(f,"Totale da pagare: %f\n",tot); } else { tot=(2.5*v[i].cFine_TriAttu)+15; fprintf(f,"Totale da pagare: %4.f\n",tot); } fclose(f); } printf("\n\nBollette Pronte!!"); system("pause"); } void gotoXY(int x, int y) { COORD CursorPos = {x, y}; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsole, CursorPos); }

alka
29-05-2012, 14:53
E' il terzo avviso per il titolo inadeguato (vedi qui (http://forum.html.it/forum/showthread.php?s=&threadid=1509247)).

Inoltre, il codice non formattato correttamente.

Rileggi il Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887) e rispettalo, altrimenti le discussioni verranno chiuse senza preavviso (fino a un certo punto).

Loading