Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
t-a-n-y-a-23
0 / 0 / 0
Регистрация: 19.05.2014
Сообщений: 15
#1

Определить, есть ли в некоторой строке массива хотя бы один элемент, равный заданному числу - Turbo Pascal

22.05.2014, 14:07. Просмотров 600. Ответов 4
Метки нет (Все метки)

Дан двумерный массив целых чисел. Составить программу:
а)которая определяет, есть ли в некоторой строке массива хотя бы один элемент, равный заданному числу;
б)которая определяет, есть ли в некотором столбце массива хотя бы один элемент, кратный заданному числу.
В случае положительного ответа должны быть напечатаны координаты любого из таких элементов.
http://www.cyberforum.ru/turbo-pascal/thread804970.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2014, 14:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить, есть ли в некоторой строке массива хотя бы один элемент, равный заданному числу (Turbo Pascal):

Определить номера строк массива, хотя бы один элемент которых равен заданному числу Х.
1. Задан прямоугольный массив А целых чисел(таблица). Определить четный...

Проверить, есть ли в матрице хотя бы одна строка, содержащая элемент, равный заданному числу, и найти её номер
пожалуйста посмотрите что не так? Условие:Проверить, есть ли в матрице хотя бы...

Двумерный массив: Определить номера тех строк массива, в которых есть хотя бы один элемент, равный 10
Дан целочисленный массив X (n и m вводится пользователем). Определить номера...

Определить номера тех строк матрицы, в которых есть хотя бы один элемент, равный 10
Дан целочисленный массив А. Определить номера тех строк массива, в которых есть...

Определить номера строк массива, в которых есть хотя бы один элемент, равный 10.
помогите плиз решить задачку Дан целочисленный массив А. Определить...

4
Puporev
Модератор
54131 / 41764 / 28875
Регистрация: 18.05.2008
Сообщений: 98,291
22.05.2014, 14:22 #2
Лучший ответ Сообщение было отмечено t-a-n-y-a-23 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
uses crt;
const nmax=15;
var a:array[1..nmax,1..nmax] of integer;
    m,n,i,j,x,i1,j1:integer;
begin
clrscr;
randomize;
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(20);
    write(a[i,j]:4);
   end;
  writeln;
 end;
write('Введите число для поиска x=');
readln(x);
i1:=0;
i:=1;
while (i<=m)and(i1=0) do
 begin
  j:=1;
  j1:=0;
  while (j<=n)and(j1=0) do
  if a[i,j]=x then j1:=j
  else j:=j+1;
  if j1<>0 then i1:=i
  else i:=i+1
 end;
if i1=0 then writeln('Числа ',x,' нет в строках матрицы')
else writeln('Число ',x,' находится в ячейке a[',i1,',',j1,']');
write('Введите число для проверки кратности x=');
readln(x);
j1:=0;
j:=1;
while (j<=n)and(j1=0) do
 begin
  i:=1;
  i1:=0;
  while (i<=m)and(i1=0) do
  if a[i,j] mod x=0 then i1:=i
  else i:=i+1;
  if i1<>0 then j1:=j
  else j:=j+1
 end;
if j1=0 then writeln('Чисел, кратных ',x,' нет в столбцах матрицы')
else writeln('Число, кратное ',x,' находится в ячейке a[',i1,',',j1,']');
readln
end.
0
pirat2k
9 / 9 / 8
Регистрация: 18.09.2012
Сообщений: 386
Завершенные тесты: 1
07.02.2018, 19:22 #3
Puporev, Подскажите какой алгоритм используется при:
Цитата Сообщение от t-a-n-y-a-23 Посмотреть сообщение
б)которая определяет, есть ли в некотором столбце массива хотя бы один элемент, кратный заданному числу?
0
Hitoku
Модератор
1694 / 1293 / 1398
Регистрация: 28.10.2016
Сообщений: 4,231
Завершенные тесты: 4
07.02.2018, 19:44 #4
pirat2k,
Pascal
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
write('Введите число для проверки кратности x=');
readln(x);
j1:=0;
j:=1;
while (j<=n)and(j1=0) do
 begin
  i:=1;
  i1:=0;
  while (i<=m)and(i1=0) do
  if a[i,j] mod x=0 then i1:=i
  else i:=i+1;
  if i1<>0 then j1:=j
  else j:=j+1
 end;
