Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Aiuto programma in pascal con comando assign
Forum - Pascal - Aiuto programma in pascal con comando assign

Avatar
Dareios (Normal User)
Rookie


Messaggi: 22
Iscritto: 22/12/2007

Segnala al moderatore
Postato alle 20:11
Martedì, 29/01/2008
Salve a tutti
sono sempre io, Dareios, sempre pronto a sottoporre domande informatiche sperando che qualcuno mi possa aiutare in qualche modo. cmq ora il problema è:

vorrei realizzare un programma in pascal che calcoli l'area di un quadrato.
fin qui voi direte "roba da nubbi", "certo" rispondo io... peccato che vorrei poter estrarre il valore del lato da un file di testo esterno... mi spiego meglio:

mettiamo caso che io abbia nel mio hard disk un file di testo chiamato "lato" con il numero 2 scritto dentro.
io vorrei poter con un comando del pascal poter estrarre il valore 2 e associarlo alla variabile "lato" del quadrato e poi fare lato*lato e trovare così l'area...
il problema è che non riesco ad estrarre il valore 2 dal file di testo e far capire al turbopascal che lo deve associare alla variabile "lato" per poi fare appunto lato*lato.

il programma che ho scritto io per ora è:

Program area_quadrato_con_assign;
uses crt;
var l:text;
lato :string;
a: real;

begin
clrscr;
assign(l, 'C:\INPUT.TXT');
reset(l);
readln(l, lato);
close(l);
end.


solo che va implementato, perchè non so dove mettere il comando per dirgli di fare l'area e non so neanche dirgli come dare il valore 2 che sta scritto nel file INPUT.TXT alla variabile 'l' (che sarebbe il lato) [l'altra variabile 'lato' l'ho messa perchè ho visto in un esempio che veniva usata con il comando readln, ma non so se serve davvero per il mio scopo.]

grazie a tutti quelli che mi aiuteranno

saluti dareios

PM Quote
Avatar
John (Ex-Member)
Pro


Messaggi: 191
Iscritto: 18/11/2007

Segnala al moderatore
Postato alle 15:51
Mercoledì, 30/01/2008
Ciao Dareios.
La faccenda è semplice (le cose in grassetto sono modificate!):

Codice sorgente - presumibilmente Delphi

  1. Program area_quadrato_con_assign;
  2. uses crt;
  3. var l:text;
  4.      lato,area:real;
  5.  
  6. begin
  7. clrscr;
  8. assign(l,'C:\INPUT.TXT');
  9. reset(l);
  10. readln(l, lato);
  11.      area:=lato*lato;
  12.      writeln('Il quadrato di lato ',lato:3:2,' ha un area di ',area:3:2)
  13.      readln;
  14. close(l);
  15. end.



Praticamente se tu sei sicuro che la prima linea di INPUT.TXT sia un numero reale, puoi tranquillamente leggerlo con readln.
come avevi fatto tu era corretto per prevenire la possibilità che il file non contenesse numeri, solo che dopo non si può convertire una stringa in reale!
Se il file conterrà una frase, il mio programma uscirà con un errore, ma è l'unico modo per assegnare alla variabile "lato" la prima riga di INPUT.TXT....

Ciauz!!
:k:

Ultima modifica effettuata da John il 30/01/2008 alle 15:52
PM Quote
Avatar
Dareios (Normal User)
Rookie


Messaggi: 22
Iscritto: 22/12/2007

Segnala al moderatore
Postato alle 20:04
Mercoledì, 30/01/2008
john posso solo dirti: :love::love::love::love::love::love::love: sei un mitooooooooooooo! il problema era che dovevo il lato come una variabile real. sei un grande john!!!!!!! :k:

PM Quote
Avatar
Due (Normal User)
Pro


Messaggi: 68
Iscritto: 19/10/2007

Segnala al moderatore
Postato alle 22:35
Giovedì, 31/01/2008
Se inoltre vuoi prevenire un eventuale errore nel caso in cui nel file ci sia un valore non valido, potresti sfruttare la funzione val() che converte una stringa (latoS) in un numero (lato): se l'operazione è possibile val() assegna a una variabile d'errore (errore) il valore 0.
Quindi si potrebbe fare qualcosa del genere...
Codice sorgente - presumibilmente Delphi

  1. program nomeprogramma;
  2. uses crt;
  3. var l:text;
  4.     latoS:string;
  5.     area,lato:real;
  6.     errore:integer;
  7. begin
  8. clrscr;
  9. assign(l,'C:\INPUT.TXT');
  10. reset(l);
  11. readln(l, latos);
  12.      val(latoS,lato,errore);
  13.      if errore<>0 then
  14.         begin
  15.            area:=lato*lato;
  16.            writeln('Il quadrato di lato',lato:3:2,' ha un area di ',area:3:2)
  17.         end;
  18.      else
  19.         writeln('Attenzione, ',latoS,' non è un valore valido per il lato. Impossibile calcolare l'area.');
  20.     readln;
  21. close(l);
  22. end.


Purtroppo non ho potuto provare il programma perché sto cambiando computer e non ho ancora reinstallato il compilatore, però dovrebbe funzionare :k:

PM Quote