Problema con Pascal

MathLover22

Nuovo Utente
2
0
Salve ho creato un programma in grado di dirti se un numero è primo o meno e ha funzionato. Poi ho deciso di arricchirlo in modo che ti dica anche se si tratti di un primo di Mersenne esprimibile in questo modo:
n=2^p-1
Ma mi da il seguente errore:
47 / 5 primi.pas
Fatal: Syntax error, UNTIL expected but const char found
Codice:
program PRIMI;
var A,B,C,D,E,F,G:integer;
begin
writeln('Inserisci A');
readln(A);
A:=D;
if A=1
then
begin
writeln(A,'non e` primo');
readln;
end
else
begin
if A=2
then
begin
writeln(A,'e` primo');
readln;
end
else
begin
repeat
B:=D-1;
C:=A mod B;
D:=D-1;
if C=0
then
begin
writeln(A,'non e` primo');
readln;
D:=2;
E:=2
end;
until D=2;
if E<>2
then
begin
writeln(A, 'e` primo');
readln;
F:=A+1 mod 2;
end;
if F=0
then
begin
repeat
G:=2^F-1;
F:=F+1;
until(G=A)or(F=30);
end;
if G=A;
then
begin
writeln(A, 'è un primo di Mersenne');
readln;
end;
end;
end;
end;

Dov'è l'errore? :grat:
 
Ultima modifica da un moderatore:
M

Mursey

Ospite
Sei il benvenuto se usi il tag CODE, lo metto io per questa volta ;)

- - - Updated - - -

OR va maiuscolo nella condizione
 

MathLover22

Nuovo Utente
2
0
Prima di tutto scusa non lo sapevo :D. Comunque grazie dell'aiuto ma mi dà lo stesso errore anche con OR maiuscolo.
 
M

Mursey

Ospite
Sono un po' arrugginito di Pascal, prova testando le singole condizioni per capire quale non gli piace, penso G=A
 

BAT

Moderatore
Staff Forum
Utente Èlite
8,272
3,517
CPU
Neurone solitario
Dissipatore
Ventaglio azionato a mano
Scheda Madre
Casalinga
RAM
Molto molto volatile
GPU
Binoculare integrata nel cranio
PSU
Pastasciutta, pollo e patatine al forno
Net
Segnali di fumo e/o tamburi
OS
Windows 10000 BUG
Il Pascal non me lo ricordo ma mi sembra che ci siano errori logici già all'inizio:
prima leggi A e poi gli assegni direttamente D, non ha senso;
tra l'altro D è appena stata dichiarata (ma non inizializzata) per cui in teoria il valore è indefinito.

Ma sei sicuro che per elevare a potenza puoi usare ^ (accento circonflesso)?
Non mi pare proprio che si faccia così
 
  • Like
Reactions: Mursey

gronag

Utente Èlite
21,297
7,268
Il Pascal non me lo ricordo ma mi sembra che ci siano errori logici già all'inizio:
prima leggi A e poi gli assegni direttamente D, non ha senso;
tra l'altro D è appena stata dichiarata (ma non inizializzata) per cui in teoria il valore è indefinito.

Ma sei sicuro che per elevare a potenza puoi usare ^ (accento circonflesso)?
Non mi pare proprio che si faccia così

Infatti l'accento circonflesso ^ è l'indicatore del puntatore utilizzato nelle strutture dinamiche semplici e complesse, per l'elevamento a potenza del tipo x^y (x elevato alla y) si deve fare EXP(LN(x)*y), non essendo contemplata una apposita funzione matematica (SQR(x) serve solo per il quadrato di x) :asd:

P.S. Poi nel sorgente di @MathLover22 ci sono altri errori come ad es. nelle istruzioni di assegnazione che, ricordo, il processore valuta da destra verso sinistra; in questo modo viene eliminato qualsiasi tipo di ambiguità in quelle istruzioni in cui è presente la stessa variabile (ad es. usata come contatore) :sisilui:
 
Ultima modifica:
  • Like
Reactions: Mursey

Entra

oppure Accedi utilizzando

Hot: E3 2021, chi ti è piaciuto di più?

  • Ubisoft

    Voti: 37 23.1%
  • Gearbox

    Voti: 3 1.9%
  • Xbox & Bethesda

    Voti: 101 63.1%
  • Square Enix

    Voti: 14 8.8%
  • Capcom

    Voti: 7 4.4%
  • Nintendo

    Voti: 21 13.1%
  • Altro (Specificare)

    Voti: 15 9.4%

Discussioni Simili