Предмет: Информатика,
автор: 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 есть остаток или нет
я понял но в воде написано нужен массив
В какой воде?
в вводе
Ты вообще в состоянии объяснить, зачем он нужен?
Вводится массив из 1000 значений? Бред.
я фото прикрепил с задачей
Ты там хоть раз встретил слово "массив"? Я - нет.
Впрочем, твоё дело. Я всё равно на Поцкале не пишу.
а мне надо
Ответы
Автор ответа:
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.
Приложения:
Похожие вопросы
Предмет: Математика,
автор: Аноним
Предмет: Геометрия,
автор: tiskovatatana19
Предмет: Литература,
автор: Abcdefghigklm
Предмет: Литература,
автор: trololoshka25