Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на работу с двумерными массивами и файлами.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Andrewshkovskii
ЗАДАНИЕ :
Дана вещевственная матрица {Aij}3,3 .Найти за 1 просмотр матрицы сумму элементов расположенным ниже главной диагонали.
В программе составить интерфейс :
Откуда читать данные ?
1- Клавиатура. -> записать в файл?1- Нет.2 ДА. есле да,то указаит имя файла.
2- из файла. указать путь к файлу. Осущевуствить обработку возможной ошибки открытия файла.(Вот с этим проблемы).
3- Выход.

{=================shapka !========================}
program z4;
 uses crt;
 const
  N=3;
  M=3;
 type
  Matrix = array[1..n,1..m] of integer;
 var
  a:matrix;
  i,j,k:integer;
  g,c:char;
  f:file of integer;
  path,name:string;

  procedure matrica;
          begin
            for i:=1 to n do
            for j:=1 to m do
            if j<i then
                    k:=k+a[i,j];
            writeln('Summa elementov nije glavnoi diagonali = ',k);
            readkey;
           end;
{=====================konec shapki 
===============}
begin
   clrscr;
   Writeln('Otkyda 4itat dannie?');
   Writeln ('1 - S Klaviatyri');
   Writeln ('2 - Iz Faila');
   Writeln ('3 - Exit');
   readln(g);
   case g of
       '3' : exit;
{======================Vvod s klaviatyri============}
       '1' : begin
 Writeln ('Vvodim matricy po-elementno');
 For i:=1 to n do begin
                   For j:=1 to m do begin
                                     write('A[',i,j,']= ');
                                     readln(A[i,j])
                                    end;
                  end;
 For i:=1 to n do begin
                   For j:=1 to m do write(A[i,j],' ');
                   writeln;
                  end;
             end;
{=========================KONEC VVDODA S KLAVIATYRI=================}

{=========================4TENIE IZ FILE================}
'2' : begin
       repeat
       Writeln('Ykajite pyt k faily');
       readln(path);
       assign(f,path);
       {$i-};
       reset(f);
       {$i+}
       if (IOresult =1) then writeln('Error opening file!');
       until (IOresult = 0);
             for i:=1 to 3 do begin
                         for j:=1 to 3 do begin
                         read(f,a[i,j]);
                         write (a[i,j],' ');
                          end;
                           writeln;
                          end;
                         end;
       {$i+}
      end;
{======================KONEC 4TENIYA FILE==================}
 Writeln('Zapisat Dannie v file?');
 Writeln('1 - Net');
 Writeln('2 - Da');
 readln(c);

 case c of
     '1' : begin
            matrica;
           end;
{=====================Zapis' v file==============}
     '2' : begin
            writeln ('Vvedite imya faila');
            readln(name);
            assign (f,name);
            rewrite (f);
            for i:=1 to n do
             for j:=1 to m do
            write (f,a[i,j]);
            close(f);
            matrica;
            end;
            end;
           end.
{=============Konec ZAPISI V FILE=========================}



Не получаеться обработать ошибку...или открывает не сущевствующий файл или же выкидывает с ошибкой открытия файла.
мисс_граффити
а закрывать файл после чтения не надо?...

ошибка - при чтении или при записи?
Andrewshkovskii
Да я все уже понял,и исправил)есле кому надо...
{=================shapka !========================}
program z4;
 uses Crt;
 const
  N=3;
  M=3;
 type
  Matrix = array[1..n,1..m] of integer;
 var
  a:matrix;
  i,j,k:integer;
  g,c:char;
  f:file of integer;
  bool:boolean;
  path,name:string;

  procedure matrica;
          begin
            for i:=1 to n do
            for j:=1 to m do
            if j<i then
                    k:=k+a[i,j];
            writeln('Summa elementov nije glavnoi diagonali = ',k);
            readkey;
           end;
{=====================konec shapki 
===============}
begin
   clrscr;
   Writeln('Otkyda 4itat dannie?');
   Writeln ('1 - S Klaviatyri');
   Writeln ('2 - Iz Faila');
   Writeln ('3 - Exit');
   readln(g);
   case g of
       '3' : exit;
{======================Vvod s klaviatyri============}
       '1' : begin
 Writeln ('Vvodim matricy po-elementno');
 For i:=1 to n do
                  begin
                   For j:=1 to m do
                                    begin
                                     write('A[',i,j,']= ');
                                     readln(A[i,j])
                                    end;
                  end;
                   For i:=1 to n do
                    begin
                     For j:=1 to m do write(A[i,j],' ');
                     writeln;
                    end;
                  end;
{=========================KONEC VVDODA S KLAVIATYRI=================}

{=========================4TENIE IZ FILE================}
'2' : begin
       bool:=true;
        repeat
         {$I-}
         if not(bool) then
                       writeln('Error opening file!');
                       bool:=false;
                       Writeln('Ykajite pyt k faily');
                       readln(path);
                       assign(f,path);
                       reset(f);
        until (IOresult=0);
             for i:=1 to 3 do
                            begin
                             for j:=1 to 3 do
                                            begin
                                             read(f,a[i,j]);
                                             write (a[i,j],' ');
                                            end;
                                             writeln;
                                            end;
                                             close(f);
                                             matrica;
                                             exit;
                                            end;
                                            {$I+}
                            end;
{======================KONEC 4TENIYA FILE==================}
 Writeln('Zapisat Dannie v file?');
 Writeln('1 - Net');
 Writeln('2 - Da');
 readln(c);
 case c of
     '1' : begin
            matrica;
            exit;
           end;
{=====================Zapis' v file==============}
     '2' : begin
            writeln ('Vvedite imya faila');
            readln(name);
            assign (f,name);
            rewrite (f);
            for i:=1 to n do
             for j:=1 to m do
                            write (f,a[i,j]);
                            close(f);
                            matrica;
           end;
           end;
end.
{=============Konec ZAPISI V FILE=========================}

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.