Pascal/Turbo Pascal - Error Type mismatch urgente!!

 
Vista:

Error Type mismatch urgente!!

Publicado por Elena (3 intervenciones) el 15/06/2007 12:09:05
Hola queria saber si me podias ayudar os dejo el codigo y os explico:

PROGRAM Practica8;
CONST
N = 2;
INI = 1;
FIN = 30;
TYPE
TNombre = string[FIN];
TEdad = string[N];
TCurso = string[N];
TAlumno = record
nombre: TNombre;
Edad: TEdad;
Curso: TCurso;
END;
TAgenda = array [INI..FIN] OF TAlumno;
VAR
alumno: TAlumno;
agenda: TAgenda;
op: integer;
PROCEDURE LeerAlumno (VAR alumno: TAlumno);
BEGIN
with alumno do begin
write('Nombre: ');
readln(nombre);
writeln('Edad: ');
readln(Edad);
writeln('Curso: ');
readln(Curso);
end;
END;
PROCEDURE Menu (VAR op: integer);
VAR
n: integer;
BEGIN
n := 0;
REPEAT
writeln('Elija una opcion');
writeln('1 - Anadir alumno');
writeln('2 - Mostrar la media de edad de los alumnos');
writeln('3 - Mostrar los alumnos ordenados alfabeticamente');
writeln('4 - Mostrar los alumnos ordenados por curso y alfabeticamente');
writeln('5 - Salir del programa');
readln(op);
WHILE op = 1 DO
n := n+1;
UNTIL (op>=1) AND (op<=5)
END;
PROCEDURE MediaEdad;
VAR
media,suma: integer;
i: 1..FIN;
n: integer;
edad: TEdad;
BEGIN
suma:= 0;
for i:= 1 to FIN do
suma:= suma + (agenda[i].edad);
writeln(suma);
media:= suma/n;
END;

En el procedure MediaEdad me da un error: Type Mismatch justo en la linea del writeln(suma) y no entiendo porque es...ya que he mirado en los libros y en teoria tendria que estar bien puesto y bien definido...Si me pudierais ayudar os lo agradeceria mucho, muchas gracias. Elena
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 Type mismatch urgente!!

Publicado por Diego Romero (996 intervenciones) el 15/06/2007 16:09:30
Pues lo que yo veo es que el error lo marca en la línea siguente a esa que señalas tú:

media:= suma/n;

puesto que estás haciendo una división real (la barra se usa para dar como dividendo un número real) pero la variable receptora es de tipo integer, de allí que los "tipos no coinciden".
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
sin imagen de perfil

RE:Error Type mismatch urgente!!

Publicado por Mechanic (177 intervenciones) el 16/06/2007 00:42:11
Hola Elena.

En tu procedimiento tienes la variable "suma" que es de tipo integer.
Luego tienes: suma:= suma + (agenda[i].edad);

A mi me parece que "edad" la tienes declarada como TEdad que es de tipo
string[N];

Yo creo este es el problema.
Suerte !
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
sin imagen de perfil

RE:Error Type mismatch urgente!!

Publicado por Mechanic (177 intervenciones) el 16/06/2007 00:49:34
Además media debe ser de tipo real como decía Diego Romero.
Aquí te mando el código que si compila :

PROGRAM Practica8;
CONST
N = 2;
INI = 1;
FIN = 30;
TYPE
TNombre = string[FIN];
TEdad = integer;
TCurso = string[N];
TAlumno = record
nombre: TNombre;
Edad: TEdad;
Curso: TCurso;
END;
TAgenda = array [INI..FIN] OF TAlumno;
VAR
alumno: TAlumno;
agenda: TAgenda;
op: integer;
PROCEDURE LeerAlumno (VAR alumno: TAlumno);
BEGIN
with alumno do begin
write('Nombre: ');
readln(nombre);
writeln('Edad: ');
readln(Edad);
writeln('Curso: ');
readln(Curso);
end;
END;
PROCEDURE Menu (VAR op: integer);
VAR
n: integer;
BEGIN
n := 0;
REPEAT
writeln('Elija una opcion');
writeln('1 - Anadir alumno');
writeln('2 - Mostrar la media de edad de los alumnos');
writeln('3 - Mostrar los alumnos ordenados alfabeticamente');
writeln('4 - Mostrar los alumnos ordenados por curso y alfabeticamente');
writeln('5 - Salir del programa');
readln(op);
WHILE op = 1 DO
n := n+1;
UNTIL (op>=1) AND (op<=5)
END;
PROCEDURE MediaEdad;
VAR
suma: integer;
media: real;
i: 1..FIN;
n: integer;
edad: TEdad;
BEGIN
suma:= 0;
for i:= 1 to FIN do
suma:= suma + (agenda[i].edad);
writeln(suma);
media:= suma/n;
END;
begin
end.
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

RE:Error Type mismatch urgente!!

Publicado por matias (1 intervención) el 05/09/2007 16:49:30
Buen dia, yo ecien estoy empezando a programar y para practicar se me ocurrio hacer un programa que sume, reste, multiplique y divida dos numeros( solo dos numeros que yo le pongo antes de compilar).

la cosa es que en la parte que va Write, en la primera parte, me marca un error.


pongo todas las cosas esas que hay que escribir, no me acuerdo como se llaman en este momento, pero es eso que se pone por ejemplo A: = 255

despues de eso pongo write y todo eso y me marca error

me exlican por que es????
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