В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
NeGaTiV1488228
NeGaTiV1488228
21.09.2020 11:47 •  Информатика

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^4 upd2: исправил ошибки, учёл что 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.

Показать ответ
Ответ:
aliha001
aliha001
11.08.2020 07:53

Ваши ошибки:

1) Объявление текстовых переменных и неиспользование их.

2) Ненужный тип longint, зачем такой большой тип?

Типа Integer вполне достаточно (-32 768 … 32 767).

3) Объявление абсолютно ненужной переменной z.

4) Главная ошибка - это непонимание задания, и соответственно неправильно построенный алгоритм.


Попробуйте это, самое оптимальное по времени, минимальное кол-во переменных. Использован метод Гаусса, можно было и арифм. прогрессию.


var

  n: integer;

  text: text;


begin

  assign(text, 'input.txt'); reset(text);

  readln(text, n); close(text);

  

  if (n > 10000) then exit;

  

  assign(text, 'output.txt'); rewrite(text);

  if n < 0 then Writeln(text, -((1 + abs(n)) * (abs(n) / 2) - 1))

  else Writeln(text, (1 + n) * (n / 2));

  close(text);

end.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота