Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [pascal] двухмерные массивы


Автор: xF1x 17.4.2008, 17:19
Всем доброго времени суток! Помогите пожалуйста решить ШКОЛЬНУЮ задачу! только что начали изучать двухмерные массивы! помогите пожалуйста как можно проще! Задача такая:Вывести количество тех положительных элементов, значения которых кратны заданному с клавиатуры числом. Матрица задана слуайным числом!

Автор: Paulskit 17.4.2008, 18:14
Размерность матрицы ? Значения насколько я понял забивать через Random. Пределы Random ?

Автор: THandle 17.4.2008, 19:39
Если учитывать деление элементов массива равных 0, то вот:

Код

program Project1;

const
  MAX = 5;

var
  Matrix : array [1..MAX, 1..MAX] of integer;
  i, j : integer;
  ch : integer;
  cl : integer;
begin
  Randomize;
  for i := 1 to MAX do
    for j := 1 to MAX do
      begin
        Matrix[i, j] := random(100);
        writeln('[',i,'],[',j,']: ',Matrix[i, j]);
      end;
  writeln('Enter: ');
  readln(ch);
  cl := 0;
  for i := 1 to MAX do
    for j := 1 to MAX do
      if Matrix[i, j] mod ch = 0 then
        inc(cl);
  writeln(cl);
  readln;
end.



Иначе:
Код


program Project1;

const
  MAX = 5;

var
  Matrix : array [1..MAX, 1..MAX] of integer;
  i, j : integer;
  ch : integer;
  cl : integer;
begin
  Randomize;
  for i := 1 to MAX do
    for j := 1 to MAX do
      begin
        Matrix[i, j] := random(100);
        writeln('[',i,'],[',j,']: ',Matrix[i, j]);
      end;
  writeln('Enter: ');
  readln(ch);
  cl := 0;
  for i := 1 to MAX do
    for j := 1 to MAX do
      if Matrix[i, j] <> 0 then
        if Matrix[i, j] mod ch = 0 then
          inc(cl);
  writeln(cl);
  readln;
end.


Добавлено через 3 минуты и 13 секунд
Такс, извиняюсь. Это с выводом массива. Для теста делал. Вот без него.

1 Вариант(с учетом 0):

Код

program Project1;

const
  MAX = 5;

var
  Matrix : array [1..MAX, 1..MAX] of integer;
  i, j : integer;
  ch : integer;
  cl : integer;
begin
  Randomize;
  for i := 1 to MAX do
    for j := 1 to MAX do
      Matrix[i, j] := random(100);
  writeln('Enter: ');
  readln(ch);
  cl := 0;
  for i := 1 to MAX do
    for j := 1 to MAX do
      if Matrix[i, j] mod ch = 0 then
        inc(cl);
  writeln(cl);
  readln;
end.



2 Вариант(без его учета):
Код


program Project1;
const
  MAX = 5;
var
  Matrix : array [1..MAX, 1..MAX] of integer;
  i, j : integer;
  ch : integer;
  cl : integer;
begin
  Randomize;
  for i := 1 to MAX do
    for j := 1 to MAX do
      Matrix[i, j] := random(100);
  writeln('Enter: ');
  readln(ch);
  cl := 0;
  for i := 1 to MAX do
    for j := 1 to MAX do
      if Matrix[i, j] <> 0 then
        if Matrix[i, j] mod ch = 0 then
          inc(cl);
  writeln(cl);
  readln;
end.


Автор: xF1x 17.4.2008, 20:26
А мы вводили через ДВУХМЕРНЫЙ МАССИВ! никаких MATRIX не писали! мы писали write('stroki') вводили число строк, и писали('stolbs') и вводили число столбов! и значений max  у нас не было просто писали for i:=1 to n do и так далее нельзя ка как нибудь сделать попроще?

Автор: THandle 17.4.2008, 20:44
Хм... Тогда непонятно как задавать массив? С запасом? Ведь в паскале нет динамических массивов. Ну пусть у нас максимальное количество столбцов и строк будет High(byte).


Код

program Project1;

var
  Matrix : array [1..High(byte), 1..High(byte)] of integer;
  i, j : integer;
  ch : integer;
  cl : integer;
  stlb, str : integer;
begin
  Randomize;
  writeln('Stroki: ');
  readln(str);
  writeln('Stolbcy: ');
  readln(stlb);
  for i := 1 to str do
    for j := 1 to stlb do
      begin
        Matrix[i, j] := random(100);
        writeln('[',i,'],[',j,']: ',Matrix[i, j]);
      end;
  writeln('Enter: ');
  readln(ch);
  cl := 0;
  for i := 1 to str do
    for j := 1 to stlb do
      if Matrix[i, j] <> 0 then
        if Matrix[i, j] mod ch = 0 then
          inc(cl);
  writeln(cl);
  readln;
end.



Добавлено через 33 секунды
Цитата(xF1x @  17.4.2008,  21:26 Найти цитируемый пост)
А мы вводили через ДВУХМЕРНЫЙ МАССИВ! 

А переменная Matrix это по твоему что?

Автор: xF1x 17.4.2008, 20:56
а что такое cl и ch? мы вводили тока столбы и строчки

Автор: THandle 17.4.2008, 21:02
Цитата(xF1x @  17.4.2008,  18:19 Найти цитируемый пост)
Вывести количество тех положительных элементов, значения которых кратны заданному с клавиатуры числом. Матрица задана слуайным числом! 


cl - количество тех самых элементов(кс проверку на положительность забыл smile ).
а ch - это вводимое с клавиатуры число, как и прописано в задании.


ЗЫ: вот с учетом положительности.

Код

program Project1;
var
  Matrix : array [1..High(byte), 1..High(byte)] of integer;
  i, j : integer;
  ch : integer;
  cl : integer;
  stlb, str : integer;
begin
  Randomize;
  writeln('Stroki: ');
  readln(str);
  writeln('Stolbcy: ');
  readln(stlb);
  for i := 1 to str do
    for j := 1 to stlb do
      begin
        Matrix[i, j] := random(100);
        writeln('[',i,'],[',j,']: ',Matrix[i, j]);
      end;
  writeln('Enter: ');
  readln(ch);
  cl := 0;
  for i := 1 to str do
    for j := 1 to stlb do
      if Matrix[i, j] > 0 then
        if Matrix[i, j] mod ch = 0 then
          inc(cl);
  writeln(cl);
  readln;
end.

Автор: xF1x 17.4.2008, 21:16
СПАСИБО ОГРОМНОЕ! Завтра проверю все!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)