Консультация № 190341
25.12.2016, 15:56
0.00 руб.
0 4 1
Здравствуйте! У меня возникли сложности с таким вопросом:

В одномерном массиве А(I), элементами которого являются положительные и отрицательные целые числа, вводимые с клавиатуры определите максимальное из отрицательных элементов массива. Сформируйте новый массив В(I), заменив положительные элементы массива найденным максимумом из отрицательных элементов массива А(I)

Обсуждение

давно
Студент
400828
51
25.12.2016, 21:44
общий
29.12.2016, 22:34
это ответ
Здравствуйте, dinar.ahmetov.2598!
[code lang=pascal h=100]
Const N=10;
Var a, b: array[1..N] of Integer;
i, PosMaxNegative: Integer;
begin
PosMaxNegative:=0;
for i:=1 to N do
begin
read(a[i]);
if a[i]<0 then
PosMaxNegative:=i;
end;
writeln;
if PosMaxNegative>0 then
begin
for i:=1 to n do
if (a[i] < 0) and (a[i]>a[PosMaxNegative]) then
PosMaxNegative:=i;
for i:=1 to N do
begin
if a[i]>0 then{тут ошибка искались отрицательные числа, а нужны были положительные}
b[i]:=a[PosMaxNegative]
else
b[i]:=a[i];
write(b[i],' ')
end
end
else
write('Нет ни одного отрицательного числа')
end.[/code]
Примеры работы кода(см. комментарий в коде: был перепутан ">" и "<" К.Зенченко):
Ввод:
Код:
5 11 -1 9 -3 -7 8 4 -2 2

Вывод:
Код:
5 11 -1 9 -1 -1 8 4 -1 2 


Ввод:
Код:
1 1 2 3 4 5 6 7 8 9

Вывод:
Код:
Нет ни одного отрицательного числа
Об авторе:
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
давно
Студент
400828
51
26.12.2016, 01:09
общий
Сорри, допустил ошибку.
Вместо:
if a[i]<0 then
Должно быть:
if a[i]>0 then
Об авторе:
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
давно
Старший Модератор
31795
6196
26.12.2016, 18:37
общий
Адресаты:
Цитата: mklokov
Сорри, допустил ошибку.


Слишком много этих IF'ов, исправленный вариант:
[code lang=pascal h=100]Const N=10;
Var a, b: array[1..N] of Integer;
i, PosMaxNegative: Integer;
begin
PosMaxNegative:=0;
for i:=1 to N do
begin
read(a[i]);
if a[i]<0 then
PosMaxNegative:=i;
end;
writeln;
if PosMaxNegative>0 then
begin
for i:=1 to n do
if (a[i] < 0) and (a[i]>a[PosMaxNegative]) then
PosMaxNegative:=i;
for i:=1 to N do
begin
if a[i]>0 then{тут ошибка}
b[i]:=a[PosMaxNegative]
else
b[i]:=a[i];
write(b[i],' ')
end
end
else
write('Нет ни одного отрицательного числа')
end.[/code]
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
26.12.2016, 18:39
общий
Адресаты:

Когда указываете на ошибку - указывайте строки кода.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа