Pascal/Turbo Pascal - error de compilacion ayuda

 
Vista:

error de compilacion ayuda

Publicado por Raul Gallardo (1 intervención) el 12/05/2008 02:48:45
Hola: resulta que me da un fallo a la hora de compilar en la linea 76, me pone Error 26: type mismatch. sin embargo en la linea 32 tengo algo muy parecido y no me da dicho fallo de compilación. Si alguien me puede ayudar se lo agradeceria. Un saludo y muchas gracias.
PD: a continuacion les dejo ´lo que llevo por si ven el fallo

PROGRAM Avion1 (input,output);
USES
crt;
CONST
MINFILA = 1;
MAXFILA = 25;
PRIMERASIENTO= 'a';
ULTIMOASIENTO= 'f';
TYPE
{Tclase = (bussines, bussines_economy, turista);}
Tplaza = string [2];
TEstado = (L, O);
Tasientos=array [MINFILA..MAXFILA,PRIMERASIENTO..ULTIMOASIENTO]
of TEstado;
VAR
Pasaje: Tasientos;
PROCEDURE ResetearPasaje (VAR Pasaje: Tasientos); {pone todos los asientos libres}
VAR
i: integer;
j: char;
BEGIN
FOR i:=MINFILA TO MAXFILA DO
FOR j:= PRIMERASIENTO TO ULTIMOASIENTO DO
Pasaje[i,j]:=L;
END;
PROCEDURE EscribirFila (VAR asientos : Tasientos ; letra: char);
VAR
i: integer;
BEGIN {EscribirFila}
write (letra);
FOR i:=MINFILA TO MAXFILA DO BEGIN
IF asientos[i,letra]=L THEN
write('L' , ' ')
ELSE
write('O', ' ');
END;
writeln;
END; {EscribirFila}

PROCEDURE MostrarAvion (VAR sillon: TAsientos);
VAR
i: integer;

BEGIN {Mostrar Avion}
writeln ('BOEING 737 - 300');
writeln ('Estado de las reservas');
EscribirFila(pasaje, 'A');
EscribirFila(pasaje, 'B');
EscribirFila(pasaje, 'C');
FOR i:=MINFILA TO MAXFILA DO
write (i, ' ');
EscribirFila(pasaje, 'D');
EscribirFila(pasaje, 'E');
EscribirFila(pasaje, 'F');
writeln;
writeln ('L - Libre');
writeln ('O - Ocupado');
END; {MostrarAvion}
PROCEDURE sinasientos(VAR opcion:char;cantidad:integer);
BEGIN
REPEAT
write('No se han conseguido colocar ');
writeln(cantidad,' de asientos juntos');
writeln('¨Quiere reservar los asientos separados? s/n');
readln(opcion);
UNTIL (opcion='s') OR (opcion='S') OR (opcion='n') OR (opcion='N');
END;
PROCEDURE bucle (VAR situacion:Tasientos;number,l:integer;
VAR counter:integer;VAR k:char; VAR suma:integer);
BEGIN
counter:=0;
k:=PRIMERASIENTO;
suma:=0;
REPEAT
IF (situacion[l,k]=L) THEN BEGIN
k:=succ(k);
counter:=counter+1;
suma:=suma+1;
END;
ELSE BEGIN
counter:=0;
k:=succ(k);
END;
UNTIL (k=ULTIMOASIENTO) OR (counter=number);
END;
PROCEDURE aux (VAR asiento:Tasientos; VAR fil:integer; maximo,cuantity:integer);
VAR
i,contador,contaux:integer;
j,option:char;
BEGIN
contador:=0;
contaux:=0;
j:=PRIMERASIENTO;
IF fil=-1 THEN BEGIN
i:=0;
REPEAT
i:=i+1;
bucle(butaca,cuantity,i,contador,j,total);
UNTIL (i=maximo) OR (cuantity=contador);
contaux:=contaux+1;
END;
ELSE BEGIN
bucle(butaca,cuantity,i,contador,j,total);
contaux:=contaux+1;
END;
IF (cuantity<>contador) AND (linea<>-1)THEN BEGIN
busqueda(butaca,tipo,-1,cuantity);
contaux:=contaux+1;
END;
IF total=0 THEN
writeln('Esta clase est� completa')
ELSE BEGIN
IF (contador<>cuantity) AND (contaux:=1) THEN BEGIN
sinasientos(option,cuantity);
IF option='s' OR 'S' THEN BEGIN
busqueda(butaca,tipo,linea,cuantity-1);
busqueda(butaca,tipo,linea,1);
END;
ELSE BEGIN
REPEAT
REPEAT
butaca[i,j]=O;
j:=pred(j);
contador:=contador-1;
UNTIL (contador=0) OR (j<PRIMERASIENTO);
j:=ULTIMOASIENTO;
i:=i-1;
UNTIL (i=0) OR (contador=0);
write('Los asientos se han ');
writeln('reservados correctamente');
END;
END;
END;


PROCEDURE HacerReserva (VAR sillon: TAsientos);
VAR
numero, fila, clase, total,i,lugar,categoria:integer;
asiento,eleccion:char;
BEGIN
asiento:=PRIMERASIENTO;
REPEAT
writeln('Introduzca la clase en la que quiere viajar');
writeln('1-Bussines');
writeln('2-Bussines Economy');
writeln('3-Turista');
readln(clase);
UNTIL (clase>=1) AND (clase<=3);
REPEAT
writeln('�Prefiere elegir el numero de la fila? s/n');
readln(eleccion);
UNTIL (eleccion='n') OR (eleccion='N') OR (eleccion='s') OR
(eleccion='S');
IF (eleccion='s') OR (eleccion='S') THEN BEGIN
writeln('Introduzca el n�mero de asientos que est�n buscando');
readln(numero);
CASE clase OF
1:BEGIN
writeln('Filas 1-2');
readln(fila);
END;
2:BEGIN
writeln('Filas 3-8');
readln(fila);
END;
3:BEGIN
writeln('Filas 9-25');
readln(fila)
END;
END;
END
ELSE
fila:=-1;
END;
busqueda (sillon,clase,fila,numero);
END;
PROCEDURE busqueda (VAR butaca:TAsientos; tipo, linea,cantidad:integer);
VAR
i,contador,contaux:integer;
j,option:char;
BEGIN
contador:=0;
contaux:=0;
j:=PRIMERASIENTO;
CASE tipo OF
1:aux(butaca,linea,2,cantidad);
2:aux(butaca,linea,8,cantidad);
3:aux(butaca,linea,25,cantidad)
END;
END;

PROCEDURE AnularReserva (VAR Asiento: TAsientos);
VAR
plazaAnu: Tplaza;
num: integer;
letra, letraAux: char;

BEGIN {AnularReserva}
REPEAT
REPEAT {Comprobar asiento v�lido}
writeln ('Introduzca asiento reservado P.e : 4B')
readln (plazaAnu);
UNTIL ((plazaAnu[1] > 0 AND plazaAnu[1] < 26)
AND ((plazaAnu[2] >='a') AND plazaAnu[2]<='f');
IF (plazaAnu = L) THEN BEGIN
num:= plazaAnu[1];
letra:= plazaAnu[2];
pasaje [num, letra] := L ;
END;
ELSE
writeln ('Asiento NO ocupado')
writeln ('�Cancelar otra reserva? S/N');
readln (letraAux);
UNTIL letraAux <> N
END; {AnularReserva}
FUNCTION menu (m:integer,VAR avion:Tasientos):integer
BEGIN {menu}
writeln('++++++++++++++++++++++++++++++');
writeln('1.- Mostrar estado de la reserva');
writeln('2.- Hacer reserva');
writeln('3.- Cancelar reserva');
writeln('4.- Salir');
writeln('++++++++++++++++++++++++++++++');
writeln('SELECCIONE FUNCION')
readln(m)
CASE m OF
1: menu:= MostrarAvion (avion)
2: menu:= 2
3: menu := 3
4: menu := 4
END; {case of}
END; {menu}


BEGIN {Prog. Principal}

Habría que mostrar un menu para seleccionas una funcion. La funcion menu nos devuelve un valor de 1 a 3. Luego unos IF ELSE dependiendo del valor devuelto por el menu en los que irian los procedimientos de hacer reserva, cancelar reserva

END. {Prog. Principal}
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 ayuda

Publicado por Dani (94 intervenciones) el 12/05/2008 09:08:31
Líneas 79 y 101 DE LO QUE HAS COPIADO: sobre el ; (no es pone antes del ELSE)

En el procedimiento mostrarAvion, no utilizas el parametro sillon para nada

Líneas 98, 103, 107, 110 DE LO QUE HAS COPIADO: no existen los identificadores BUTACA y TOTAL

Línea 113 de lo que has copiado: para comparaciones se usa =, no :=

Línea 107 de lo que has copiado: no existen los identificadores TIPO y BUTACA

y varios errores más de este tipo. Corrige estas cosas (consultando cualquier libro o manual sobre el lenguaje) y después si tienes problemas vuelve a consultar :)

Un saludo!
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