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

Подпрограмма поиска минимального и его адреса среди элементов массива

16.04.2015, 00:31. Показов 1749. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать подпрограмму поиска минимального и его адреса среди элементов массива. Для проверки подпрограммы создать драйвер, в котором выполнить ввод массива, запись на адрес минимума 100, вывод массива.

Помогите исправить программу

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
program Primer;
Type mas=array[1..10] of integer;
Var
n,i,S,min,imin:integer;
a:mas;
Procedure Summa(n1:integer;Var a1:mas; Var min1,imin:integer);
Var i1:integer;
begin min1:=9999;
for i1:=1 to n1 do
if a[i]<min1 then
begin
min1:=a[i];
imin:=i;
end;
end;
begin {Primer}
write('Ввести число элементов ');
readln(n);
 
for i:=1 to n do
 
begin
write('a[',i,']');
readln(a[i]);
end;
writeln;
writeln;
Summa(n,a,min,imin);{обращение к подпрограмме сумма}
for i:=1 to n do
 
imin:=100;
for i:=1 to n do
 
writeln('a[',i,']',a[i]);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2015, 00:31
Ответы с готовыми решениями:

Подпрограмма поиска минимума элементов матрицы и его адреса
Буду признателен если напишите програмку,надо до ночи 15 апреля,совсем уж туго у меня с пониманием...

Подпрограмма: поиск минимального элемента массива и его адреса
Помогите пожалуйста Написать подпрограмму поиска минимального и его адреса среди элементов...

1. Ввести символьный массив. Найти адреса всех парных его элементов. 2. Вывести адреса элементов массива 4 на 4, находящ
Помогите пж... 1. Ввести символьный массив. Найти адреса всех парных его элементов. 2. Вывести...

Подпрограмма. Среди элементов четных строк массива определить количество отрицательных элементов
Добрый день. Помогите, пожалуйста, сделать в виде подпрограммы. Дан массив X(N,M). Среди...

2
18 / 18 / 11
Регистрация: 05.01.2014
Сообщений: 119
Записей в блоге: 2
16.04.2015, 18:45 2
Цитата Сообщение от marijane Посмотреть сообщение
создать драйвер
Это как?
0
Модератор
9867 / 5235 / 3306
Регистрация: 17.08.2012
Сообщений: 16,005
17.04.2015, 17:45 3
marijane, не знаю, где Вы вместе с участником форума с ником Mixali4 взяли этот код со множественными родовыми травмами, вот Mixali4 утверждает, что это он написал, ну так у меня на этот счёт большие сомнения. Вот Вам его тема: Подпрограмма поиска минимума элементов матрицы и его адреса. Все мои замечания насчёт драйвера и Вашего кода в указанной теме в равной мере относятся и к Вам. Если хотите, для улучшения Ваших навыков в программировании можете исправить приведённую Вами программу, руководствуясь постом #6 указанной мной темы, однако, я рекомендую выбросить приведённый Вами код в Ганг, и взять на вооружение мой код из поста #4, второй вариант. Он полностью соответствует по функционалу приведённому Вами уродцу, но в моём хорошо развитом, здоровом и сильном коде отсутствуют (ну, это я так полагаю) всякие нелепицы и недоделки.

Добавлено через 39 минут
Ах, нет. То, что я привёл в пример, это для матрицы. Тогда лучше будет в качестве параметра процедуры использовать открытый массив. Да и задание чуть другое... Ну да ладно, ссылка на ту тему, думаю, всё равно не бесполезна. Со вниманием у меня сегодня что-то не так... Вот код по Вашему заданию:
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
{подпрограмма по заданию}
procedure s_min(var g: array of integer; m: integer; var x, mi: integer);
var i: integer;
begin
  mi := g[0];
  x := 1;
  for i := 1 to m - 1 do
    if g[i] < mi
      then begin
        mi := g[i];
        x := i + 1
      end
end;
 
{процедура печати массива}
procedure prnt(var g: array of integer; m: integer);
var i: integer;
begin
  for i := 0 to m - 1 do write(g[i]:8);
  writeln
end;
 
const max_ind = 200;
 
var a: array [1..max_ind] of integer;
    i, mi, min, n: integer;
 
{вызывающая программа}
begin
  {ввод размеров массива}
  repeat
    write('Enter array size: ');
    readln(n);
    if not (n in [1..max_ind])
      then writeln('Array size out of range [1..', max_ind, '], reenter.')
  until n in [1..max_ind];
  {генерация массива}
  randomize;
  for i := 1 to n do a[i] := -999 + random(1999);
  {печать массива}
  writeln('Source array A:');
  prnt(a, n);
  {вызов подпрограммы поиска минимума}
  s_min(a, n, mi, min);
  {печатаем минимум}
  writeln('Min element is A[', mi, '] = ', min);
  writeln;
  {замена}
  a[mi] := 100;
  {печать результата}
  writeln('Result array A:');
  prnt(a, n);
  readln
