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

Ответить
Bad-Mad
Сообщения: 2
Зарегистрирован: 12 авг 2013, 12:44

Доброго времени суток, господа. начал осваивать программирование, и уже столкнулся с некоторыми проблемами. Буду признателен,если укажите на ошибку.
Суть задачи: есть массив из 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.
Вложения
задача..jpg
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Нужно циклом пройтись по массиву и подсчитать, в данном примере одно условие if m>0 then
[syntax=Delphi] [/syntax]
Bad-Mad
Сообщения: 2
Зарегистрирован: 12 авг 2013, 12:44

Спасибо, исправил. Но мне показалось слишком громоздко, можно ли сделать код попроще?



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.
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Угу, ещё стоит вынести plus:=0; за цикл, действий с ним не происходит в цикле..
[syntax=Delphi] [/syntax]
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

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