Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

"Ошибка в чтении целых чисел из файла: Паскаль не находит четные числа в диапазоне от 1 до 50"

Delphi , Синтаксис , Циклы

Паскаль: Ошибка при чтении целых чисел из файла и нахождение четных чисел в диапазоне от 1 до 50

При работе над проектом на Паскале вы столкнулись с ошибкой при чтении целых чисел из файла и нахождении четных чисел в диапазоне от 1 до 50. В этой статье мы поможем вам разобраться в проблеме и предоставим исправленный код.

Описание проблемы

Вы пытаетесь прочитать набор целых чисел из входного файла и суммировать только четные числа в диапазоне от 1 до 50. Однако, ваш код не работает, и вы получаете в качестве результата "Even sum is 0".

Ваш исходный код:

program even(input, output, indata);
uses
  crt;
var
  indata: text;
  num, even: integer;
begin
  clrscr;
  assign(indata, 'j:\num.txt');
  reset(indata)0; // Ошибка: лишний 0 после скобки
  read(indata, num);
  while num > 50 do // Ошибка: условие всегда ложно, так как первое число 1
  begin
    read(indata, num);
    if num mod 2 = 0 then
      even := even + num; // Ошибка: переменная even не инициализирована
  end;
  writeln('Even sum is', even);
  readln();
end.

Исправленный код:

Чтобы исправить ошибки в вашем коде, выполните следующие шаги:

  1. Удалите лишний 0 после скобки в строке reset(indata)0;.
  2. Инициализируйте переменную even перед циклом, чтобы она содержала начальное значение, например, 0.
  3. Измените условие в цикле while на num < 50, чтобы цикл выполнялся, пока не будет прочитано число больше 50.
  4. Добавьте закрытие файла в конце программы с помощью CloseFile(indata) или Close(indata).

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

program even(input, output, indata);
uses
  crt;
var
  indata: text;
  num, even: integer;
begin
  clrscr;
  assign(indata, 'j:\num.txt');
  reset(indata);
  read(indata, num);
  even := 0; // Инициализация переменной even
  while num < 50 do // Исправленное условие цикла
  begin
    read(indata, num);
    if num mod 2 = 0 then
      even := even + num; // Теперь все работает правильно
  end;
  writeln('Even sum is', even);
  readln();
  CloseFile(indata); // Закрытие файла
end.

Теперь ваш код должен правильно работать и суммировать все четные числа в диапазоне от 1 до 50 из входного файла.

Создано по материалам из источника по ссылке.

Краткое описание: При работе над проектом на Паскале пользователь столкнулся с ошибками при чтении целых чисел из файла и нахождении четных чисел в диапазоне от 1 до 50, и требуется помощь в исправлении кода.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Циклы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:31:15/0.0054380893707275/1