Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2013, 22:02   #1
pitak
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 17
Радость Для каждой из двух целочисленных матриц вывести на печать элементы, кратные трем (Pascal)

Здравствуйте, помогите, пожалуйста с этой задачей, у меня что-то не получается. Где ошибка?
Код:
Program Proced;
type
vector=array [1..100,1..100] of integer;
var
A:vector;
B:vector;
i,j,n,m:integer;
Procedure Kratn(P:vector;
g,r:integer;l,k:integer);
begin
for l:=1 to g do
for k:=1 to r do
if P[l,k]mod 3=0 then
writeln(P[l,k]);
end;
begin
writeln('vvedite razmer matr A n-m');
readln(n,m);
for i:=1 to n do begin
for i:=1 to m do
read (A[i,j]);
writeln;
end;
Kratn(a,n,m,i,j);
writeln ('vvedite razmer matr B n-m');
readln(n,m);
for i:=1 to n do begin
for j:=1 to m do
readln(B[i,j]);
writeln;
end;
Kratn(B,n,m,i,j);
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 11.12.2013 в 22:26.
pitak вне форума Ответить с цитированием
Старый 11.12.2013, 22:15   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Код:
Kratn(a,n,m,i,j);
I и j чему равны?
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 11.12.2013, 22:23   #3
pitak
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 17
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
Код:
Kratn(a,n,m,i,j);
I и j чему равны?
единице, вот тут ошибся for i:=1 to m do, нужно написать for j:=1 to m do
pitak вне форума Ответить с цитированием
Старый 11.12.2013, 22:26   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

И вот тут
Код:
for i:=1 to n do begin
 for i:=1 to m do 
  read (A[i,j]);
Цикл в цикле, а переменная цикла одна - i.

PS А, уже сам заметил.
А про эти последние 2 параметра (формальные ;l,k:integer) - непонятно. Они вроде - не выходные, без var, но и как входные никак не используются, их суют в for, как счетчик.

Последний раз редактировалось type_Oleg; 11.12.2013 в 22:30.
type_Oleg вне форума Ответить с цитированием
Старый 11.12.2013, 22:35   #5
pitak
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 17
По умолчанию

Заработала. Возник вопрос: как переделать программу, если у меня матрица А[10,5], матрица В[7,6]? И как сделать, чтобы не вручную вводить 50 элементов матрицы А и 42 элемента матрицы B,а рандомно?

Последний раз редактировалось pitak; 11.12.2013 в 22:39.
pitak вне форума Ответить с цитированием
Старый 11.12.2013, 22:36   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

по большому счёту ошибка была только вот здесь:
Цитата:
Код:
for i:=1 to n do begin
   for i:=1 to m do

но я позволил себе ещё чуток "причесать" код:
Код:
program Proced;
type
  vector = array[1..100, 1..100] of integer;

procedure Kratn(const P: vector; g, r: integer);
var
  l, k: integer;
begin
  for l := 1 to g do begin
    for k := 1 to r do
      if P[l, k] mod 3 = 0 then
        write(P[l, k]: 3, ' ');
    WriteLn;
  end;
end;

var
  A: vector;
  B: vector;
  i, j, nA, mA, nB, mB: integer;

begin
  writeln('vvedite razmer matr A n-m');
  readln(nA, mA);
  for i := 1 to nA do
    for j := 1 to mA do
      readln(A[i, j]);

  writeln('vvedite razmer matr B n-m');
  readln(nB, mB);
  for i := 1 to nB do
    for j := 1 to mB do
      readln(B[i, j]);

  WriteLn('kratnye v Matrix A: ');
  Kratn(A, nA, mA);

  WriteLn('kratnye v Matrix B: ');
  Kratn(B, nB, mB);
  WriteLn;
  Readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.12.2013, 22:51   #7
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от pitak Посмотреть сообщение
..а рандомно?
Функция Random(n) возвращает случайное равномерно распределенное число от 0 до n-1.
И процедура Randomize к ней - 1 раз. Вне цикла.
type_Oleg вне форума Ответить с цитированием
Старый 11.12.2013, 23:02   #8
pitak
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 17
По умолчанию

Благодарю всех за ответы, очень помогли. Вот про то как изменить программу хотелось бы поподробней, я еще новичок
pitak вне форума Ответить с цитированием
Старый 11.12.2013, 23:03   #9
pitak
Пользователь
 
Регистрация: 11.12.2013
Сообщений: 17
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Функция Random(n) возвращает случайное равномерно распределенное число от 0 до n-1.
И процедура Randomize к ней - 1 раз. Вне цикла.
Да, я ее и имел ввиду, но куда ее поставить в данном коде?
pitak вне форума Ответить с цитированием
Старый 11.12.2013, 23:15   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
program Proced;
type
  vector = array[1..100, 1..100] of integer;

procedure Kratn(const P: vector; g, r: integer);
var
  l, k: integer;
begin
  for l := 1 to g do begin
    for k := 1 to r do
      if P[l, k] mod 3 = 0 then
        write(P[l, k]: 3, ' ');
    WriteLn;
  end;
end;

var
  A: vector;
  B: vector;
  i, j, nA, mA, nB, mB: integer;

begin
  Randomize;
  writeln('vvedite razmer matr A n-m');
  readln(nA, mA);

  writeln('vvedite razmer matr B n-m');
  readln(nB, mB);

  for i := 1 to nA do begin
    for j := 1 to mA do begin
      A[i, j] := Random(100); {случайное  число от нуля до 99}
      Write(A[i,j]:3,' '); {сразу и выведем значение на экран}
    end;
    WriteLn;
  end;

  for i := 1 to nB do begin
    for j := 1 to mB do begin
      B[i, j] := Random(100); {случайное  число от нуля до 99}
      Write(B[i,j]:3,' '); {сразу и выведем значение на экран}
    end;
    WriteLn;
  end;


  WriteLn('kratnye v Matrix A: ');
  Kratn(A, nA, mA);

  WriteLn('kratnye v Matrix B: ');
  Kratn(B, nB, mB);
  WriteLn;
  Readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка матриц.В каждой строке матрицы найти первый минимальный и первый максимальный элементы и поменя ride013 Помощь студентам 4 20.04.2011 13:14
вывести вектор, элементы которого являются наибольшими числами каждой строки матрицы Artur1992 Помощь студентам 1 23.11.2010 11:35
Паскаль. найти все числа кратные трем и посчитать их количество __k1ll3r__ Помощь студентам 6 02.04.2008 16:37