Доброго времени суток, господа. начал осваивать программирование, и уже столкнулся с некоторыми проблемами. Буду признателен,если укажите на ошибку.
Суть задачи: есть массив из 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.
Одномерный массив. Не считает количество положительных элементов.
Нужно циклом пройтись по массиву и подсчитать, в данном примере одно условие if m>0 then
[syntax=Delphi] [/syntax]
Спасибо, исправил. Но мне показалось слишком громоздко, можно ли сделать код попроще?
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.
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.
Угу, ещё стоит вынести plus:=0; за цикл, действий с ним не происходит в цикле..
[syntax=Delphi] [/syntax]
Кстати, не понимаю, зачем выносить отдельно ввод 1-го элемента и отдельно - всех остальных.
Вместо readln(x); m:=x; можно оставить просто readln(m);
Наконец, если у вас первый элемент положительный - его не посчитает.
Вместо readln(x); m:=x; можно оставить просто readln(m);
Наконец, если у вас первый элемент положительный - его не посчитает.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.