Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

puporev
Статус: Профессор
Рейтинг: 48
∙ повысить рейтинг »
Лысков Игорь Витальевич
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »
Асмик Гаряка
Статус: Советник
Рейтинг: 0
∙ повысить рейтинг »

Pascal / Delphi / Lazarus

Номер выпуска:1891
Дата выхода:01.08.2021, 22:15
Администратор рассылки:Зенченко Константин Николаевич (Старший модератор)
Подписчиков / экспертов:7 / 38
Вопросов / ответов:1 / 2

Консультация # 201299: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Я что то сделала тут неправильно? Разработать программу на языке Паскаль для решения следующей задачи. Задан массив целых чисел X(n). Найти ∙ сумму нечётных элементов массива; ∙ наибольшее из положительное чисел массива. Из данного массива и некоторого масси...

Консультация # 201299:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Я что то сделала тут неправильно?
Разработать программу на языке Паскаль для решения следующей задачи.
Задан массив целых чисел X(n). Найти
∙ сумму нечётных элементов массива;
∙ наибольшее из положительное чисел массива.
Из данного массива и некоторого массива того же типа, но другой
размерности Y (m), сформировать общий массив Z(n + m)

Код [Pascal]
const

 n=10;

 m=8;

var

 x : array [0..n] of integer;

 y : array [0..m] of integer;

 z : array [0..n+m] of integer;

 i, c, mi : integer;

begin

 randomize;

 writeln('Массив X');

 for i:=0 to n-1 do begin

   x[i] := random(100)-50;

   if i<m then

     y[i] := random(100)-50;

   write(x[i], '  ');

 end;

 c:=0;

 mi:=0;

 for i:=0 to n+1 do begin

   if x[i] mod 2 = 0 then c:=c+x[i];

   if (x[i] < 0) and (x[i] < mi) then mi:=x[i];

 end;

 writeln();

 writeln('Сумма нечётных = ', c);

 if mi>0 then

   writeln('Наибольшее из положительных = ', mi)

 else

   writeln('Отрицательных элементов не найдено');

(*Задание 2 - объединить массивы a и b*)

 writeln('Массив Y');

 for i:=0 to n-1 do z[i]:=x[i];

 for i:=0 to m-1 do  begin

   z[i+n]:=y[i];

   write(y[i], '  ');

 end;

 writeln();

 writeln('Массив Z');

 for i:=0 to n+m-1 do

   write(z[i], '  ');

end.

Так же прошу помощи!!!
В двумерном массиве А[10, 10] найти минимальный элемент каждой из
строк и количество отрицательных элементов каждого из столбцов. Для поиска
минимального использовать подпрограмму, которая находит минимальной
элемент в одной строке, а для поиска максимального - функцию которая находит
максимальный элемент в одном столбце.
Заранее благодарю.

Дата отправки: 27.07.2021, 21:58
Вопрос задал: angel. (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует puporev (Профессор):

1)

Код [Pascal]
const n=10;
      m=8;
var x,y,z:array [1..n+m] of integer;(*если массивы не динамические то удобнее их индексировать от 1*)
    i, c, mi : integer;
begin
randomize;
writeln('Массив X');
c:=0;
mi:=0;
for i:=1 to n do
 begin
  x[i]:=-50+random(100);
  if odd(x[i]) then c:=c+x[i];(*сумма нечетных*)
  if x[i]>mi then mi:=x[i];(*максимальное из положительных*)
  write(x[i]:4);
 end;
writeln;
writeln('Сумма нечётных=',c);
if mi=0 then writeln('Положительных элементов в массиве Х нет')
else writeln('Наибольшее из положительных=',mi);
(*Задание 2 - объединить массивы a и b*)
writeln('Массив Y');
for i:=1 to m do
 begin
  y[i]:=-50+random(100);
  write(y[i]:4);
 end;
writeln;
writeln('Массив Z');
for i:=1 to n+m do
 begin
  if i<=n then z[i]:=x[i]
  else z[i]:=y[i-n];
  write(z[i]:4);
 end;
end.

Разберитсь с заданием 2.
Что все-таки нужно найти
минимальный элемент каждой из
строк и количество отрицательных элементов каждого из столбцов
или
минимальной элемент в каждой строке и максимальный элемент в каждом столбце
Кроме того
Для поиска минимального использовать подпрограмму...
Здесь опечатка и нужно процедуру или все равно процедуру или функцию?

Консультировал: puporev (Профессор)
Дата отправки: 28.07.2021, 06:59
Рейтинг ответа:

НЕ одобряю +1 одобряю!


Консультирует Megaloman (Мастер-Эксперт):

В двумерном массиве А[10, 10] найти минимальный элемент каждой из
строк и количество отрицательных элементов каждого из столбцов. Для поиска
минимального использовать подпрограмму, которая находит минимальной
элемент в одной строке, а для поиска максимального - функцию которая находит
максимальный элемент в одном столбце.

Код
Const
     n=10;
Type iMass =Array [1..n,1..n] Of Integer;

Var
   A : iMass;
   i, j, MinS : Integer;

Procedure MinInStr(M : iMass; n : Integer; i : Integer; Var MinStr : Integer);
     Var j :Integer;
     Begin
          MinStr := M[i,1];
          For j := 1 To n Do If M[i,j] < MinStr Then MinStr := M[i,j];
     End;

Function NNegaRow(M : iMass; n : Integer; i : Integer) :Integer;
     Var j, mm :Integer;
     Begin
          mm := 0;
          For j := 1 To n Do If M[j,i] < 0 Then mm := mm + 1;
          NNegaRow := mm;
     End;

Begin
     Randomize;

     Writeln;
     Writeln('Массив A');
     Write('       j= ');
     For j := 1 To n Do Write(j : 4);
     For i := 1 To n Do Begin
         Writeln;
         Write(' i=', i : 3,' == ');
         For j := 1 To n Do Begin
             A[i,j] := Random(198)-99;
             Write(A[i,j] :4);
             End;
         End;

     Writeln;
     Writeln;
     Writeln('Минимальный элемент в каждой строке');
     Write(' i=');
     For i := 1 To n Do Write(i : 4);
     Writeln;

     Write('   ');
     For i := 1 To n Do Begin
         MinInStr(A, n, i, MinS);
         Write(MinS : 4);
         End;

     Writeln;
     Writeln;
     Writeln('Количество отрицательных элементов в каждом столбце');
     Write(' j=');
     For j := 1 To n Do Write(j : 4);
     Writeln;

     Write('   ');
     For j := 1 To n Do Write(NNegaRow(A, n, j) : 4);
End.

Консультировал: Megaloman (Мастер-Эксперт)
Дата отправки: 28.07.2021, 17:02
Рейтинг ответа:

НЕ одобряю +2 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное