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

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

Delphi , Интернет и Сети , Браузер

Вопрос, поднятый пользователем, связан с обработкой текстового файла в среде PascalABC. Задача заключается в подсчете количества восклицательных знаков в строках с четными номерами и выводе строк, содержащих более двух восклицательных знаков. В процессе решения возникла ошибка, связанная с несоответствием типов данных.

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

Пользователь столкнулся с проблемой, когда пытался прочитать файл и выполнить указанные операции. При выполнении программы в среде PascalABC была выявлена ошибка в строке с номером 3, связанная с ожидаемым типом данных.

Пример кода с ошибкой

program text;
var
  T: Text; // Ошибка может быть связана с использованием типа Text
  fName: string;
  str: string;
  i: integer;
  numStr: integer; {Number of current string in file}
  amtSymb: integer; {count !}
begin
  clrscr;
  write('enter input file name: ');
  readln(fName);
  assign(T, fName);
  reset(T);          {open file for reading}
  numStr := 0;       // Инкремент numStr происходит до проверки четности строки
  while not EoF(T) do begin
    readln(T, str);
    inc(numStr);
    if ((numStr mod 2) = 0) then begin
      amtSymb := 0;
      for i := 1 to length(str) do begin
        if (str[i] = '!') then
          inc(amtSymb);
      end;
      if (amtSymb > 2) then
        writeln(str);
    end;
  end;
  close(T);
  writeln('press any key to exit...');
  readKey;
end.

Подтвержденный ответ

Проблема, скорее всего, связана с конфликтом имен между именем программы text и типом файла Text. Рекомендуется переименовать программу, чтобы избежать этого конфликта. Кроме того, инкремент переменной numStr происходит до проверки четности строки, что неверно с логической точки зрения. Проверку на четность следует выполнять до инкремента.

Альтернативный ответ

Альтернативный ответ не был предоставлен пользователем, но на основе анализа кода можно предложить следующие улучшения:

  1. Исправить конфликт имен, переименовав программу.
  2. Переместить инкремент переменной numStr после проверки четности строки.
  3. Убедиться, что все используемые идентификаторы (переменные, типы и т.д.) не конфликтуют с встроенными идентификаторами PascalABC.

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

program TextProcessor;
var
  file: Text; // Используем другое имя для переменной типа Text
  fName: string;
  line: string;
  index: integer;
  lineNumber: integer; {Номер текущей строки в файле}
  exclamationMarks: integer; {Счетчик !}
begin
  clrscr;
  write('Введите имя входного файла: ');
  readln(fName);
  assign(file, fName);
  reset(file);          {Открываем файл для чтения}
  lineNumber := 1;      // Начинаем с первой строки
  while not EoF(file) do begin
    readln(file, line);
    if ((lineNumber mod 2) = 0) then begin   // Проверяем четность строки
      exclamationMarks := 0;
      for index := 1 to length(line) do begin
        if (line[index] = '!') then
          inc(exclamationMarks);
      end;
      if (exclamationMarks > 2) then         // Выводим строку если больше двух !
        writeln(lineNumber, ': ', line);
    end;
    inc(lineNumber); // Инкремент номера строки после чтения
  end;
  close(file);
  writeln('Нажмите любую клавишу для выхода...');
  readKey;
end.

Этот код исправляет проблему пользователя и демонстрирует, как правильно читать файл и выполнять необходимые операции с учетом четности строк.

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

Задача состоит в написании программы на языке PascalABC для обработки текста из файла, где необходимо подсчитать количество восклицательных знаков в четных строках и вывести строки, содержащие более двух таких знаков, а также исправление возникшей ошибки


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

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




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


:: Главная :: Браузер ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:47:08/0.0038411617279053/1