[ Foro de Pascal ]

for loop bounds

28-Dec-2014 03:56
Alberto Rilo Mosteiro
1 Respuestas

Buenas noches  , aver si me podeis ayudar a saber el error a lo mejor es por la hora y que no me doy cuenta, el error que me aparece es el del titulo y me da en la funcion que comprueba los elementos de la diagonal( siempre estamos hablando de la principal)


(*Función que reciba una matriz (N x N) de enteros y devuelva en una estructura de
datos adecuada: el valor de la suma de los elementos de la diagonal principal y si es
cierto o falso que los elementos de la diagonal son todos iguales.*)

PROGRAM basico(input,output);
CONST n=2;

TYPE
 tarray=array[1..n,1..n] of integer;
 
VAR
 a:tarray;
 
 
(****************************************************)
PROCEDURE IntroducirDatos(var a:tarray);
var i,j:integer;
BEGIN
 FOR i:=1 to n do begin
  for j:=1 to n do begin
   writeln ('Introduzca el elemento: ');
    readln(a[i,j]);
    end;
  end;
 end; 
(***************************************************)
FUNCTION SumaDiagonal(protected var a:tarray):integer;
 var i,j:integer;aux:tarray;
 BEGIN
  FOR i:=1 to n do begin
  FOR j:=1 to n do begin
   aux[i,j]:=aux[i,j]+a[i+1,j+1];
   end;
   end;
   SumaDiagonal:=aux[i,j];
 end;  
(******************************************************)
FUNCTION ComprobarDiagonal(protected var a:tarray):boolean;
 var i,j:integer;aux:boolean;
 BEGIN
  FOR i:=1 to n do begin
  FOR j:=1 to n do begin
   if ((a[i,j])=(a[i+1,j+1])) then
    aux:=true;
   if ((a[i,j]<>(a[i+1,j+1])) then 
    aux:=false ;
   end;
  end;
  ComprobarDiagonal:=aux;
 end;
(***************************************************************)
begin
end. 




28-Dec-2014 11:14
Alberto Rilo Mosteiro

Solucionado!


Procedure BUSCAR(Protected VAR Androide:
TAAndroides;planeta:Tcadena15;Manno:Tanno);
 VAR  i,j: Integer;
 Encontrado:Boolean; 

BEGIN
 FOR i:= 1 to MaxAndroides DO
 With Androides[i] Do BEGIN
 if anno = Manno then BEGIN { Busco en planetas}
 j:= 1;
 Encontrado:= FALSE;
 Repeat
 IF PlanetaVisi[j]= Planeta THEN BEGIN
 Encontrado:= TRUE;
 Writeln('Hay que RETIRAR al siguiente androide:');
 Writeln('Nº de Serie:', NumSerie);
 Writeln('Año de fabricación: ',anno);
 Writeln('Sexo: ',Sexo);
 Writeln('Fue fabricado en: ',PlanetaFabri);
 END;
 j:= j+1;
 UNTIL ((j> MaxPlanetas) or (encontrado));
 END;
 END;
END;








(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.)