[ Foro de Pascal ]
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.
PROFESOR YA LO HE SOLUCIONADO.
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
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.)