if j1=0 then writeln('Чисел, кратных ',x,' нет в столбцах матрицы')
else writeln('Число, кратное ',x,' находится в ячейке a[',i1,',',j1,']');
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
09.02.2018, 15:56 #5
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Кстати, можно сделать чуть нагляднее, если в циклах вместо постинкремента использовать предекремент:
Кликните здесь для просмотра всего текста
Pascal
44
45
46
47
48
49
50
51
52
53
54
55
56
57
j:=n+1; jj:=0;
while (jj=0) and (j>1) do begin
  Dec(j);
  i:=m+1; ii:=0;
  while (ii=0) and (i>1) do begin
    Dec(i);
    if a[i,j] mod x=0 then begin
      ii:=i; jj:=j;
    end;
  end;
end;
if jj=0
then WriteLn('Чисел, кратных ',x,' нет в столбцах матрицы')
else WriteLn('Число, кратное ',x,' находится в ячейке a[',ii,',',jj,']');


Добавлено через 7 минут
А если массив индексирован от 0: [0..m-1,0..n-1], то еще более естественно:
Кликните здесь для просмотра всего текста
Pascal
44
45
46
47
48
49
50
51
52
53
54
55
56
57
j:=n; jj:=-1;
while (jj=-1) and (j>0) do begin
  Dec(j);
  i:=m; ii:=-1;
  while (ii=-1) and (i>0) do begin
    Dec(i);
    if a[i,j] mod x=0 then begin
      ii:=i; jj:=j;
    end;
  end;
end;
if jj>=0
then WriteLn('Число, кратное ',x,' находится в ячейке a[',ii,',',jj,']')
else WriteLn('Чисел, кратных ',x,' нет в столбцах матрицы');


Добавлено через 5 минут
и то же самое на repeat until:
Кликните здесь для просмотра всего текста
Pascal
44
45
46
47
48
49
50
51
52
53
54
55
56
57
j:=n; jj:=-1;
repeat
  Dec(j);
  i:=m; ii:=-1;
  repeat
    Dec(i);
    if a[i,j] mod x=0 then begin
      ii:=i; jj:=j;
    end;
  until (ii>=0) or (i=0);
until (jj>=0) or (j=0);
if jj>=0
then WriteLn('Число, кратное ',x,' находится в ячейке a[',ii,',',jj,']')
else WriteLn('Чисел, кратных ',x,' нет в столбцах матрицы');


Добавлено через 5 минут
Но стоило ли так приседать, ради избегания goto?
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
label Done1, Done2;
...
  ii:=0; jj:=0;
  for j:=1 to n do
    for i:=1 to m do
      if a[i,j] mod x=0 then begin
        ii:=i; jj:=j; goto Done2;
      end;
Done2:
  if jj>0
  then WriteLn('Кратное ',x,' число находится в ячейке a[',ii,',',jj,']')
  else WriteLn('Кратных ',x,' чисел в столбцах матрицы нет');


Добавлено через 6 минут
А если допустимо использовать функции, то и goto становится не нужен:
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function GetM(const a: TMatrix; x: Integer; var ii, jj: Integer): Boolean;
var i, j: Integer;
begin
  GetM:=True;
  for j:=1 to n do for i:=1 to m do
    if a[i,j] mod x=0 then begin
      ii:=i; jj:=j; Exit;
    end;
  GetM:=False;
end;
 
...
  if GetM(a,x,ii,jj)
  then WriteLn('Кратное ',x,' число находится в ячейке a[',ii,',',jj,']')
  else WriteLn('Кратных ',x,' чисел в столбцах матрицы нет');
0
09.02.2018, 15:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2018, 15:56
Привет! Вот еще темы с решениями:

Определить номера строк массива, хотя бы один элемент которых равен заданному числу Х
Задан двумерный массив чисел(таблица) размерности (NxМ). Определить номера...

Есть ли в некоторой строке матрицы хотя бы один элемент, оканчивающийся цифрой 3.
Составить программу, которая определяет, есть ли некоторой строке массива хотя...

Удалить из массива элемент, равный заданному числу
удалить из массива элемент, равный заданному числу

Найти элемент массива, равный заданному числу
Задан массив чисел А,упорядоченный по возрастанию по строкам и столбцам, т.е.:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru