Нужно переделать программу

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Нужно переделать программу

Сообщение Andrey291 » 03.10.2016 23:49:44

Нужно переделать программу с "В одномерном массиве, с n действительных элементов, вычислить сумму: положительных элементов массива и найти минимальный по модулю элемент."
На "В одномерном массиве, с n действительных элементов, вычислить сумму: отрицательное элементов массива и найти максимальный по модулю элемент.
Я делаю что-то не так.


Код: Выделить всё
program lb4;
type masiv= array[1..10] of real;
var mas:masiv;
    a,n: integer;
{-----------------------------------------------}
procedure enter_mas(var a:masiv;n:integer);
var i:integer;
begin
writeln('Введите значение');
for i:=1 to n do read(mas[i]);
end;
{------------------------------------------------}
procedure print_mas(var a:masiv;n:integer);
var i:integer;
begin
writeln('Введите значение');
for i:=1 to n do write(mas[i],' ');
writeln;
end;
{-----------------------------------------------}
procedure min_el(mas: masiv; n: integer);
var i:integer; min,a: real;
begin
min:=abs(mas[1]);
for i:=1 to n do
begin
a:=abs(mas[i]);
if min>a then min:=a;
end;
writeln('|min|=',min:3:2);
end;
{----------------------------------------------------}
procedure suma(mas:masiv;n:integer);
var i:integer; s:real;
begin
s:=0;
for i:=1 to n do
if mas[i]>=0 then s:=s+mas[i];
writeln('suma=',s);
end;
{----------------------------------------------------}
begin
write('Vvedit rozmirnist <10 ');
readln(n);
enter_mas(mas,n);
print_mas(mas,n);
min_el(mas,n);
suma(mas,n);
readln;
end.
Andrey291
незнакомец
 
Сообщения: 2
Зарегистрирован: 29.09.2016 20:38:52

Re: Нужно переделать программу

Сообщение SSerge » 04.10.2016 05:03:49

В операторах if у вас до сих пор стоит условие по первой задаче.
Мало ли что вы меняете наименование переменной :D То, как вы ее называете, не меняет логики программы.
Значит что:
если надо максимальный элемент из перебираемых, так и условие должно быть "если он больше, то он кандидат на переписывание максимального значения". Да, и вам не зря сказали - "по модулю". Для взятия "модуля" есть такая функция ABS. http://www.freepascal.org/docs-html/rtl/system/abs.html
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: Ichthyander и гости: 10

Рейтинг@Mail.ru