end.
Если нужен ручной ввод, то заменить генерацию массива на
Pascal
1
2
3
4
5
6
7
  {ввод массива}
  writeln('Enter elements of array A:');
  for i := 1 to n do
    begin
      write('A[', i, '] = ');
      readln(a[i])
    end;
Добавлено через 53 минуты
И ещё, ладно, работа над ошибками и исправление Вашего кода.
Работа над ошибками:
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
Type mas=array[1..10] of integer; {ага, не более 10}
Var
n,i,S,min,imin:integer; {переменная S нигде не используется}
a:mas;
Procedure Summa(n1:integer;Var a1:mas; Var min1,imin:integer); {переменная a1 нигде не используется}
Var i1:integer;
begin min1:=9999;
{если все элементы массива =, например, 10001, то ничего найдено не будет,}
{и, в любом случае, не будут учтены элементы >= 9999}
for i1:=1 to n1 do
if a[i]<min1 then {используется глобальная переменная a вместо локальной переменной a1}
begin
min1:=a[i];
imin:=i;
end;
end; {если все элементы >=9999, то min1=9999, imin=0, или вовсе imim=чему угодно}
begin {Primer}
write('Ввести число элементов ');
readln(n);
{если ввести n>10, программа завершится аварийно: выход за диапазон индексов,}
{а если ввести n<1... вообще смешно получится.}
for i:=1 to n do
 
begin
write('a[',i,']');
readln(a[i]);
end;
writeln;
writeln;
Summa(n,a,min,imin);{обращение к подпрограмме сумма}
{подпрограмма, ищущая минимум, называется Summa... Прелестно.}
for i:=1 to n do {в цикле n раз присваивается не то и не чему следует, совершенно не нужный цикл}
 
imin:=100; {Ну и.. Индексу присвоили 100, а надо бы минимальному элементу присвоить: a[imin]:=100, и один раз, а не в цикле}
for i:=1 to n do
 
writeln('a[',i,']',a[i]); {после этого оператора в большинстве паскалей программа мгновенно закроется,}
{результатов увидеть не успеете}
end.
Исправленный вариант:
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
const mm = 200; {максимальный размер массива, можете написать 10, если хотите}
 
type mas = array [1..mm] of integer;
 
{объявление глобальных переменных до процедуры может вызвать путаницу,}
{здесь объявлять глобальные переменные не комильфо, позже объявим}
 
procedure SearchMin(n1: integer; var a1: mas; var min1, imin: integer);
Var i1: integer;
begin
  min1 := a1[1]; {в качестве минимального значения можно принять, например, первый элемент массива}
  imin := 1; {обязательно запомнить индекс, вдруг первый элемент и есть минимальный}
  for i1 := 2 to n1 do {просмотр массива со второго элемента, первый смотреть уже незачем}
    if a1[i1] < min1 {используется локальная переменная a1, а не глобальная переменная a, как в Вашем коде}
      then begin
        min1 := a1[i1];
        imin := i1
      end
end;
 
{глобальные переменные в данном случае правильно объявить в этом месте}
var n, i, min, imin: integer; {до свидания, S...}
    a: mas;
 
begin {Primer}
  repeat {ввод размера массива с проверкой}
    write('Ввести число элементов [1..', mm, ']: ');
    readln(n)
  until (n >= 1) and (n <= mm);
  for i := 1 to n do
    begin
      write('a[', i, '] = ');
      readln(a[i])
    end;
  writeln;
  writeln;
  SearchMin(n, a, min, imin); {обращение к подпрограмме поиска минимума}
  writeln('Минимальный элемент: A[', imin, '] = ', min);
  {Ну напечатаем уже, а то иначе зачем этот min искали? Для тренажа, что ль?}
  a[imin] := 100; {минимальный элемент заменили на 100}
  for i:=1 to n do writeln('a[', i, '] = ', a[i]);
  readln {программа закроется не сразу, а после нажатия <Enter>}
end.
Ну, вроде ничего получилось... Малость кособокая программа, но это Вам выбирать: можете мой вариант взять, а можете и Ваш, исправленный. И, естественно, мною протестированный.
1
17.04.2015, 17:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2015, 17:45
Помогаю со студенческими работами здесь

Подпрограмма нахождения максимальных значений среди элементов массива
Составить программу для нахождения максимальных значений среди элементов линейных таблиц А и В.

Написать подпрограмму поиска минимума элементов матрицы и его адреса
Написать подпрограмму поиска минимума элементов матрицы и его адреса. Для проверки подпрограммы...

Вычислить в массиве b[1..20] минимального среди положительных элементов и его номера
Вычислить в массиве b минимального среди положительных элементов и его номера

Разработать программу поиска минимального значения массива и замены его заданным значениям b A(u), n=10
Разработать программу поиска минимального значения массива и замены его заданным значениям b A(u),...

Составить программу вычисления в массиве В(Х) минимального элемента среди положительных элементов и его номе
очень надо

Обчисление минимального среди максимальных элементов массива
Помогите написать прогу будте так добры. Задание: задано массив действительных чисел А (n*m), при...


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

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