Pascal. Процедура. Небольшой вопрос

Ответить
keywanda
Сообщения: 10
Зарегистрирован: 04 дек 2008, 10:51

У меня процедура.. которая должна находить элементы кратные трём в матрице и выводить их на экран. Даны 2 матрицы. Выглядит эта процедура у меня так..

Код: Выделить всё

procedure krat(var x:matr, k:integer);
var i:integer; 
begin for i:=1 to k do begin
if x[i,k] mod 3=0 then
writeln('элементы кратные трём'); end;
write(x[i,k]);
end;
то есть если элемент делить на 3 и остаток будет 0, тогда выводить на экран этот элемент.. но у меня не получается это.. во-первых программа как то зацикливается и фразу 'элементы кратные трём' мне выводит несколько раз, во-вторых, если например в матрицах есть элементы 3,6,9.. он выводит только 3 и 9 и 6 вообще не выводит.. иногда выводит не понятные числа типа 4 или 1..

в чём проблема здесь? подскажите, пожалуйста!!
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Судя по списку входных параметров рискуну предположить, что матрица квадратная, размера "K на K"....

Код: Выделить всё

procedure krat(var x:matr, k:integer);
var i,j:integer; found:boolean;
begin 
  found:=false;
  for i:=1 to k do for j=1 to k do if x[i,j] mod 3=0 then begin
    if found then write('; ') else write('элементы кратные трём:');
    write(x[i,k]);
    found:=true;
  end;
end;
Т.е. 'элементы кратные трём:' печатается только первй раз, все остальные разы печатается разделитель ";".
keywanda
Сообщения: 10
Зарегистрирован: 04 дек 2008, 10:51

да! всё именно так!! спасибо большое :cool:
Ответить