Вопрос задан 28.06.2023 в 13:08. Предмет Информатика. Спрашивает Смирнов Евгений.

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

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.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Павлова Виктория.

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

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.

Выделенное жирным шрифтом - исправленный вариант.

Теперь программа корректно ищет и минимальный и максимальный элементы, при том проходя массив полностью, а не до первого совпадения, как было в исходной версии.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Да, в вашем коде есть несколько ошибок. Вот исправленный вариант:

pascal
Program 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.

Исправления:

  1. Заменил min и max на minIdx и maxIdx для хранения индексов минимального и максимального элементов массива.

  2. Перенес условные операторы if a[i] < a[minIdx] then minIdx := i; и if a[i] > a[maxIdx] then maxIdx := i; в цикл for для правильного определения индексов минимального и максимального элементов.

  3. Изменил условие if a[i]&gt;a[max] then max:=i; на if a[i] > a[maxIdx] then maxIdx := i; для правильного определения максимального элемента.

Теперь ваша программа должна корректно выводить максимальный и минимальный элементы массива.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос