|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2004
Messaggi: 40
|
Pascal
Salve questo è il mio primo messaggio....che emozione,mi sono avvicinato da poco al mondo della programmazione è ho un problema con pascal.
In poche parole devo creare un programma che legge dei numeri da un file di imput e li devo sommare stampando il risultato in un file di output. Esempio: il file numeri.txt contiene 30,20,40 deve stampare la somma cioè 90 in un file chiamato somma.txt,come posso fare? Spero di essere stato chiaro,vi prego aiuto. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2004
Messaggi: 40
|
Non puoi essere più preciso.Tipo darmi qualche link.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
...dai nn è complicato.....teoricamente cosa dovresti fare?!?!
1 - aprire il file in lettura 2 - impostare un ciclo WHILE che ti serve a leggere nel file finchè non è finito 3A - impostare il tuo carattere sentinella, che ti servirà per sapere quali sono di dati che devi leggere e dov'è il confine tra un dato ed un'altro 3B - (nel tuo caso) siccome hai a che fare con dei numeri si può anche fare a meno del carattere sentinella (che nel tuo file è "," !!! 4 - fare la somma dei dati 5 - chiudere il file
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jan 2004
Messaggi: 40
|
Non esiste nessun sito dove posso scaricare i sorgenti di un programma simile?
Grazie. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
dai provaci da solo.
innanzitutto devi impostare una variabile: Codice:
VAR
miofile: text; {sarà la variabile per il tuo file}
somma: integer; {sarà la variabile per la somma}
{poi ti crei la procedura per il ciclo di lettura}
Procedure LeggiFile;
Var numero: integer; {variabile temporanea per il numero letto}
Begin
assign(miofile, 'numeri.txt'); {dice dov'è il file}
reset(miofile) {apre il file in lettura}
while eof(miofile) do
begin
while not eol(miofile) do
begin
read(miofile, numero);
end;
somma=somma+numero;
end;
end;
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
...vabbè è più o meno così......cmq si potrebbero risparmiare alcuni Begin...End!!!
però per farti capire è più che sufficiente
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
dai....ho capito, te lo dò completo e corretto!!!
devi solo controllare l'assegnazione del ASSIGN(mfile, 'd:\numeri.txt'); questo perchè il file di prova io l'ho messo in D:\... ciao
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jan 2004
Messaggi: 40
|
In poche parole ho scaricato il file.pas,creo un file chiamato numeri.txt contenenti 20,30,10. scritto proprio così con il punto,eseguo il programma premo sempre invio alla fine mi esce la somma.
Adesso devo solo modificarlo in modo che stampi il risultato su un file di output. Grazie mille leadergl se ti serve qualcosa chiedi pure. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
esattamente così!
Di niente...
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jan 2004
Messaggi: 40
|
Questo è il file completo adesso il risultato lo stampa su di un file di output.
Ti devo chiedere un enorme favore,se mi scrivi tutto quello che hai fatto,tutti i comandi e come funziona il programma,riga per riga. LO SO CHE FORSE STO CHIEDENDO TROPPO MA E' IMPORTANTE!!!!!!!! GRAZIE. |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
....wow tutto il codice riga per riga...!!! ok
qui c'è il programma leggermente corretto è con tutte le righe di codice commentate
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Jan 2004
Messaggi: 40
|
GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE,GRAZIE!!!!!!!!
Un ultima domanda se il file imput fosse stato così: 10 20 30 quali sono le modifiche che avrei dovuto fare? GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA,GRAZIE ANCORA!!!!!!!!!!!!!! |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
beh SE SAI GIA' DA PRIMA che il file sarebbe stato così il procedura leggi....
sarebbe diventata del tipo: Codice:
Prucedure leggiFile;
var nNumero: integer;
begin
assign(MioFile,'numeri.txt');
reset(MioFile);
while not EOF(MioFile) do
begin
nNumero:=0;
while not EOLN(MioFile) do
begin
read(MioFile,nNumero);
end;
somma:=somma+nNumero;
readln;
end;
end;
Ah nel secondo ciclo While, siccome c'è una sola istruzione all'interno, si potrebbero anche abolire il Begin...End!!
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Jan 2004
Messaggi: 40
|
ok!! adesso vedo se funziona.
|
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Jan 2004
Messaggi: 40
|
File input
10 20 30 Senti adesso la variabile sentinella non serve più visto che adesso non c'è più la ',' giusto? |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
giusto, il codice per quel tipo di file te l'ho scritto prima......scusa se rispondo tardi è che DOPO BEN 4 ANNI di pace ho SERI problemi con un cavolo di virus Win32.PARITE
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Jan 2004
Messaggi: 40
|
Grazie.
Scusa se ti rompo ancora,ma ho fatto questo programma,in poche parole fa la somma,legge i numeri da un file di input,stampa il risultato su un file di output,tu dirai ma dove sta il problema? Semplice la somma la stampa man mano,esempio: Input file 2 5 6 output file 2 7 13 Come faccio a far stampare l'ultima riga? Grazie ancora. |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Codice:
program radice;
uses crt;
var
imput:text;
output:text;
b,a:integer;
begin
clrscr;
assign (imput,'numeri.txt');
reset (imput);
assign (output,'somma.txt');
rewrite (output);
while not eof(imput) do
begin
readln (imput,a);
b:=b+a;
end;
writeln (output,b);
close (imput);
close (output);
end.
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:55.



















