Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для Flatterer
4 / 3 / 0
Регистрация: 08.12.2009
Сообщений: 63

Найти номер первой из строк матрицы, содержащих хотя бы один положительный элемент

17.05.2010, 11:00. Показов 1605. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Целочисленная прямоугольная матрица заполняется с помощью генератора случайных чисел значениями из промежутка [-10, 10]. Найти номер первой из строк, содержащих хотя бы один положительный элемент.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.05.2010, 11:00
Ответы с готовыми решениями:

Найти количество строк матрицы, содержащих хотя бы один нулевой элемент
Дана целочисленная прямоугольная матрица. Определить: 1) количество строк, содержащих хотя бы один нулевой элемент; 2) номер столбца, в...

Найти сумму элементов четных строк матрицы, содержащих хотя бы один нулевой элемент
Привет всем ! помогите пожалуйста ,мне не нужна вся программа,только часть ее . нужно найти сумму элементов четных строк содержащих хотя бы...

Сформировать вектор D, состоящий из номеров строк, содержащих хотя бы один отрицательный элемент
выполнить с использованием процедуры ввод и вывод массивов и других данных не объединять с обработкой данных. Дана целочисленная...

14
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
17.05.2010, 13:50
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
program Prog;
label 1;
var Matr: array [1..40, 1..40] of Integer;
    i,j,n,m: byte;
begin
writeln('Ввод матрицы: ');
writeln('Количество столбцов M='); readln(m);
writeln('Количество строк N='); readln(n);
for i:=1 to n do
 for j:=1 to m do
  Matr[i,j]:=-10+random(21); {заполнение числами}
 
{вывод матрицы на печать}
for i:=1 to n do
 begin
 for j:=1 to m do
  write(Matr[i,j]:4);
 writeln;
 end;
{поиск нужного номера строки}
for i:=1 to n do
 for j:=1 to m do
  if Matr[i,j]>0 then
  begin
  writeln('номер искомой строки = ', i);
  goto 1;
  end;
writeln('Нет строк с положительными элементами');
1:
readln;
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
17.05.2010, 13:53
Phantom, А ты проверял свой код?
0
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
17.05.2010, 13:53
Puporev, да, а что?
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
17.05.2010, 13:55
Phantom, goto лучше бы заменил на
Pascal
1
2
ReadLn; 
exit;
0
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
17.05.2010, 13:56
Inadequate, да, так лучше

По идее, можно вообще генерировать снизу-вверх построчно и каждый раз сохранять номер строки, если элемент сгенерировался положительный. Тогда мы уже будем знать номер строки на этапе генерации, но вот проверки... Кто как думает?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
17.05.2010, 13:57
Phantom, Просто когда вижу label, goto, то вздрагиваю, мало кто умеет ими правильно пользоваться. Наверное школа Бейсика...
0
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
17.05.2010, 14:00
Puporev, да, в точку, в школе как раз изучал бэйсик, это мой первый язык С тех пор к goto отношусь с теплотой.
К слову, программа вполне себе нормально работает. А goto иногда здорово помогает. Когда нужно выйти из нескольких циклов, у меня автоматом оно вылетает))
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
17.05.2010, 14:05
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Phantom, какие проверки ? Я бы так и сделал как ты предлагаешь, но только без изврата Код выглядел бы так
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
uses
  Crt;
const
  N = 3;
  M = 3;
var
  a: array [1..N, 1..M] of integer;
  i,j,p: byte;
  f: boolean;
begin
  p := 0;
  f := true;
  ClrScr;
  Randomize;
  for i := 1 to N do
  begin
    for j := 1 to M do
    begin
      a[i, j] := Random(21) - 10;
      if (a[i, j] > 0) and f then
      begin
        p := i;
        f := not f;
      end;
      Write(a[i, j]:3, ' ');
    end;
    WriteLn;
  end;
  if f then
    WriteLn('bla-bla-bla ', p)
  else
    WriteLn('!!!');
  ReadLn;
end.
0
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
17.05.2010, 14:07
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
program Prog;
label 1;
var Matr: array [1..40, 1..40] of Integer;
    i,j,n,m,k: byte;
begin
writeln('Ввод матрицы: ');
writeln('M='); readln(m);
writeln('N='); readln(n);
 
for i:=n downto 1 do
 for j:=1 to m do
  begin
  Matr[i,j]:=-10+random(21);
  if Matr[i,j]>0 then k:=i;
  end;
 
if (k<>0) then writeln('искомая строка ',k)
else writeln('нет строк с положительными элементами ');
 
for i:=1 to n do
 begin
 for j:=1 to m do
  write(Matr[i,j]:4);
 writeln;
 end;
 
readln;
end.
Вот вариант о котором я говорил. Интересно, какой быстрее?
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
17.05.2010, 14:20
Phantom, быстрее мой, потому что у меня 2 цикла, а у тебя их 4.
0
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
17.05.2010, 14:31
Inadequate, два цикла - вывод матрицы, который я для читабельности вынес отдельно. Тоже могу совместить с генерацией, как у тебя и будет два цикла.
Касаемо основного алгоритма, то различие в том, откуда мы генерируем - ты сверху-вниз, а я снизу-вверх, что позволяет мне делать одну проверку (у тебя - две - на полож-ть и на флаг), и сэкономить одну булевскую переменную
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
17.05.2010, 14:42
Phantom, у тебя количество присваиваний будет равно количеству положительных в матрице. Да и если переставить условия местами в моём коде т.е. сначала проверку на логическую переменную, а потом на положительность элемента, то у меня тоже будет одна проверка, так как, насколько мне известно, если одна часть не истина, то вторая не проверяется. А количество присваиваний у меня постоянно и равно 1. Так что это всё таки тебе

А вообще, к слову сказать, все эти мелочи несущественны на современных компьютерах
0
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
17.05.2010, 15:08
Inadequate, действительно, ты прав
Ну и, наверное, можно ещё проверять не на флаг, а на равенство p=0, сэкономив одну булевскую переменную.
Цитата Сообщение от Inadequate Посмотреть сообщение
А вообще, к слову сказать, все эти мелочи несущественны на современных компьютерах
Всё равно, код всегда отражает мастерство его автора. Все хорошие свойства кода (переносимость, читабельность, производительность) перерастают в хорошие программы, а если можно сделать конечный продукт ещё лучше, то почему бы этим не воспользоваться.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
17.05.2010, 15:16
Phantom,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2010, 15:16
Помогаю со студенческими работами здесь

Определить количество столбцов матрицы, содержащих хотя бы один нулевой элемент
помогите пожалуйста с задачей! дана целочисленная прямоугольная матрица. Нужно определить: 1) количество столбцов, содержащих хотя бы...

Определить количество столбцов матрицы, содержащих хотя бы один нулевой элемент
PASCAL Дана целочисленная прямоугольная матрица Определить: -количество столбцов, содержащих хотя бы один нулевой элемент; -номер...

Определить количество столбцов матрицы, содержащих хотя бы один нулевой элемент
Дана целочисленная прямоугольная матрица. Определить: 1) количество столбцов, содержащих хотя бы один нулевой элемент 2) номер строки,...

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

2. Найти сумму элементов в тех столбцах, которые содержат хотя бы один положительный элемент
Долгое время по разным причинам не получалось сесть за освоение Паскаля, а завтра уже горят сроки. Сделал 4 из 9 заданий. На 5 залип как...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru