problema pascal

  • Creatore Discussione Creatore Discussione niki54
  • Data di inizio Data di inizio

niki54

Nuovo Utente
29 Nov 2006
11
0
0
ciao sono nuovo e volevo chiedervi una cosa...
io sto facendo per prova un piccolo programmino, ma c'è un errore che non riesco a risolvere.
ho scritto

...
case f of
'var1': writeln ('scritteciao')
'var2': writeln ('ciaociao')
ecc.
...

la variabile f è di tipo string e mi dovrebbe venire se scrivo var1 "scritteciao", ma mi fa "error 39: ordinal expression expected
qualcuno mi può dire cosa fare?

grazie in anticipo
 
non va lo stesso, poi il cursore lo mette sul "of", quindi credo che sia lì l'errore...
 
provo, ma è una cosa un po' stupida che sto facendo per allenarmi...

ops, il copia incolla non va, non mi allega il file... come devo fare?
 
ho provato a fare il tuo programma ma mi da lo stesso errore...
Ho provato a mettere f:char e mi va mettendo

case f of
'a':writeln('ciao');
...
...
end;


Ma con string[4] non mi va.... :boxing:
 
Nel costrutto case la parola case è seguita da un'espressione il cui risultato deve essere di tipo integer o char e dalla parola of.
Quindi se utilizzi una variabile f come integer o char il case funziona. Non funziona con f dichiarata come string.
 
Proprio come ha scritto peter74 :)

In pascal (ma anche in java e in c) non possono essere messe stringhe su un case (o uno switch se java o c)... devono essere espressioni integer o compatibili (quindi accetta anche i char)
 
problemi pascal

scusate anche io sto provando a fare delle piccole cosette con pascal, però arrivati a questo punto mi sono bloccato.
Chiedo se qualcuno potrebbe aiutarmi
il programma è questo:

program equazion2grado;
uses crt;
var a,b,c,delta,x1,x2:real;
begin
clrscr;
writeln('Inserisci il coefficente della x al quadrato');
readln(a);
writeln('Inserisci il coefficente della x');
readln(b);
writeln('Inserisci il termine noto');
readln(c);

delta:=sqrt(b*b-4*a*c);

case delta of

>0: begin
x1:=(-b-delta)/(2*a);
x2:=(-b+delta)/(2*a);
writeln('Il risultato dell'equazione è x1=',x1:2:2,'e x2=',x2:2:2);
end;
=0: begin
x1:=(-b)/(2*a);
x2:=(-b)/(2*a);
writeln('Il risultato delle due x sarà lo stesso e quindi x1=x2=',x1:2:2);
end;
<0: writeln('Nessuna soluzione reale');
end.

Il problema sta nell'"of" di case mi dice errore 39 se qualcuno lo potrebbe gentilmente controllare, mi affido nelle vostre mani.
Grazie in anticipo.
Seby
 

Discussioni simili