Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 31.03.2016
Сообщений: 6
1

В одномерном массиве поменять местами первый макс. элемент с последним мин. элементом

28.09.2016, 14:14. Показов 984. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, у меня возникли некоторые сложности с заданием которое звучит так: В одномерном массиве поменять местами первый максимальный с последним минимальным элементом массива. массив заполнять из текстового файла, его размерность тоже должна находиться в файле. Использовать функции поиска максимального, минимального элементов и процедуры для ввода, вывода и обмена элементов массива.
Проблема в следующем: несмотря на то, что программа работает, преподаватель сказал, что искать нужно не номера элементов, а сами элементы и что- то про обмен (извините, не помню что именно).
В текстовом файле: 10 (размерность 1-я строка) 1 2 1 4 5 6 7 10 9 10 (массив 2-я строка).
Результат: 1 2 10 4 5 6 7 1 9 10

Программа:
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
Program test2;
type mas=array[1..10] of integer;
var a:mas;
    f:text;
    n,max,min:integer;
procedure zap(var a:mas; var n:integer);
          var i:integer;
              begin read(f,n);
                    for i:=1 to n do read(f,a[i]);
              end;
procedure print(a:mas; n:integer);
          var i:integer;
          begin for i:=1 to n do write(a[i], ' ');
          end;
function maxi(a:mas;n:integer):integer;
         var i,r:integer;
         begin r:=1;
               for i:=2 to n do if a[i]>a[r] then r:=i;
               maxi:=r;
         end;
function mini(a:mas; n:integer):integer;
         var i,r:integer;
         begin r:=1;
               for i:=2 to n do if a[i]<=a[r] then r:=i;
               mini:=r;
         end;
procedure ob(var a:mas; max,min:integer);
          var m:integer;
          begin m:=a[max];
                a[max]:=a[min];
                a[min]:=m;
          end;
begin assign(f,'ZAD22.txt'); reset(f);
      zap(a,n);
      writeln('Исходный массив: ');
      print(a,n);
      writeln;
      max:=maxi(a,n);
      min:=mini(a,n);
      ob(a,max,min);
      writeln('Результат обмена: ');
      print(a,n);
      writeln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.09.2016, 14:14
Ответы с готовыми решениями:

В одномерном массиве поменять местами первый элемент с последним, второй с предпоследним и т.д
В одномерном массиве поменять местами первый элемент с последним, второй с предпоследним и т.д. ...

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

Поменять местами первый элемент массива с самым левым минимальным элементом
Поменять местами первый элемент массива с самым левым минимальным элементом, а затем поделить все...

В массиве поменять местами наибольший элемент массива с первым, а наименьший с последним
Помогите пожалуйста. В массиве поменять местами наибольший элемент массива с первым, а наименьший...

2
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
28.09.2016, 14:29 2
Обмен можно выполнить в таком виде
Pascal
1
2
3
4
5
6
procedure ob(var a, b: integer);
          var m:integer;
          begin m:=a;
                a:=b;
                b:=m;
          end;
И вызывать
Pascal
1
      ob(a[max],a[min]);
А остальное - не понял.

Добавлено через 1 минуту
Цитата Сообщение от Fenrill Посмотреть сообщение
В одномерном массиве поменять местами первый максимальный с последним минимальным элементом массива.
А вы ищите минимальный от начала.

Добавлено через 1 минуту
И в поиске минимума - строгое неравенство должно быть, иначе будет изменение индекса на равных элементах.
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
28.09.2016, 14:36 3
Цитата Сообщение от Fenrill Посмотреть сообщение
искать нужно не номера элементов, а сами элементы
Вот именно что нужно искать номера, а иначе как обменивать?

Добавлено через 5 минут
Последний минимальный
Pascal
1
2
3
4
5
6
function mini(a:mas; n:integer):integer;
var i,r:integer;
begin r:=n;
for i:=n-1 downto 1 do if a[i]<a[r] then r:=i;
mini:=r;
end;
Еще после чтения файла его закрыть нужно.
Остальное вроде верно.
1
28.09.2016, 14:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2016, 14:36
Помогаю со студенческими работами здесь

Найти в каждой строке матрицы макс. и мин. элементы и поменять их местами первым и последним элементом строки соответственно
Дана матрица B.Найти в каждой строке матрицы макс. и мин. элементы и поменять их местами первым и...

Дана матрица B[N,M].Найти в каждой строке матрицы макс. и мин. элементы и поменять их местами первым и последним элементом строки соответственно
ребята помогите плиз!!! Дана матрица B.Найти в каждой строке матрицы макс. и мин. элементы и...

В массиве поменять местами максимальный элемент с последним отрицательным элементом
В школе задали задание: В данном массиве чисел с1, с2, ..., с25 поменять местами максимальный...

В массиве найти наименьший элемент и поменять его местами с последним элементом.
В массиве найти наименьший элемент и поменять его местами с последним элементом.


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

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