[ Foro de Pascal ]

error de compilacion type mismatch

27-Jun-2011 10:25
oscar gomez
3 Respuestas

Hola profesor Nacho.

estoy realizando un ejercicio de arrays paralelos, que trata de lo siguiente:
tengo un array bidimensional (tabla o matríz) de 5 filas y 4 columnas en la cual se almacenará las calificaciones de 3 examenes en 3 columnas y la cuarta columna se utilizará para almacenar su promedio respectivo, además de un array unidimensional (vector) donde en forma paralela se almacenarán los nombres de los alumnos de la siguiente forma :

         alumno                        examen
                              ex1   ex2   ex3   promedio

 alu[1]    x                  3.3   2.2   3.4     2.9

  ...                                 ...
 alu[5]    z                   ...            ...


bien , lo que se desea es:desplegar en pantalla los promedios ordenados en forma descendente.

bien he realizado lo siguiente, pero al compilarlo me da el error mencionado en el asunto el error te lo muestro donde estan los asteriscos**.

Program Matriz_Vector;

Uses Crt;
Const
 MaxAlumno = 5;
 MaxExamen = 4;{Columna 4 almacena el promedio}
Var
 Alumno     :array[1..MaxAlumno]              of string[10];
 examen     :array[1..MaxAlumno,1..MaxExamen] of real;
 aux_examen :array[1..MaxExamen]  of real;
{reserva 20 posiciones de memoria de datos reales :
5 filas por 4 columnas}
 promedio     :real;
 aux_alumno   :string [10];
 i,j,col,ren  :byte;
begin
 ClrScr;
 {lectura de arrays paralelos de manera simultánea}
 gotoxy(5,5);Write('Nombre');
 gotoxy(20,5);Write('Examen1   Examen2   Examen3   Promedio');
 col:=5;ren:=6;
 for i:=1 to MaxAlumno do
   begin
     gotoxy(col,ren);
     ReadLn(alumno[i]); {lectura de vector}
     col:=22;promedio:=0;
     for j:=1 to MaxExamen-1 do
       begin
         gotoxy(col,ren);
         ReadLn(examen[i,j]); {lectura de matríz}
         promedio:=promedio+examen[i,j];
         col:=col+10
       end;
     examen[i,j+1]:=promedio/3;
     gotoxy(col,ren);Write(promedio/3:3:2);
     inc(ren);
     col:=5
   end;
 {ordenación}
 for i:=1 to MaxAlumno-1 do
 for j:=i+1 to MaxAlumno do
   begin
     if examen[i,MaxExamen]<examen[j,MaxExamen] then
       begin
         {intercambio de nombres en vector}
         aux_alumno:=alumno[i];
         alumno[i] :=alumno[j];
         alumno[j] :=aux_alumno;
         {intercambio de calificaciones en matríz} *****aqui me da el error*****
         aux_examen:=examen[i];
         examen[i]:=examen[j];
         examen[j]:=aux_examen;

       end
   end;
 {recorrido de matríz y vector}
 gotoxy(25,14);Write('Datos ordenados');
 gotoxy(5,16);Write('Nombre');
 gotoxy(20,16);Write('Examen1 Examen2 Examen3 Promedio');
 col:=5;ren:=17;
 for i:=1 to MaxAlumno do
   begin
     gotoxy(col,ren);
     Write(alumno[i]);
     col:=22;
     for j:=1 to MaxExamen do
       begin
         gotoxy(col,ren);
         Write(examen[i,j]:3:2);
         col:=col+10;
       end;
     col:=5;
     inc(ren);
   end;
 readkey;
end.



he intentado hacer lo siguiente tambien  pero tampoco me funciona me sale el mismo error:

declarar
aux_examen :array[1..MaxAlumno,1..MaxExamen]  of real;

y en la ordenacion:

   aux_examen:=examen[i,j];
         examen[i,j]:=examen[j,i];
         examen[j,i]:=aux_examen;

pero me da el mismo error como te comento, que podria hacer para solucionarlo pues como ves es lo unico que me falta el resto considero que esta bien.
mil gracias profesor Nacho.



27-Jun-2011 10:40
oscar gomez

PROFESOR YA LO HE SOLUCIONADO.


27-Jun-2011 11:31
oscar gomez

Hola profesor, disculpa que te haya escrito que ya lo habia solucionado , lo que paso es que hice un cambio pero al ejecutarlo me lo permitio pero lo sresultados no son correctos. asi que el asunto es el mismo que el inicial es decir me da el error de mismatch


27-Jun-2011 18:15
oscar gomez

HOLA PROFESOR NACHO
AHORA SI YA LO SOLUCIONE CORRECTAMENTE, GRACIAS Y DISCULPAS POR HABER ENVIADO MI DUDA APRESURADAMENTE.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)