View Full Version : Pascal
Zero Two
03-01-2004, 22:29
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.
DarkSiDE
04-01-2004, 10:49
fai una ricerca con google, trovi una marea di documentazione
Zero Two
04-01-2004, 15:06
Non puoi essere più preciso.Tipo darmi qualche link.
leadergl
04-01-2004, 15:16
...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
Zero Two
04-01-2004, 15:37
Non esiste nessun sito dove posso scaricare i sorgenti di un programma simile?
Grazie.
leadergl
04-01-2004, 16:02
dai provaci da solo.
innanzitutto devi impostare una variabile:
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;
poi c'è il main
leadergl
04-01-2004, 16:06
...vabbè è più o meno così......cmq si potrebbero risparmiare alcuni Begin...End!!!
però per farti capire è più che sufficiente
leadergl
04-01-2004, 16:35
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
Zero Two
04-01-2004, 20:27
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.
leadergl
04-01-2004, 20:45
esattamente così!
Di niente...:)
Zero Two
05-01-2004, 20:11
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.
leadergl
05-01-2004, 22:10
....wow tutto il codice riga per riga...!!! ok
qui c'è il programma leggermente corretto è con tutte le righe di codice commentate
Zero Two
05-01-2004, 22:38
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!!!!!!!!!!!!!!
leadergl
05-01-2004, 22:50
beh SE SAI GIA' DA PRIMA che il file sarebbe stato così il procedura leggi....
sarebbe diventata del tipo:
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;
....uhm....si così, credo d non aver sbagliato niente...cmq l'ho scritto al volo e pur se semplice nn si sa mai....cmq dovrebbe essere giusto!!
Ah nel secondo ciclo While, siccome c'è una sola istruzione all'interno, si potrebbero anche abolire il Begin...End!! :)
Zero Two
06-01-2004, 15:10
ok!! adesso vedo se funziona.
Zero Two
06-01-2004, 20:12
File input
10
20
30
Senti adesso la variabile sentinella non serve più visto che adesso non c'è più la ',' giusto?
leadergl
06-01-2004, 22:23
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
Zero Two
07-01-2004, 20:17
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.
leadergl
07-01-2004, 21:42
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.
basta che porti il writeln(output,b) fuori dal ciclo, così ti scrive solo il risultato finale e nn tutti gli step di ciclo in ciclo!
DarkSiDE
08-01-2004, 11:00
è possibbile utilizzare l'apice ' come sentinella?
leadergl
08-01-2004, 12:00
sinceramente non ho mai provato......ma penso di si!
leadergl
08-01-2004, 12:02
anzi SI, e sentinella diventerebbe:
sentinella:='''';
4 APICI per ricercare UN solo apice!
DarkSiDE
08-01-2004, 12:14
Originariamente inviato da leadergl
anzi SI, e sentinella diventerebbe:
sentinella:='''';
4 APICI per ricercare UN solo apice!
tnx ;)
Zero Two
08-01-2004, 20:55
Grazie leadergl.
leadergl
08-01-2004, 20:57
di niente ;)
Zero Two
09-01-2004, 20:12
Ho ancora bisogno di aiuto!!!!!!!
Prima domanda:
Il mio quesito è questo
Ho un maledetto file di input
10
20
30
Voglio ad esempio leggere il secondo numero come poso fare?
Seconda domanda
File di input
10
Voglio leggere la seconda cifra in questo caso lo zero come posso fare?
Vi suplico rispondete
Ho bisogno di voi!!!!!!!
leadergl
09-01-2004, 21:06
http://www.marinsalta.net/pascal/I_FILES_IN_TURBO_PASCAL.htm
qui c'è tutto quello che si deve sapere sui file!!!
Cmq in entrambi i casi se il file è:
Var miofile:text;
devi leggerti tutto il file e poi trovare quello che ti serve!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.