Имеется код: var a: array[1..15] of integer; i,k,l,z,b,c,qu:integer; min,max,u:byte;...

0 голосов

Имеется код:

var a: array[1..15] of integer;
i,k,l,z,b,c,qu:integer;
min,max,u:byte;
begin
randomize;
l:= 0;
k:= 0;
for i:= 1 to 15 do
a[i]:=random(20,40);
writeln;
for i:= 1 to 15 do
write(a[i]:4);
writeln;
writeln;

for i:= 1 to 15 do
if a[i]<0 then l:= l+1 <br> else if a[i]>0 then k:= k+1;
if l>k then writeln('а) Отрицательных чисел больше чем положительных')
else if l else writeln('а) Отрицательных и положительных чисел одинаково');
writeln;
writeln('б) Поставить минимальный элемент на первое место и максимальный элемента массива на последнее');
writeln;
min := 1;
max := 1;
for u:=1 to 15 do begin
if a[u] < a[min] then
min := u;
if a[u] > a[max] then
max := u;
end;
c:=a[1];
a[1]:=a[min];
a[min]:=c;
b:=a[15];
a[15]:=a[max];
a[max]:=b;
for i:= 1 to 15 do
write(a[i]:4);
writeln;
writeln;

end.

Здесь он сравнивает положительные и отрицательные числа, ставит минимальный элемент массива на первое место и максимальный элемент на последнее место.

Нужно реализовать вывод всех номеров элементов, на которых встречается минимальное значение. (элемент - a[min], его номер в массиве - min).
Я уже запутался что-то мальца, помогите, пожалуйста, дописать уже этот код.


спросил от Начинающий (199 баллов) в категории Информатика
оставил комментарий от БОГ (194k баллов)

Как-то всё очень длинно. Хотелось бы увидеть постановку задачи.

оставил комментарий от Начинающий (199 баллов)

В общем, есть переменная с элементом массива a[min] - минимальное число в массиве, нужно добавить write(min), но у меня не выходит, либо дублируются значения (одна и та же позиция несколько раз). Делать пытался через for, но та же ситуация

оставил комментарий от Начинающий (199 баллов)

В коде просто солянка полная, ибо несколько решений тут делается.

оставил комментарий от БОГ (194k баллов)

Напишите точную постановку задачи. Что требуется сделать.

оставил комментарий от Начинающий (199 баллов)

Массив из 15 элементов заполнен случайными числами в диапазоне [-20; 20]. Вывести все номера элементов, на которых встречается минимальное значение

1 Ответ
0 голосов
ответил от БОГ (194k баллов)
 
Лучший ответ

Const n=15;
var a: array[1..n] of integer;
i,k,l,c:integer;
min,max:byte;
begin
randomize;
for i:= 1 to n do
 begin
 a[i]:=random(-20,20);
 write(a[i]:4);
 end;
writeln;

l:=0; k:=0;
for i:= 1 to n do
 if a[i]<0 then l:=l+1 <br> else if a[i]>0 then k:=k+1;
if l>k then writeln('а) Отрицательных чисел больше чем положительных')
 else if k>l then writeln('а) Положительных чисел больше чем отрицательных')
  else writeln('а) Отрицательных и положительных чисел одинаково');
writeln;
writeln('б) Поставить минимальный элемент на первое место и максимальный элемента массива на последнее');
writeln;
min := 1; max := 1;
for i:=2 to n do begin
 if a[i] < a[min] then min := i;
 if a[i] > a[max] then max := i;
end;
c:=a[1]; a[1]:=a[min]; a[min]:=c;
c:=a[n]; a[n]:=a[max]; a[max]:=c;
for i:= 1 to n do write(a[i]:4);
writeln;
writeln; 
writeln('в) Номера элементов с минимальным значением:');
for i:= 1 to n do 
 if a[i]=a[1] then write(i,' '); // Минимальный элемент поставлен на первое место!
writeln; 
end.

Пример (для элементов из диапазона [-10; 10]):
   6  -6   6  -9  -9  -3  -7   9  -3   9   6  -8   7  -3   6
а) Отрицательных чисел больше чем положительных

б) Поставить минимальный элемент на первое место и максимальный элемента массива на последнее

  -9  -6   6   6  -9  -3  -7   6  -3   9   6  -8   7  -3   9

в) Номера элементов с минимальным значением:
1 5 

оставил комментарий от Начинающий (199 баллов)

Всё хорошо работает, спасибо! Только вопрос есть небольшой: почему в таких случаях лучше использовать const, когда array задаётся точно от 1 до 15?

оставил комментарий от БОГ (194k баллов)

Чтобы в случае необходимости можно было легко изменить количество элементов. Профессионалы делают, как правило, именно так. )

оставил комментарий от Начинающий (199 баллов)

Хорошо, понял. Многому ещё придётся научиться) Благодарю за помощь

оставил комментарий от БОГ (194k баллов)

На здоровье. Успехов!

...