Страница 1 из 1

Одномерный массив. Не считает количество положительных элементов.

Добавлено: 12 авг 2013, 13:15
Bad-Mad
Доброго времени суток, господа. начал осваивать программирование, и уже столкнулся с некоторыми проблемами. Буду признателен,если укажите на ошибку.
Суть задачи: есть массив из n элементов (не больше 20), значения вводятся с клавиатуры. После ввода необходимо подсчитать количество положительных чисел в массиве.
Прикладываю решение задачи с ответом + код программы.

program str158zad1;
var
m:array[1..20] of integer;
v,i,x,plus:integer;
begin
writeln('введите количествово элементов массива');
readln(v);
writeln('введите значение первого элемента');
readln(m[1]);
for i:=2 to v do
begin
plus:=0;
writeln('введите значение ',i,' элемента');
readln(x);
m:=x;
end;
if m>0 then
plus:=plus+1;
writeln('Положительных чисел в массиве - ',plus);
readln;
end.

Re: Одномерный массив. Не считает количество положительных элементов.

Добавлено: 12 авг 2013, 13:21
Duncon
Нужно циклом пройтись по массиву и подсчитать, в данном примере одно условие if m>0 then

Re: Одномерный массив. Не считает количество положительных элементов.

Добавлено: 12 авг 2013, 13:43
Bad-Mad
Спасибо, исправил. Но мне показалось слишком громоздко, можно ли сделать код попроще?



program str158zad1;
var
m:array[1..20] of integer;
v,i,x,plus:integer;
begin
writeln('введите количествово элементов массива');
readln(v);
writeln('введите значение первого элемента');
readln(m[1]);
for i:=2 to v do
begin
plus:=0;
writeln('введите значение ',i,' элемента');
readln(x);
m:=x;
end;
for i:=1 to v do
if m>0 then
plus:=plus+1;

writeln('Положительных чисел в массиве - ',plus);
readln;
end.

Re: Одномерный массив. Не считает количество положительных элементов.

Добавлено: 12 авг 2013, 14:04
Duncon
Угу, ещё стоит вынести plus:=0; за цикл, действий с ним не происходит в цикле..

Re: Одномерный массив. Не считает количество положительных элементов.

Добавлено: 12 авг 2013, 18:06
Хыиуду
Кстати, не понимаю, зачем выносить отдельно ввод 1-го элемента и отдельно - всех остальных.
Вместо readln(x); m:=x; можно оставить просто readln(m);
Наконец, если у вас первый элемент положительный - его не посчитает.