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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2022, 13:38   #1
Crocodile_007
Новичок
Джуниор
 
Регистрация: 29.10.2022
Сообщений: 1
По умолчанию Работа с файлами и одномерными массивами (Pascal)

Проверить, что в одномерном массиве A есть хотя бы один элемент, не попадающий в заданный диапазон. В этом случае заменить значение каждого неположительного элемента массива A абсолютной величиной соответствующего (по номеру) элемента массива C и подсчитать количество замен. Иначе определить разность наибольшей и наименьшей абсолютной величины элементов в массиве A.
Crocodile_007 вне форума Ответить с цитированием
Старый 29.10.2022, 13:52   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

И где же собственные наработки?
macomics вне форума Ответить с цитированием
Старый 29.10.2022, 14:13   #3
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
uses SysUtils;

var
   N: Integer; // Длина массивов A и C
   A: array of Integer; // Массив A
   C: array of Integer; // Массив С
   L, H: Integer; // Диапазон (L - нижняя граница; H - верхняя)
   i: Integer; // Индексная переменная
   P, Q: Integer; // Индексы минимума и максимума

begin
   Write('Введите количество элементов в массивах (N) = ');
   ReadLn(N);
   SetLength(A, N);
   SetLength(C, N);
   for i := Low(A) to High(A) do begin
      Write('Введите A[', i, '] = ');
      ReadLn(A[i]);
   end;
   for i := Low(C) to High(C) do begin
      Write('Введите C[', i, '] = ');
      ReadLn(C[i]);
   end;
   Write('Введите диапазон: от ');
   Read(L);
   Write('до ');
   ReadLn(H);
   Write('Массив C = ');
   for i := Low(C) to High(C) - 1 do
      Write(C[i], ', ');
   WriteLn(C[High(C)], '.');
   i := Low(A);
   while (i <= High(A)) and (A[i] >= L) and (A[i] <= H) do
      inc(i);
   if i <= High(A) then begin
      Q := 0; // Счетчик замен
      for i := Low(A) to High(A) do
         if not (A[i] > 0) then begin
            A[i] := abs(C[i]);
            inc(Q);
         end;
      Write('Массив A = ');
      for i := Low(A) to High(A) - 1 do
         Write(A[i], ', ');
      WriteLn(A[High(A)], '.');
      WriteLn('Количество замен = ', Q);
   end else begin
      P := Low(A);
      Q := Low(A);
      Write('Массив A = ');
      for i := Low(A) to High(A) do begin
         if i < High(A) then
            Write(A[i], ', ');
         if A[i] < A[P] then
            P := i;
         if A[i] > A[Q] then
            Q := i;
      end;
      WriteLn(A[High(A)], '.');
      WriteLn('Разность наибольшей и наименьшей абсолютных величин в массиве A = ', abs(A[Q]) - abs(A[P]));
   end;
end.

Последний раз редактировалось macomics; 29.10.2022 в 14:20.
macomics вне форума Ответить с цитированием
Старый 29.10.2022, 15:04   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,551
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
И где же собственные наработки?
... прозвучал риторический вопрос, ясень ТС не ответил, и macomics, вздохнув, сел писать прогу
digitalis вне форума Ответить с цитированием
Старый 29.10.2022, 16:12   #5
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Ну настроения не было, вот и способствую, чтобы человек ничему не научился.
macomics вне форума Ответить с цитированием
Старый 29.10.2022, 17:01   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Возможно нужно уже и при определении P и Q в последнем цикле сравнивать элементы по модулю, а не только в итоговом вычитании использовать модуль.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Pascal ABC.NET] Работа с одномерными и двумерными массивами. egenija_19 Помощь студентам 1 09.05.2017 22:44
Работа с записями и одномерными массивами. (Borland Pascal) anna587 Паскаль, Turbo Pascal, PascalABC.NET 3 11.04.2017 00:03
[PASCAL]: Работа с одномерными массивами. Помогите составить программу и блок-схему. solnisvet Помощь студентам 2 13.10.2016 11:00
Работа с одномерными массивами (Turbo pascal) alheim13 Помощь студентам 2 14.06.2015 05:30
Работа с одномерными массивами (Turbo Pascal) Uniastrum Помощь студентам 3 27.11.2012 21:05