Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 21.11.2019
Сообщений: 11
1

Найти два элемента массива с максимальным модулем их разности

21.11.2019, 22:24. Показов 2235. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание : Написать программу выполняющую поиск двух элементов заданного массива,таких,что их разность по модулю максимальна
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2019, 22:24
Ответы с готовыми решениями:

Даны два вещественных числа P и R. Найти порядковый номер элемента массива A размерности N, который наиболее близкий к их разности
Даны два вещественных числа P и R. Найти порядковый номер элемента массива A размерности N, который...

Даны два вещественных числа P и R. Найти порядковый номер элемента массива A размерности N, который наиболее близкий к их разности
Даны два вещественных числа P и R. Найти порядковый номер элемента массива A размерности N, который...

Даны два вещественных числа P и R. Найти порядковый номер элемента массива A размерности N, который наиболее близкий к их разности
Помогите пожалуйста!!!

Даны два вещественных числа P и R. Найти порядковый номер элемента массива A размерности N, который наиболее близкий к их разности
Даны два вещественных числа P и R. Найти порядковый номер элемента массива A размерности N, который...

7
2373 / 775 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
21.11.2019, 23:21 2
Лучший ответ Сообщение было отмечено Kiryan11 как решение

Решение

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
program Project1;
{$codepage utf8}
var
  a: array[1..50] of real; // Переменная для хранения массива.
  n: integer; // Переменная для хранения количества элементов массива.
  i,j: integer; // Вспомогательная переменная для организации цикла.
  maxdiff: real; // Переменная для хранения значения разницы элементов.
  ind1, ind2: integer; // Переменные для хранения индексов элементов среди которых ведется поиск.
begin
  write('Введите количество элементов массива: ');
  Readln(n);
  for i:= 1 to n do // Ввод значений элементов вручную.
    begin
      write('Введите значение элемента ',i,': ');
      Readln(a[i]);
    end;
  writeln('Исходный массив:');
  for i:= 1 to n do // Вывод массива в консоль.
  begin
    write(a[i]:6:2);
    if i mod 10 = 0 then
      writeln;
  end;
  maxdiff:= abs(a[1]-a[2]);
  ind1:= 1;
  ind2:= 2;
  for i:= 1 to n-1 do
    for j:= i+1 to n do
      if abs(a[i] - a[j]) > maxdiff then // Условие для поиска элементов с наибольшей разницей по модулю.
        begin
          maxdiff:= abs(a[i] - a[j]);
          ind1:= i;
          ind2:= j;
        end;
  writeln;
  writeln('Наибольшую разность по модулю дают элементы a[',ind1,'] и a[',ind2,'].');
  Readln;
end.
1
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
22.11.2019, 20:47 4
Мне кажется, что можно обойтись одним циклом для нахождения минимального и максимального элементов массива.
Что-то такое
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
IMin:=1;
IMax:=1;
Min:=A[1];
Max:=A[1];
for i := 2 to N do
begin
  if Min>A[i] then
  begin
    IMin:=i;
    Min:=A[i];
  end;
  if Max<A[i] then
  begin
    IMax:=i;
    Max:=A[i];
  end;
end;
writeln('Наибольшую разность по модулю дают элементы a[',IMax,']=',Max,' и a[',IMin,']=',Min,'.');
1
3022 / 1646 / 651
Регистрация: 19.03.2019
Сообщений: 5,322
25.11.2019, 11:26 5
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Мне кажется, что можно обойтись одним циклом для нахождения минимального и максимального элементов массива.
ну, да, согласен.

только нюанс.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Pascal
1
2
3
4
IMin:=1;
IMax:=1;
Min:=A[1];
Max:=A[1];
если все элементы одинаковые, то программа скажет, что наибольшую разницу даёт элемент 1 и элемент 1.
а это как бы противоречит заданию -
Цитата Сообщение от Kiryan11 Посмотреть сообщение
поиск двух элементов
1
Модератор
9874 / 5242 / 3306
Регистрация: 17.08.2012
Сообщений: 16,011
28.11.2019, 11:14 6
Проблема лечится просто: одно из неравенств, или оба неравенства, поменять на нестрогие, и применить составной if, поскольку, если элемент принят за минимум, незачем его проверять на максимум. И зачем лишние переменные Max и Min?
Pascal
1
2
3
4
5
6
7
8
9
//....
IMin:=1;
IMax:=1;
for i := 2 to N do
begin
  if a[IMin]>=A[i] then IMin:=i
  else if a[IMax]<=A[i] then IMax:=i;
writeln('Наибольшую разность по модулю дают элементы a[',IMax,']=',a[IMax],' и a[',IMin,']=',a[IMin],'.');
//....
2
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
28.11.2019, 12:59 7
С нестрогими неравенствами при равенстве всех элементов индексы минимума и максимума станут равными N?

Думаю, что лучше изначально делать индексы разными и проверять весь массив.
Отдельные переменные для минимума и максимума - чтобы избежать пересчётов адреса при обращении к массиву, хотя на таких длинах это незаметно и можно удалить.

Это всё равно лучше вложенных циклов
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
IMin:=1;
IMax:=N;
Min:=A[1];
Max:=A[N];
for i := 1 to N do
begin
  if Min>A[i] then
  begin
    IMin:=i;
    Min:=A[i];
  end;
  if Max<A[i] then
  begin
    IMax:=i;
    Max:=A[i];
  end;
end;
writeln('Наибольшую разность по модулю дают элементы a[',IMax,']=',Max,' и a[',IMin,']=',Min,'.');
Добавлено через 4 минуты
Или можно использовать одно строгое, а второе - нестрогое неравенства
Pascal
1
2
3
4
5
6
7
8
9
//....
IMin:=1;
IMax:=1;
for i := 2 to N do
begin
  if a[IMin]>A[i] then IMin:=i
  else if a[IMax]<=A[i] then IMax:=i;
writeln('Наибольшую разность по модулю дают элементы a[',IMax,']=',a[IMax],' и a[',IMin,']=',a[IMin],'.');
//....
0
3022 / 1646 / 651
Регистрация: 19.03.2019
Сообщений: 5,322
28.11.2019, 13:19 8
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
С нестрогими неравенствами при равенстве всех элементов индексы минимума и максимума станут равными N?
не станут, там трюк в том, что проверяется одно условие a[IMin]>=A[i] и только, если не равно, тогда ELSE другое.
поэтому, если все элементы равны,
то Max будет 1-й элемент,
а Min - N-й
1
28.11.2019, 13:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2019, 13:19
Помогаю со студенческими работами здесь

Вычислить квадрат разности между минимальным и максимальным элементом массива и записать его на место последнего отрицательного элемента
Условие: Вычислить квадрат разности между минимальным и максимальным элементом массива и записать...

Вставить два элемента: первый — после максимального элемента, второй — перед максимальным элементом массива
вставить два элемента: первый- после максимального элемента, второй- перед максимальным элементом...

Подпрограммы; найти половину разности между максимальным и минимальным элементами массива
найти Z=(Xmax-Xmin)/2 где Xmin- минимальный элемент массива, а Xmax- максимальный элемент массива

Найти номера двух ближайших элементов из этого массива, т. е. элементов с наименьшим модулем разности
Дан массив размера N. Найти номера двух ближайших элементов из этого массива (т. е. элементов с...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru