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

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

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

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


Новичок
*

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

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


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

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

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

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




Прикрепленные файлы
Прикрепленный файл  slova.pas ( 5.27 килобайт ) Кол-во скачиваний: 186
Прикрепленный файл  modulmenu.pas ( 1.73 килобайт ) Кол-во скачиваний: 179
Прикрепленный файл  menushka.pas ( 3.79 килобайт ) Кол-во скачиваний: 154
Прикрепленный файл  pervaya.pas ( 1.72 килобайт ) Кол-во скачиваний: 157
Прикрепленный файл  vtoraya2.pas ( 2.58 килобайт ) Кол-во скачиваний: 161
Прикрепленный файл  int.pas ( 387 байт ) Кол-во скачиваний: 174
Прикрепленный файл  f2.pas ( 49 байт ) Кол-во скачиваний: 189
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 2.05.2013 20:26
Сообщение #2


Бывалый
***

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

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


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

В модуле 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. Также, для оформления текста исходников, можно пользоваться автоматическими форматтерами. Здесь описание пары таких программ.


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


Гость






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

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

 



- Текстовая версия 19.06.2025 14:49
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"