Newsgroup: it.comp.lang.c
Titolo: re esercizio spesa

ragazzi è finita !!1
non rompo più nel forum se non per conoscere più a fondo questo momdo ma
come mai non funziona.
#include <stdio.h>
     main()
          {
          int merce;
/* quantità merce*/
          double prezzo_unit, spesa, spesa_tot;
           spesa_tot = 0;
           FILE *fp=fopen ("C:/Documents and
Settings/Administrator/Deskto/pspesa.txt","r");         /*aperto in sola
lettura*/
           while(fscanf(fp,"%d%f",&merce,&prezzo_unit) !=EOF)
             {
             spesa = merce * prezzo_unit;
             spesa_tot += spesa;
             }
            fp(close);
            }
questo codice con l'aiuto di uno di voi dovrebbe calcolare  da un file
spesa.txt di questo genere
5    20.40
9   115.40
7   94.90
il prezzo e la spesa totale.
ma quando faccio partire l'eseguibilecreato con devc++ con il prompt di
msdos mi dice un messaggio di errore
la memoria non poteva essere read.

>             fp(close);
Mi spieghi cosa sarebbe questo? Forse un fclose(fp)? E come mai, con i
warning a manetta non te l'ha segnalato? Perchè tu hai detto al tuo
compilatore di darti tanti warning, non è vero?
--- bye

allora mi metto a piangere!!!! l'ultimo e ho finito sul serio domani se và
và
#include <stdio.h>
     main()
          {
          int merce;                                  /* quantità merce*/
          double prezzo_unit, spesa, spesa_tot;
           spesa_tot = 0;
           FILE *fp=fopen ("C:/Documents and
Settings/Administrator/Desktop/spesa.txt","r");         /*aperto in sola
lettura*/
           while(fscanf(fp,"%d%f",&merce,&prezzo_unit) !=EOF)
             {
             spesa = merce * prezzo_unit;
             spesa_tot += spesa;
             printf("\n%d%f",&spesa,&spesa_tot);
             }
            fclose(fp);
           }
perche mi visualizza i risultati in modo errato
229359920.000
229359920.000
229359920.000
uso il dev c++

Ci ho messo circa 10 secondi per vedere l'errore. E' visibile a colpo
d'occhio. Credo che sia ora che inizi a cercare gli errori da solo. E' un
programma di 20 righe, non di 200.
vabbè... ti dico questo:
printf("\n%d%f",&spesa,&spesa_tot);
è totalmente sbagliata.



Senti, 4 thread in un giorno sono tanti.
Datti una calmata
respira
vediamo un po'.
Noterai che ti viene stampata sempre la stessa cosa.
Indaghiamo sulla printf
printf("\n%d%f",&spesa,&spesa_tot);
e' giusta? no
Tu gli stai chiedendo di stampare l'indirizzo in memoria delle variabili
'spesa' e 'spesa_tot'. ebbene si.
nella printf tu qui devi passargli le variabili per valore, quindi va
scritto
printf("\n%d%f,spesa,spesa_tot");
digitando & davanti alle variabili tu passi un indirizzo.
Nella fscanf (e famiglia), con la quale vuoi scrivere all'interno di
variabili, devi indicare l'indirizzo delle variabili in cui vuoi scrivere:
per questo lì viene usata la &
fscanf(fp,"%d%f",&merce,&prezzo_unit)
Ti prego, leggi con attenzione un manuale.
Ciao,
Riccardo
-- 
-=Riccardo Galli=-
 _,e.
s~  ``
 ~@.   ideralis Programs
.   ol 
 `**~  
http://www.sideralis.net

> printf("\n%d%f,spesa,spesa_tot");
Per poi scoprire che è ancora sbagliato :-)
osserva i tipi di variabili :-)
--- bye

raga se mi volete dare una mano /anche se me ne avete date tante/
vene sono grato ma non riesco piu a ragionare domani mattina devo fare
l'esame e non riesco piu a penasre.
mi potete dire pertanto perfavore
come si mette questo
printf("%f%f",&spesa,&spesa_tot);

            }
Printf a parte, la stampa (non il calcolo) della spesa totale, meglio 
metterla fuori del while... ;)
Marcello

            while(fscanf(fp,"%d%f",&merce,&prezzo_unit) !=EOF)
Non e' meglio se prezzo unitario lo dichiari float? ;)
Marcello

 l'esame e non riesco piu a penasre.
Qualcosa s'era intuito...
Marcello



un errore per volta :)
Riccardo