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

Определить минимальное и максимальное значения

12.05.2015, 22:01. Показов 3021. Ответов 5
Метки нет (Все метки)

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

Нашел функции сдвига вправо влево на определенное число, так же написал процедуру по поиску максимума и минимума, но я не могу определить до кого момента сдвигать вправо или влево.


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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
uses crt;
const n=6;
type mas=array[1..n] of integer;
var
a:mas;
i,j,max,min,posmax,posmin:integer;
 
procedure seamax_mas(var a:mas);
begin
max:=-maxint;
min:=maxint;
for i:=1 to n do
begin
if a[i]>max then
        begin
         max:=a[i];
         posmax:=i;
        end;
if a[i]<min then
        begin
         min:=a[i];
         posmin:=i;
        end;
end;
writeln;writeln;
write('max=',max);writeln(' posmax=',posmax);
write('min=',min);writeln(' posmin=',posmin);
writeln;
end;
writeln;writeln;
write('max=',max);writeln(' posmax=',posmax);
write('min=',min);writeln(' posmin=',posmin);
writeln;
end;
 
procedure vlevo(var b:mas; m:integer);
var
 q:integer;
begin
   for i:=1 to m do begin
      for j:=1 to n do
         if j=1 then q:=b[j] else begin
            b[j-1]:=b[j];
         end;
      b[n]:=q;
   end;
end;
 
procedure vpravo(var b:mas; m:integer);
var
 q:integer;
begin
   for i:=1 to m do begin
      for j:=n downto 1 do
         if j=n then q:=b[n] else begin
            b[j+1]:=b[j];
         end;
      b[1]:=q;
   end;
end;
 
 
begin
clrscr;
randomize;
 
for i:=1 to n do
 begin
  a[i]:=random(20);
  write(a[i],' ');
end;
seamax_mas(a);
 
{вот тут я не знаю как определить на сколько сдвигать}
if posmax>posmin then
                     begin
                     vlevo(a,posmax-1);
                     end
                 else
                     begin
                     vpravo(a,posmin-1);
                     end;
 
writeln;
for i:=1 to n do   write(a[i],' ');
readln;
end.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2015, 22:01
Ответы с готовыми решениями:

Найти максимальное и минимальное значения переменной
Есть код: Program Lab_4_3; var time, max, min, count, result, step, range_for, range_to :real; Begin writeln('Введите...

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

Найдите максимальное и минимальное значения среди чисел последлвательности
Вводится последовательность чисел, заканчивающаяся 0. Найдите максимальное и минимальное значения среди чисел этой последлвательности, а...

5
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
13.05.2015, 07:57
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
uses crt;
const n=6;
type mas=array[1..n] of integer;
procedure seamax_mas(a:mas;var posmax,posmin:integer);
var i:integer;
begin
posmax:=1;
posmin:=1;
for i:=2 to n do
if a[i]>a[posmax] then posmax:=i
else if a[i]<a[posmin] then posmin:=i;
writeln;
writeln('max=',a[posmax],' posmax=',posmax);
writeln('min=',a[posmin],' posmin=',posmin);
end;
 
procedure vlevo(var b:mas; m:integer);
var  i,j,q:integer;
begin
for i:=1 to m-1 do
 begin
  q:=b[1];
  for j:=1 to n-1 do
  b[j]:=b[j+1];
  b[n]:=q;
 end;
end;
 
procedure vpravo(var b:mas; m:integer);
var i,j,q:integer;
begin
for i:=1 to n-m do
 begin
  q:=b[n];
  for j:=n downto 2 do
  b[j]:=b[j-1];
  b[1]:=q;
 end;
end;
 
var a:mas;
    i,j,posmax,posmin:integer;
begin
randomize;
writeln('Исходный массив');
for i:=1 to n do
 begin
  a[i]:=random(20);
  write(a[i]:3);
 end;
seamax_mas(a,posmax,posmin);
if posmin<posmax then vlevo(a,posmin)
else vpravo(a,posmax);
writeln;
writeln('Измененный массив');
for i:=1 to n do
write(a[i]:3);
end.
0
1 / 1 / 0
Регистрация: 21.04.2013
Сообщений: 124
17.05.2015, 20:18  [ТС]
А есть ли вариант не делать две процедуры влево вправо,а сделать одну?То есть все это сделать сдвигом в одну сторону?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
17.05.2015, 20:50
Цитата Сообщение от Helis Посмотреть сообщение
не делать две процедуры влево вправо,а сделать одну
Это можно.
Цитата Сообщение от Helis Посмотреть сообщение
То есть все это сделать сдвигом в одну сторону?
А это не имеет смысла, вроде как штаны через голову надевать.
0
1 / 1 / 0
Регистрация: 21.04.2013
Сообщений: 124
14.09.2015, 14:16  [ТС]
А можно все таки сделать сдвиг отталкиваясь от позиции мин и макс,а не как у вас?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.09.2015, 14:31
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
45
46
47
48
49
50
51
52
53
54
55
56
57
uses crt;
const n=15;
type mas=array[1..n] of integer;
procedure seamax_mas(a:mas;var posmax,posmin:integer);
var i:integer;
begin
posmax:=1;
posmin:=1;
for i:=2 to n do
if a[i]>a[posmax] then posmax:=i
else if a[i]<a[posmin] then posmin:=i;
writeln;
writeln('max=',a[posmax],' posmax=',posmax);
writeln('min=',a[posmin],' posmin=',posmin);
end;
 
procedure sdvig(var b:mas; posmax,posmin:integer);
var  i,j,q:integer;
begin
if posmin<posmax then
 begin
  for i:=1 to posmin-1 do
   begin
    q:=b[1];
    for j:=1 to n-1 do
    b[j]:=b[j+1];
    b[n]:=q;
  end;
 end
else
 begin
  for i:=1 to n-posmax do
   begin
    q:=b[n];
    for j:=n downto 2 do
    b[j]:=b[j-1];
    b[1]:=q;
   end;
 end;
end;
var a:mas;
    i,j,posmax,posmin:integer;
begin
randomize;
writeln('Исходный массив');
for i:=1 to n do
 begin
  a[i]:=random(20);
  write(a[i]:3);
 end;
seamax_mas(a,posmax,posmin);
sdvig(a,posmax,posmin);
writeln;
writeln('Измененный массив');
for i:=1 to n do
write(a[i]:3);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.09.2015, 14:31
Помогаю со студенческими работами здесь

Найти минимальное и максимальное значения элементов динамического двумерного массива
8)Задать размерность (число строк и столбцов), минимальное и максимальное значения элементов динамического двумерного массива (количество...

Заменить нулем максимальное и минимальное значения в каждом столбце матрицы.
Прошу помогите написать программу в паскале, эта задача вызвала у меня трудности. Дана матрица размером n*m. Найти и заменить нулем...

Определить минимальное и максимальное значение массива
Создать массив из целых случайных чисел,посчитать среднее арифмитическое,а так же определить минимальное и максимальное значение массива.

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

Определить максимальное и минимальное числа и записать их в файл
5. Создать с помощью программы файл из 10 целых чисел. Определить максимальное и минимальное числа и записать их в файл, на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru