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 - Errore 122 Invalid variable reference
Forum - Pascal - Errore 122 Invalid variable reference

Avatar
attiliof (Normal User)
Newbie


Messaggi: 8
Iscritto: 23/10/2006

Segnala al moderatore
Postato alle 19:27
Venerdì, 27/10/2006
Saluto tutti e mi presento, sono un vecchio di 51 anni ma vorrei avvicinarmi a questo mondo della programmazione ho letto molto, grazie a voi ed a questo sito in particolare...
Vengo al problema non riesco a schiodarmi da questo errore del compilatore"Errore 122"
incollo qui la procedura sperando in una vostra gentilezza saluto e ringrazio
PROGRAM potenza;
   USES crt;
   VAR a,b,c,i:INTEGER;
   BEGIN
   WRITELN('Inserisci un numero');
   READLN(A)
   WRITELN(' Inserisci esponente ');
   READLN(B);
   FOR I:= 1 TO b DO
   c:=a*a;
   END;
   WRITELN('Il risultao della potenza è ' ,c);
   READLN;
   END.

PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 14:54
Sabato, 28/10/2006
Ciao "vecchio di 51 anni".. innanzi tutto ti dico che non si è mai troppo vecchi per iniziare a programmare..:D e poi che nel codice che hai inserito ti da l'errore perchè ci sono due "end" con un solo "begin"... quindi ti dice che ce n'è uno di troppo... prova a levare quello dopo il ciclo for to do e dopo vedrai che funziona ciao ciao

PM Quote
Avatar
attiliof (Normal User)
Newbie


Messaggi: 8
Iscritto: 23/10/2006

Segnala al moderatore
Postato alle 19:23
Sabato, 28/10/2006
Grazie, ho eseguito le modifiche suggerite ed ora non ci sono errori ma non mi fornisce il risultato finale della potenza...ho fatto tanti tentativi ma se non arriva un altro suggerimento non mi schiodo... ora la procedura è questa:
PROGRAM potenza2;
USES crt;
VAR a,b,c,i:INTEGER;
BEGIN
clrscr;
WRITELN ('Inserisci un numero');
READLN;
WRITELN ('Inserisci esponente');
READLN;
for I := 1 to b do
c:=a*a;
WRITELN('Il risultao della potenza è ');
READLN;
END.

Grazie per l'incoraggiamento

PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 19:38
Sabato, 28/10/2006
Certo perchè dal primo al secondo codice che hai scritto non hai tolto solo l'end.. hai tolto (forse per sbaglio) anche la variabile 'c' nella scritta:  
Codice sorgente - presumibilmente Plain Text

  1. WRITELN('Il risultao della potenza è ');


e poi hai tolto anche l'assegnazione della variabile 'b' e 'a' dopo i readln

quindi rimettila... cosi:
Codice sorgente - presumibilmente Delphi

  1. PROGRAM potenza2;
  2. USES crt;
  3. VAR a,b,c,i:INTEGER;
  4. BEGIN
  5. clrscr;
  6. WRITELN ('Inserisci un numero');
  7. READLN(a);
  8. WRITELN ('Inserisci esponente');
  9. READLN(b);
  10. for I := 1 to b do
  11. c:=a*a;
  12. WRITELN('Il risultao della potenza è ',c);
  13. READLN;
  14. END.


e vedrai che funziona....

Dal primo codice che hai postato dovevi solo eliminare l'end di mezzo.. invece hai tolto anche altra roba che invece serviva per la funzionalità!!!
Bye:k:

PM Quote
Avatar
attiliof (Normal User)
Newbie


Messaggi: 8
Iscritto: 23/10/2006

Segnala al moderatore
Postato alle 20:03
Sabato, 28/10/2006
Grazie per l'abnegazione che mi dedichi, è vero che avevo tolto troppo...che scemo che sono!
Ora sembra funzionare ma non completa il ciclo "for" mi fa solo una moltiplicazione, infatti se inserisci un numero alla seconda, funzia ma se fai un numero elevato alla tre mi rende come risultato sempre alla seconda...boooh...
Ciao e grazie infinite

Ultima modifica effettuata da attiliof il 28/10/2006 alle 20:53
PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 21:03
Sabato, 28/10/2006
Quello perchè è sbagliata l'istruzione nel ciclo for to do... infatti con quell'isgtruzione gli si dice che deve fare tante volte quanto il numero dell'esponente la moltiplicazione a*a ad esempio se deve fare 4^4, il computer ti esegue ripetutamente per quattro volte il prodotto 4*4 che verrà sempre 16!.. se vuoi che invece la prima volta ti faccia 4*4, la seconda 16*4 e così via ci devi mettere for i:=1 to b do C=C*a;

Però prima devi inizializare la variabile C impostandola al valore 1:
dopo clrscrn metti quindi c:=1
fammi sapere... ora dovrebbe essere tutto ok!!!

Scusa, ma prima non avevo fatto caso se c'erano errori di calcolo, avevo solo controllato la sintassi e quindi non me ne ero accorto.. cmq ora non dovrebbero esserci problemi!! ciao

Ultima modifica effettuata da Anonymous il 28/10/2006 alle 21:04
PM Quote
Avatar
attiliof (Normal User)
Newbie


Messaggi: 8
Iscritto: 23/10/2006

Segnala al moderatore
Postato alle 22:38
Sabato, 28/10/2006
Sei un GRANDE!!!
Grazie infinite davvero,
ti potrà sembrare esagerato ma non lo è per niente, cominciavo a disperare ed a farmi prendere dalla certezza di non poter proseguire ma invece mi hai ridato la carica giusta per continuare ad applicarmi in questo mio nuovo interesse.
Grazie ancora ed auguroni sinceri
Attilio

PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 23:02
Sabato, 28/10/2006
Testo quotato

Postato originariamente da attiliof:
Grazie infinite davvero,
ti potrà sembrare esagerato ma non lo è per niente


si, lo capisco lo capisco..
cmq noi siamo tutti qui apposta per aiutare (e ovviamente per essere aiutati) e ci fa piacere che i suggerimenti dati riescono a risolvere i problemi di altri... l'importante è che si capisca dove si sbaglia e si capiscano i suggerimenti dati evitando di copiare e incollare solo la parte di codice senza capire il perchè deve essere in quel modo piuttosto che in un altro... Se si riesce a capire il perchè allora è un passo in più ogni volta nel mondo della programmazione

Ciao!!
8-)

Ultima modifica effettuata da Anonymous il 28/10/2006 alle 23:05
PM Quote