Pascal/Turbo Pascal - error de compilacion

   
Vista:

error de compilacion

Publicado por manu (2 intervenciones) el 05/04/2009 05:38:07
Hola, que tal? estoy haciendo un tateti en pascal.. cuando lo compilo me tira el siguien error:
** ERROR ILLEGAL QUALIFIER **
este es el codigo del programa y el error es en las lineas q estan marcadas dentro de la funcion leertabla...

PROGRAM tateti;
USES
Crt;
VAR
A:ARRAY[1..3,1..3] OF char;
turno:byte;
partida,simbolo:char;

PROCEDURE jugada(simbolo:char);
VAR
jugi,jugj:integer;
LABEL
ingreseotro;
BEGIN
writeln;
write(' Jugador ',simbolo,', marque una casilla: ');
ingreseotro:
read(jugi,jugj);
IF (jugi<=3) AND (jugi>=1) AND (jugj<=3) AND (jugj>=1) THEN {si esta en el rango}
BEGIN
IF (A[jugi,jugj]<>'X') AND (A[jugi,jugj]<>'O') THEN {si esta vacio}
A[jugi,jugj]:=simbolo
ELSE
BEGIN
write(' El casillero ya esta marcado, ingrese otro: ');
GOTO ingreseotro;
END;
END
ELSE
BEGIN
write(' El numero de casillero es invalido, ingrese otro: ');
GOTO ingreseotro;
END;
END;

FUNCTION leertabla(A:ARRAY OF char;simbolo:char):char;
BEGIN
{en estas lineas es el error}
IF ((A[1,1]=simbolo) AND (A[1,1]=A[2,2]) AND (A[1,1]=A[3,3])) THEN {diagonal 1º}
leertabla:=simbolo
ELSE IF ((A[1,3]=simbolo) AND A[1,3]=A[2,2]) AND (A[1,3]=A[3,1]) THEN {diagonal 2º}
leertabla:=simbolo
ELSE IF ((A[1,1]=simbolo) AND A[1,1]=A[1,2]) AND (A[1,1]=A[1,3]) THEN {fila 1}
leertabla:=simbolo
ELSE IF ((A[2,1]=simbolo) AND A[2,1]=A[2,2]) AND (A[2,1]=A[2,3]) THEN {fila 2}
leertabla:=simbolo
ELSE IF ((A[3,1]=simbolo) AND A[3,1]=A[3,2]) AND (A[3,1]=A[3,3]) THEN {fila 3}
leertabla:=simbolo
ELSE IF ((A[1,1]=simbolo) AND A[1,1]=A[2,1]) AND (A[1,1]=A[3,1]) THEN {columna 1}
leertabla:=simbolo
ELSE IF ((A[1,2]=simbolo) AND A[1,2]=A[2,2]) AND (A[1,2]=A[3,2]) THEN {columna 2}
leertabla:=simbolo
ELSE IF ((A[1,3]=simbolo) AND A[1,3]=A[2,3]) AND (A[1,3]=A[3,3]) THEN {columna 3}
leertabla:=simbolo
{hasta aca}
ELSE
leertabla:=' ';
END;

PROCEDURE mostrartabla();
VAR
i,j:byte;
BEGIN
ClrScr;
writeln;
writeln(' TA-TE-TI');
writeln;
writeln(' 1 2 3');
writeln(' +-----------+');
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 3 DO
BEGIN
IF j=1 THEN
write(' ',i,'| ',A[i,j],' | ')
ELSE
write(A[i,j],' | ');
END;
writeln;
IF i=3 THEN
writeln(' +-----------+')
ELSE
writeln(' |---+---+---|');
END;
END;

BEGIN
partida:=' ';
turno:=0;
WHILE ((partida=' ') AND (turno<=9)) DO
BEGIN
turno:=turno+1;
IF ((turno mod 2)=0) THEN
simbolo:='O'
ELSE
simbolo:='X';
mostrartabla;
jugada(simbolo);
partida:=leertabla(simbolo);
END;
mostrartabla;
writeln;
IF (partida=' ') THEN
writeln(' Partido empatado!')
ELSE
writeln(' El jugador ',simbolo,' gano la partida!');
END.

el problema es con el array q le paso como argumento a la funcion leertabla, me parece...
yo le paso como argumento dentro del cuerpo del programa, un array bidimensional.. pero no se como declararlo en la funcion para que sea bidimensional, porq no me deja ni poniendole el rango (ej: A:ARRAY[1..3,1..3] OF char; ) ni de esta forma A : ARRAY OF ARRAY OF char;

por favor fijense si alguien me puede ayudar.. porq me esta volviendo loco!!! jej
muchas gracias

saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:error de compilacion

Publicado por Miguel (162 intervenciones) el 05/04/2009 17:03:24
El problema pasa por como utilizas el concepto de modularización. Que tengas una variable global no significa que puedas utilizarla en una acción o función sin pasarla como parametro. Tambien has decñarado perfiles con varios parametros, pero a la hora de invocar ese modulo en el cuerpo principal del programa no le pasas todos los parametros, solo uno, pascal no sabe que es lo que queres hacer. Te recomiendo que mejores eso, y declara al arreglo bidimensional como un tipo asi no tenes que declararlo 50 veces.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error de compilacion

Publicado por francisco panchi_09_09@hotmail.com (1 intervención) el 12/07/2011 21:23:30
HOLA CHICOS. ME PODES PASAR EL CODIGO DE PASCAL DE TATETI BIEN HECHO?

LO NECESITO PARA UN TRABAJO EN LA FACULTAD

UN ABRAZO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar