Предмет: Информатика, автор: sinitsyn

в чем ошибка: program gadanie;
var a:array[1..1000] of integer;
n,s,i: integer;
begin
readln(n);
s:=0;
for i:=1 to 1000 do
if n mod a[i] = 0 then s:=s+a[i];
writeln(s);
end.

Приложения:

sinitsyn: вообще я хочу перебрать массив от 1 до 1000 есть остаток или нет
sinitsyn: я понял но в воде написано нужен массив
Аноним: В какой воде?
sinitsyn: в вводе
Аноним: Ты вообще в состоянии объяснить, зачем он нужен?
Аноним: Вводится массив из 1000 значений? Бред.
sinitsyn: я фото прикрепил с задачей
Аноним: Ты там хоть раз встретил слово "массив"? Я - нет.
Аноним: Впрочем, твоё дело. Я всё равно на Поцкале не пишу.
sinitsyn: а мне надо

Ответы

Автор ответа: ЯковПервый
2

Что касается ошибок, то в условии сказано, что введенное число n находится в диапазоне [1; 1000], то есть, программа не должна высчитывать сумму, если пользователь ввел  число, не входящее в этот диапазон. А вы вместо этого создали массив, с которым еще и вычисления проводите, хотя сами в него не занесли ни одного значения.


Вот правильный код:


var

  n, sum: integer;

   

begin

   

  write('Введите число: ');

  readln(n);

   

  if ((n >= 1) and (n <= 1000)) then

  begin

     for var i := 1 to n do

     begin

        if (n mod i = 0) then

           sum := sum + i;

     end;

     

     write('Сумма всех натуральных чисел: ', sum);

  end

   

  else

     write('Ошибка ввода! Число должно быть в диапазоне [1; 1000]');

   

end.

Приложения:
Похожие вопросы