Предмет: Информатика,
автор: Астрa
Паскаль. Данная программа работает, но только при некоторых значениях a[i]. Я думаю, что дело в этом условии (a[j])>(a[i]). Если a[j] примет отрицательное значение, то в ответе выйдет "не найдено", так же будет выведено не найдено если первое число в массиве не удовлетворяет условию(a[i] mod 2=0) and (a[i]>0), но является самым маленьким. Я понимаю почему, помогите исправить.
const
n=8;
var a:array[1..n] of integer;
j,i:integer;
begin
for i:=1 to n do
read(a[i]);
j:=1;
for i:=1 to n do
begin
if ((a[j])>(a[i])) and (a[i] mod 2=0) and (a[i]>0) then
j:=i
end;
if (a[j] mod 2=0) and (a[j]>0) then
write(a[j])
else
write('не найдено');
end.
Ответы
Автор ответа:
0
const
n = 8;
nmax = 32767;
var
a: array[1..n] of integer;
i, t, min: integer;
begin
min := nmax;
for i := 1 to n do
begin
Read(t); a[i] := t;
if (t > 0) and (t mod 2 = 0) then
if min > t then min := t
end;
if min <> nmax then
Writeln('Минимальный положительный четный элемент равен ', min)
else
Writeln('В массиве нет четных положительных элементов')
end.
Тестовое решение:
353 638 -1000 -452 320 -18 19 0
Минимальный положительный четный элемент равен 320
n = 8;
nmax = 32767;
var
a: array[1..n] of integer;
i, t, min: integer;
begin
min := nmax;
for i := 1 to n do
begin
Read(t); a[i] := t;
if (t > 0) and (t mod 2 = 0) then
if min > t then min := t
end;
if min <> nmax then
Writeln('Минимальный положительный четный элемент равен ', min)
else
Writeln('В массиве нет четных положительных элементов')
end.
Тестовое решение:
353 638 -1000 -452 320 -18 19 0
Минимальный положительный четный элемент равен 320
Автор ответа:
0
Можете мне в сообщениях еще про if min <> nmax then пояснить?
Автор ответа:
0
я не поняла
Автор ответа:
0
а программа теперь получилась, спасибо)
Автор ответа:
0
const
n=8;
var a:array[1..n] of integer;
j,k,i:integer;
begin
for i:=1 to n do
read(a[i]);
k:=1001;
j:=1;
for i:=1 to n do
begin
if (a[i]>0) and (a[i] mod 2=0) then
if a[j]<k then
j:=i
end;
if (a[j])<>k then
write(a[j])
else
write('не найдено');
end.
n=8;
var a:array[1..n] of integer;
j,k,i:integer;
begin
for i:=1 to n do
read(a[i]);
k:=1001;
j:=1;
for i:=1 to n do
begin
if (a[i]>0) and (a[i] mod 2=0) then
if a[j]<k then
j:=i
end;
if (a[j])<>k then
write(a[j])
else
write('не найдено');
end.
Автор ответа:
0
Первоначально min := nmax; Проверка if min <> nmax then ... делается, чтобы узнать, было ли изменено первоначальное значение min. Если было - то минимум найден.
Похожие вопросы
Предмет: Математика,
автор: dota2player000
Предмет: Қазақ тiлi,
автор: popl1020
Предмет: Алгебра,
автор: 404errorf124
Предмет: История,
автор: Аноним