|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1056
|
Problema pascal
Ciao a tutti , ho un problema con il pascal.( e te pareva
![]() Dunque , se io con una readln leggo un espressione da tastiera (es. 23+4+5+6*12-34) e poi con un writeln provo a stamparla mi esce Il risultato e' : 23+4+5+6*12-24 utile no? ![]() La domanda era quindi: come faccio a fare in modo che anziche stamparmi il contenuto di "espressione" ( sn fantasioso con i nomi eh? ![]() |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7257
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
__________________
![]() |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1056
|
Quote:
![]() dunque io ho un costrutto del tipo begin writeln('Inserire l'espressione da calcolare'); readln(espressione); writeln(espressione); end io devo fare in modo che la writeln anziche stamparmi il contenuto di espressione ( che mi serve a meno di niente ![]() mi potresti postare un esempio di codice? (è il mio primo programma dopo quello dei quadratini a random o della bandiera italiana ![]() |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7257
|
praticamente devi prendere la stringa contenente l'espressione, dividerla in tanti pezzi e calcolarla.
ad esempio.. se hai "8-2" leggi la stringa fino al primo operatore (in questo caso fino al "-"), e salvi il risultato (che sarà "8"), poi leggi fino al prossimo operatore oppure fino alla fine dell'espressione nel caso non ci sono più operatori (come in questo caso), e salvi sempre quello che hai letto (ora sarà "9"). una volta che hai fatto tutto questo lavoro che si chiama PARSING dovresti essere in grado di calcolarti l'espressione rispettando le regole della matematica (come le precedenze degli operatori ecc...). comunque non è proprio una cosa facile facile ![]() se hai idee postale ![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
anche perchè dovresti rispettare le precedenze, parentesi....
edit. ops ho letto troppo frettolosamente il post di k0nt3...chiedo scusa ![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1056
|
sapresti fare un esempio? non riesco a seguirti.. come faccio a fermare la lettura al primo operatore?
es. writeln('blablabla'); readln(espressione); e poi??? azz cm mi sento niubbo ![]() |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1056
|
up
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1056
|
up
![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7257
|
non è una cosa banale quella che vuoi fare... mmm ti consiglio di fare una cosa più semplice e cioè prendi un input alla volta. puoi fare un ciclo dove ti chiede di inserire gli operatori e l'operazione da compiere e magari stabilire che termina quando inserisci il carattere "=".
un esempio: "5" "+" "3" "=" e il programma sputa fuori 8 elaborando i dati ![]() |
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Oct 2006
Città: Bari
Messaggi: 238
|
spero di aver capito bene....ma in questo caso nn è più logico fare un passaggio tra variabili di tipo diverso???
esempio: var espressione:string; risultato:real; begin writeln "scrivi l'espressione:"; readln espressione; write "espressione="; risultato = espressione; writeln "risultato"; end. non scrivo due righe in pascal da parecchio....forse l'ho fatta troppo facile ![]() |
![]() |
![]() |
![]() |
#12 | |
Junior Member
Iscritto dal: Mar 2007
Città: 127.0.0.1
Messaggi: 23
|
Quote:
Poi il Pascal mi sembrava un attimino diverso come sintassi... Ciao
__________________
Se hai un sogno, non metterlo mai al secondo posto nella lista delle cose da fare. |
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1056
|
Quote:
program espressione; var espressione:string; risultato:real; begin writeln ('scrivi l'espressione); readln (espressione); write ('espressione='); risultato := espressione; writeln ('risultato'); end. però stai cercando di assegnare un valore string ad una variabile real, con l'inevitabile errore di sintassi "Type Mismatch". |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E' una cosa abbastanza complicata da fare...soprattutto se sei agli inizi...
|
![]() |
![]() |
![]() |
#15 |
Member
Iscritto dal: Oct 2006
Città: Bari
Messaggi: 238
|
sapevo di averla fatta troppo facile
![]() comunque mi avete dato addosso per un ":" che mi sono mangiato ![]() tanto per avere pure io una delucidazione: possibile ke non ci sia un modo per effettuare il passaggio tra variabili di tipo diverso? |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:51.