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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2011, 21:17   #1
art.marked
Пользователь
 
Аватар для art.marked
 
Регистрация: 01.03.2011
Сообщений: 53
По умолчанию Двумерный массив в Паскаль

Здравствуйте!
Хотел бы попросить помощи в решении задачи на языке Паскаль.
Условие: Дан двумерный массив целых чисел. Для каждого его столбца выяснить имеется ли в нем элементы, большие некоторого числа d.
Как проверить столбцы вообще не понял...
Имеется похожая задача , но она ищет положительные числа вов всем массиве.
Вот тело:
Код:
Begin
Randomize;
k:=0;
For i:=1 to n do begin
For j:=1 to m do
begin
a[i,j]:=random(100)-50;
write(a[I,j]:4);
if a[i,j]>0 then
k:=k+1;
End;
Writeln;
end;
Writeln('Количество положительных чисел* = ',k);
Readln;
End.
Заранее спасибо.
@belov on Twitter
art.marked вне форума Ответить с цитированием
Старый 01.03.2011, 22:00   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Нам задано число d.

Рекомендовал бы я объявить массив ЛОГИЧЕСКИХ значений, например
Код:
b: array[1..{число столбцов в вашем массиве}] of bollean
Каждому элементу этого массива будет соответствовать качественная характеристика наличия элементов (тупо есть или нет).

Далее вы залазите в ваш массив, анализируете столбцы, а вернее их элементы.
Если в столбце имеется ХОТЯ БЫ ОДИН ТАКОЙ ЭЛЕМЕНТ, вы делаете b[i]:=true, где i - номер столбца, и переходите с следующему столбцу, не обращая внимания на все остальные элементы текущего столбца.


Если в столбце таких элементов не нашлось, то b[i]:=false и переход к следующему столбцу
Вадим Мошев вне форума Ответить с цитированием
Старый 01.03.2011, 22:16   #3
art.marked
Пользователь
 
Аватар для art.marked
 
Регистрация: 01.03.2011
Сообщений: 53
По умолчанию

Спасибо за подсказку. Но вряд ли это одобрит преподаватель, т.к она ничего нам про это не говорила.
И стыдно признавать, что вообще теперь не понимаю, как это реализовать... если не трудно можете дать хоть отрывок кода?
Заранее спасибо.
@belov on Twitter
art.marked вне форума Ответить с цитированием
Старый 01.03.2011, 22:57   #4
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Код:
For i:=1 to n do 
For j:=1 to m do
 if a[i,j]>d then  
  begin
   b[j]:=true; 
   beak; 
  end
    else b[j]:=false;
если делать как посаветовал Вадим Мошев то это будет примерно так)
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 02.03.2011, 09:28   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Код:
For i:=1 to n do //cols
For j:=1 to m do //rows
 if a[j,i]>d then  // array[rows,cols]
  begin
   b[i]:=true; 
   break; 
  end
    else b[i]:=false;
2мерные массивы адресуются - строка,столбец.

Если сделать как у Вас, то получится что при нахождении подходящего элемента по строке (ибо верхний цикл по столбцам, а вложенный - по строкам), то прервется проверка строки и переходпойдёт на новую строку, а нужно по столбцам, поэтому я поменял индексы - сравните код и увидите
phomm вне форума Ответить с цитированием
Старый 02.03.2011, 17:35   #6
art.marked
Пользователь
 
Аватар для art.marked
 
Регистрация: 01.03.2011
Сообщений: 53
По умолчанию

Начал делать программу и что-то паскаль ругается на "b[i]" .
И не ясно как же все-таки сделать вывод информации, что есть в столбце такие числа и нет...
Код:
Код:
Program  pr2;
uses crt;
const n=5;m=5;
Var a:array[1..n,1..m]  of integer;
i,j,d:integer;
Begin
Write ('Введите число d - ');
Readln (d);
Randomize;
For i:=1 to n do //cols
For j:=1 to m do //rows
 if a[j,i]>d then  // array[rows,cols]
  begin
   b[i]:=true; 
   break; 
  end
    else b[i]:=false;
Readln;
End.
@belov on Twitter
art.marked вне форума Ответить с цитированием
Старый 02.03.2011, 17:35   #7
art.marked
Пользователь
 
Аватар для art.marked
 
Регистрация: 01.03.2011
Сообщений: 53
По умолчанию

Начал делать программу и что-то паскаль ругается на "b[i]" .
И не ясно как же все-таки сделать вывод информации, что есть в столбце такие числа и нет...
Код:
Код:
Program  pr2;
uses crt;
const n=5;m=5;
Var a:array[1..n,1..m]  of integer;
i,j,d:integer;
Begin
Write ('Введите число d - ');
Readln (d);
Randomize;
For i:=1 to n do //cols
For j:=1 to m do //rows
 if a[j,i]>d then  // array[rows,cols]
  begin
   b[i]:=true; 
   break; 
  end
    else b[i]:=false;
Readln;
End.
@belov on Twitter
art.marked вне форума Ответить с цитированием
Старый 02.03.2011, 20:19   #8
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

спасибо за исправеление.

откуда береться масив А?
вродебы вы забыли:
For i:=1 to n do
For j:=1 to m do
begin
a[i,j]:=random(100)-50;
write(a[i,j]);
end;


насчет вывода поидее смомощью цикла и оператора "IF" если b[i]=true тогда вывод соответствующего сообшения
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 02.03.2011 в 20:32.
Dvoishnik вне форума Ответить с цитированием
Старый 03.03.2011, 20:40   #9
art.marked
Пользователь
 
Аватар для art.marked
 
Регистрация: 01.03.2011
Сообщений: 53
По умолчанию

Вот сделал программу,но она как-то работает странно... рандомно выдает результат.

Код:
Program  pr2;
uses crt;
const n=5;m=5;
Var
   a:array[1..n,1..m]  of integer;
   i,j,d: integer;
   found: boolean;
Begin
clrscr;
For i:=1 to n do
    begin
         writeln;
         For j:=1 to m do
             begin
                  a[i,j]:=random(100)-50;
                  write(a[i,j]:4);
             end;
    end;
writeln;
Write('Введите число d = ');
Readln(d);
For i:=1 to n do
    begin
         For j:=1 to m do
             begin
                  if a[i,j]>d then
                     found:=true
                  else found:=false;
             end;
             if found
                then writeln('В ',i,' столбце имеется чиcло большее d')
                else writeln('В ',i,'столбце нет чиcла больше, чем число d');
    end;
Readln
End.
@belov on Twitter
art.marked вне форума Ответить с цитированием
Старый 03.03.2011, 22:11   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
И не ясно как же все-таки сделать вывод информации, что есть в столбце такие числа и нет...
Например, так:

Код:
for i:=1 to n do
if b[i] then writeLn('В столбце номер ', i, ' есть такие числа, ура!')
         else  writeLn('В столбце номер ', i, ' Нет таких чисел, увы...');
{здесь n - число столбцов в матрице (двумерном массиве)}
Вадим Мошев вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив (Паскаль) Наилька)) Помощь студентам 3 10.12.2010 17:26
Двумерный массив,Паскаль MIKE11IPME Помощь студентам 8 08.06.2010 22:55
Паскаль. Двумерный массив qwertyuiop12 Помощь студентам 1 19.05.2010 02:43
Паскаль (двумерный массив) RAVAL)) Помощь студентам 5 16.06.2008 00:27