2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Ввод и вывод массива (Delphi)
Сообщение03.11.2014, 22:43 
Аватара пользователя
Нужно осуществить ввод элементов двумерного массива с помощью repeat.. until, а вывод-while. Укажите, пожалуйста, на ошибку мою:
Код:
program asd;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
    TMatrix=array [1..30, 1..30] of integer;
Var k,l:integer;
    b:TMatrix;

procedure vvod (m, n:integer; var a:Tmatrix);
Var
    i, j:integer;
begin
   i:=1;
   j:=1;
   randomize;
    repeat
    i:=i+1;
      repeat
      j:=j+1;
    a[i,j]:=random(26)-4;
    until i<=m;
      until j<=n;
end;

procedure vivod (m, n:integer; var a:Tmatrix);
Var
    i, j:integer;
begin
  i:=1;
  while i<=m do
  begin
   j:=1;
    while j<=n do
      begin
        write(a[i, j]:4);
        j:=j+1;
      end;
      i:=i+1;
       writeln;
  end;
end;
Begin
  writeln ('kol-vo strok');
  readln (k);
  writeln ('kol-vo stolbcov');
  readln (l);
  vvod(k,l,b);
  vivod (k,l,b);
readln;
End.

 
 
 
 Re: Ввод и вывод массива (Delphi)
Сообщение03.11.2014, 22:45 
j надо инициализировать в начале каждого цикла по i.

 
 
 
 Re: Ввод и вывод массива (Delphi)
Сообщение03.11.2014, 22:47 
Аватара пользователя
venco в сообщении #926198 писал(а):
j надо инициализировать в начале каждого цикла по i.

Так я же его задал.

 
 
 
 Re: Ввод и вывод массива (Delphi)
Сообщение03.11.2014, 22:55 
Во вводе тоже.

 
 
 
 Re: Ввод и вывод массива (Delphi)
Сообщение04.11.2014, 11:57 
Аватара пользователя
fronnya
1) Начните с того, что приведите в порядок левые отступы в коде, как в учебнике: операторы одного уровня вложенности должны начинаться с одной позиции, тогда легче будет исправлять код. И писать нужно однообразно, а у Вас то "Begin", а то "begin".
2) У Вас две процедуры с двумя вложенными циклами в каждой. Подумайте, не перепутали ли Вы счетчики этих циклов, правильно ли записали условия выхода? Все ли элементы массива записываются, читаются? Например, как обстоит дело с записью в первый элемент?:
Используется синтаксис Delphi
a[1,1]:=random(26)-4;

3) Отладить будет легче, если после этого оператора поставить:
Используется синтаксис Delphi
a[i,j]:=n*i+j;
Потом его уберете, когда отладите.
4) Попробуйте пошагово пройти программу в отладчике Delphi и посмотрите какие значения принимают переменные i, j. Какие нужно?

Общее замечание. Для начинающих IDE Delphi сложновато. Был когда-то Dr Pascal: там такие программки любой новичок в минуты отлаживал в режиме анимации.

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group