PASCAL Требуется посчитать сумму целых чисел, расположенных между числами 1 и N включительно. Входные данные В единственной строке входного файла INPUT.TXT записано единственное целое число N, не превышающее по абсолютной величине 10^4. Выходные данные В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число — сумму чисел, расположенных между 1 и N включительно. МОЁ РЕШЕНИЕ: var n, i, s, z: longint; begin assign(input, 'input.txt'); reset(input); assign(output, 'output.txt'); rewrite(output); z:=0; s:=0; read(n); begin if n<=z then exit; end; for i := 1 to n do s+=i; write(s); end. Но код не принимает система, что может быть не так? PS:// Но сложность этой задачи не в вычислении этой суммы и приведенный выше алгоритм не проходит на третьем тесте! Оказывается, здесь очень внимательно нужно прочитать условия задачи, особенно ограничения на число N. Дело в том, что это число может быть отрицательным!!! Учитывая это попробуйте самостоятельно доработать и реализовать верный алгоритм решения этой задачи. UPD: забыл условие поставить,что n не должно превышать 10^4UPD2:исправил ошибки, учёл что n<10000, но все равно "задача решена неверно" КОД:var n, i, s, z: longint; begin assign(input, 'input.txt'); reset(input); assign(output, 'output.txt'); rewrite(output); z:=0; s:=0; read(n); begin if n<=z then exit; end; if n<=10000 then for i := 1 to n do s+=i else exit; write(s); end.
Измените проверку на отрицательное значение числа N. Вот исправленный код:
var n, i, s: longint; begin assign(input, 'input.txt'); reset(input); assign(output, 'output.txt'); rewrite(output); s := 0; read(n); if n < 0 then begin for i := n to 1 do s := s + i; end else begin for i := 1 to n do s := s + i; end; write(s); close(input); close(output); end.
Этот код должен правильно обрабатывать отрицательные значения N и проходить все тесты.
Измените проверку на отрицательное значение числа N. Вот исправленный код:
varn, i, s: longint;
begin
assign(input, 'input.txt');
reset(input);
assign(output, 'output.txt');
rewrite(output);
s := 0;
read(n);
if n < 0 then
begin
for i := n to 1 do
s := s + i;
end
else
begin
for i := 1 to n do
s := s + i;
end;
write(s);
close(input);
close(output);
end.
Этот код должен правильно обрабатывать отрицательные значения N и проходить все тесты.