IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Одна программа. две задачи . три модуля. Ошибка., Полный код большой программы.одна маленькая ошибка.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Женский

Репутация: -  0  +


Здравствуйте. Есть программа, решающие такие две задачи. 1. Указать относительную частотувстречаемости каждого символа в тексте. вывести соответствующую диаграмму(при помощи модуля graph) (знаки препинания не учитываем)2. Найти все слова перевертыши. Задача решаются следующим образом. с помощью модуля Crt появляется на экране меню, с выбором как вводить данные. 1. с клавиатуры. 2. из файла. далее после ввода данных появляется меню с выбором программы: 1.относительная частота. 2. слова перевертыши. далее выполняется либо первая либо вторая задача. затем появляется меню с пунктами :"сохранить решение в файл" или "вывести на экран". код задач находятся в модуле slova и оформлены в виде процедур. код меню находится в модуле modulmenu. ну и конечно основная программа к которой подключены все модули и и процедуры.

проблема вот такая. задача про слова перевертыши работает отлично, и на вводе текста из файла и склавиатуры, и на выводе данных. но первая задача, про относительную частоту работает очень странно...диаграммы выводит какие-то непонятные данные , а когда появляется меню вывода данных то там вместо пунктов "на экран" и "в файл" показывает полную чушь.

понимаю что разбираться в чужом коде это самая неблагодарная в мире работа, но я очень прошу помощи.это очень важная работа.

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




Прикрепленные файлы
Прикрепленный файл  slova.pas ( 5.27 килобайт ) Кол-во скачиваний: 295
Прикрепленный файл  modulmenu.pas ( 1.73 килобайт ) Кол-во скачиваний: 314
Прикрепленный файл  menushka.pas ( 3.79 килобайт ) Кол-во скачиваний: 268
Прикрепленный файл  pervaya.pas ( 1.72 килобайт ) Кол-во скачиваний: 285
Прикрепленный файл  vtoraya2.pas ( 2.58 килобайт ) Кол-во скачиваний: 284
Прикрепленный файл  int.pas ( 387 байт ) Кол-во скачиваний: 303
Прикрепленный файл  f2.pas ( 49 байт ) Кол-во скачиваний: 289
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Мне кажется, что я уже отмечал в предыдущем твоём топике, что нужно инициализировать все переменные.

В модуле slova:

procedure PoiskSimvolov(input_str: massive; count: integer; var out_str: massive; var nomer: integer);
......
begin
  j := 1;
  k := 1; h:=0;

  q :=0;                    <-------------- добавь инициализацию
  for i:=0 to 255 do    <-------------- добавь инициализацию
    a[i]:=0;
......................

          эти строки, наверное в таком порядке и с добавлением вычислений в результирующую строку
      str((a[i] / h): 3: 3, st);
      out_str[nomer] := chr(i) + ' - ' + 'частота-'+st;     <------ добавилась конкатенция с st
..............
кроме того, закрывай графическое окно
  if InitGr then
  begin
....................
    ReadLn;          <--------- закрытие окна, но для закрытия придётся сделать активным консольное
    CloseGraph;
  end
  else
    WriteLn('idi ti');
................


А по поводу вывода текста - оформи весь текст ввода-вывода на английском. Судя по длине имён файлов, ты работаешь в Windows, а там с русификацией консольных кодировок просто бардак, в одних случаях берётся ANSI, а в других CP866. Причём всё зависит от индивидуальных настроек компьютера, использования CRT и чего-то ещё.

Ну если с английским - беда, то запиши транслитом. Это конечно не очень хорошо, но всё же лучше, чем иероглифы.

P.S. Для чтения текстового файла в память не обязательно создавать статические массивы - существуют готовые объекты - TStringList - которые очень удобно использовать для этих целей.маленький пример

P.P.S. Также, для оформления текста исходников, можно пользоваться автоматическими форматтерами. Здесь описание пары таких программ.


Сообщение отредактировано: Федосеев Павел -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






спасибо. попробую . отпишусь
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.04.2025 19:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name