
Помогите пожалуйста где здесь ошибка и исправьте неправильно выводит макс. и мин. значения
Program j;uses crt;const n=10;var a: array [1..n] of integer; i,min,max:integer;beginmin:=1; max:=1; Writeln ('Введите элементы массива');For i:=1 to n doBeginWrite ('a[',i: 2,']='); Readln(a[i]);End;Writeln ('Контрольный вывод массива: ');For i:=1 to n do Writeln('a[',i:2,']=',a[i]:4); if a[i]>a[max] then max:=i; if a[i]writeln('Максимальный элемент массива ',a[max],' под номером ',max);writeln('Минимальный элемент массива ',a[min],' под номером ',min);readln;end.

Ответы на вопрос

Неправильно написан поиск минимального и максимального элементов:
Program j;
uses crt;
const n=10;
var a: array [1..n] of integer;
i,min,max:integer;
begin
min:=1; max:=1;
Writeln ('Введите элементы массива');
For i:=1 to n do
Begin
Write ('a[',i: 2,']=');
Readln(a[i]);
End;
Writeln ('Контрольный вывод массива: ');
For i:=1 to n do
Writeln('a[',i:2,']=',a[i]:4);
for i:=1 to n do
begin
if a[i]>a[max] then max:=i;
if a[i]<a[min] then min:=i;
end;
writeln('Максимальный элемент массива ',a[max],' под номером ',max);
writeln('Минимальный элемент массива ',a[min],' под номером ',min);
end.
Выделенное жирным шрифтом - исправленный вариант.
Теперь программа корректно ищет и минимальный и максимальный элементы, при том проходя массив полностью, а не до первого совпадения, как было в исходной версии.



Да, в вашем коде есть несколько ошибок. Вот исправленный вариант:
pascalProgram j; uses crt; const n = 10; var a: array [1..n] of integer; i, minIdx, maxIdx: integer; begin minIdx := 1; maxIdx := 1; Writeln ('Введите элементы массива'); for i := 1 to n do begin Write ('a[', i:2, ']='); Readln(a[i]); if a[i] < a[minIdx] then minIdx := i; if a[i] > a[maxIdx] then maxIdx := i; end; Writeln ('Контрольный вывод массива: '); for i := 1 to n do Writeln('a[', i:2, ']=', a[i]:4); Writeln('Максимальный элемент массива ', a[maxIdx], ' под номером ', maxIdx); Writeln('Минимальный элемент массива ', a[minIdx], ' под номером ', minIdx); readln; end.
Исправления:
Заменил
min
иmax
наminIdx
иmaxIdx
для хранения индексов минимального и максимального элементов массива.Перенес условные операторы
if a[i] < a[minIdx] then minIdx := i;
иif a[i] > a[maxIdx] then maxIdx := i;
в циклfor
для правильного определения индексов минимального и максимального элементов.Изменил условие
if a[i]>a[max] then max:=i;
наif a[i] > a[maxIdx] then maxIdx := i;
для правильного определения максимального элемента.
Теперь ваша программа должна корректно выводить максимальный и минимальный элементы массива.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili