Newsgroup: it.comp.lang.pascal
Titolo: Non capisco perchè non va...HELP

Sia dato un array bidimensionale A di dimension [NxN] di interi con N pari
ed un intero M<=N/2. Scrivere una funzione che restituisca TRUE se i valori
appartenenti alla cornice M della matrice sono uguali tra loro.
Esempio: M=2
  8   9 15 21 13  6
  4 20 20 20 20  5
12 20   8   5 20  1
  0 20 14 50 20  6
  3 20 20 20 20 18
  4   6   8 12 20  6
L'output sarà TRUE poichè tutti gli elemtni appartenenti alla seconda
cornice (M=2) assumono valore 20
Io ho fatto questo:
Program Uguaglianza;
type righe=1..100;
     colonne=1..100;
     matrice=array[righe,colonne] of integer;
var a:matrice;
    i,j,maxrighe,maxcolonne:integer;
    uguali:boolean;
function uguali(var a:matrice;maxrighe,maxcolonne:integer):boolean
var h,k,indice,indice1:integer;
    controllo1,controllo2:boolean;
begin
indice:=1;
indice1:=1;
controllo1:=true;
controllo2:=true;
while not indice=maxrighe-1 do begin
                             for k:=1 to maxcolonne do begin
                                                       if
a[indice,k]<>a[indice+1,k] then controllo1:=true;
                                                       end;
                             if controllo1=true then indice:=maxrighe-1
                             else indice:=indice+1;
                             end;
if controllo1=false then uguali:=false
else begin
     while not indice1=maxcolonne-1 do begin
                                       for h:=1 to maxrighe do begin
                                                               if
a[h,indice1]<>a[h,indice1+1] then controllo2:=false
                                                               end;
                                       if controllo2=true then
indice1:=maxcolonne-1
                                       else indice1:=indice1+1;
                                       end;
     end;
if controllo2=false then uguali:=false
else uguali:=true;
end;
{------------------MAIN--------------------------}
begin
writeln;
write('Inserisci il numero delle righe: ');
readln(maxrighe);
writeln;
write('Inserisci il numero delle colonne: ');
readln(maxcolonne);
for i:=1 to maxrighe do begin
                        for j:=1 to maxcolonne do begin
                                                  write('Inserisci il numero
della ',i,'ø riga e ',j,'ø colonna: ');
                                                  readln(a[i,j]);
                                                  end;
                        end;
ugu(a,maxrighe,maxcolonne,uguali);
writeln(uguali);
readln;
{-------------SPIEGAZIONI-----------------
Il ragionamento mi sembra logico, ma non capisco dove sbaglio!}
Ciauz Gianni

Scusate ho sbagliato a postare l'esercizio:
Program Cornice;
type righe=1..100;
     colonne=1..100;
     matrice=array[righe,colonne] of integer;
var a:matrice;
    m,n,i,j:integer;
function verifica(var a:matrice;n,m:integer):boolean;
var h,k:integer;
    controllo:boolean;
begin
controllo:=true;
k:=m;
for h:=m to (m-n) do begin
                   if a[h,k]<>a[h+1,k] then controllo:=false;
                   end;
if controllo=false then verifica:=false
else begin
     h:=m;
     for k:=m to (m-n) do begin
                            if a[h,k]<>a[h,k+1] then controllo:=false;
                            end;
     if controllo=false then verifica:=false
     else begin
          h:=m-n;
          for k:=m to (m-n) do begin
                                 if a[h,k]<>a[h,k+1] then controllo:=false;
                                 end;
          if controllo=false then verifica:=false
          else begin
               k:=m-n;
               for h:=m to (m-n) do begin
                                      if a[h,k]<>a[h,k+1] then
controllo:=false;
                                      end;
               if controllo=false then verifica:=false
               else verifica:=true;
               end;
          end;
     end;
end;
begin
writeln;
write('Inserisci il numero di righe e di colonne: ');
readln(n);
writeln;
for i:=1 to n do begin
                 for j:=1 to n do begin
                                  write('Inserisci il numero della ',i,'ø
riga e ',j,' colonna: ');
                                  readln(a[i,j]);
                                  end;
                 end;
writeln;
write('Inserisci M: ');
readln(m);
writeln;
writeln(verifica(a,n,m));
readln;
end.