![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
student___ |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Женский Репутация: ![]() ![]() ![]() |
Здравствуйте. Дана задача : Для каждого символа заданного текста указать его относительную частоту появления в тексте. Построить соответствующую диаграмму. Сообщение об одном символе должно печататься не более одного раза. Вот мой черновик. программа читает текст из файла, который может состоять из любого количества символов(английские , русские буквы, всевозможные знаки препинания и все это в несколько строк), выводить нужно только символы-буквы. всё шло прекрасно до того момента как текст состоял из двух-трёх строк, но если читать ,к примеру, полноценное стихотворение, то начинаются ошибки(выводит несколько раз сообщение об одинаковых символах, некоторые буквы не выводит вовсе, неправильно считает) и как мне уже подсказали формула по которой считается относительная частота не верна(.до диаграммы дело не доходит так понимаю, что смысла нет за неё браться пока происходят вот такие косяки.. Прошу посмотреть программу и помочь с выявлением ошибок
|
![]() ![]() |
student___ |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Женский Репутация: ![]() ![]() ![]() |
не могу понять как это реализовать. все символу подсчитать могу, а как исключить пробелы и знаки препинания?
прокручиваю вариант использования pos и delete...хотя это совсем не лучший вариант Добавлено через 2 мин. или if s[i] in ['a'..'z'] then inc(h){в итоге h покажет сколько всего?}? Добавлено через 3 мин. вроде работает . как на Ваш взгляд есть лучше вариант? Добавлено через 15 мин. вот на данный момент так, проверте пожалуйста Код uses CRT; var t: text; s: string; a: array [0..255] of integer; h, k, i:integer; BEGIN clrscr; assign (t, 'int.pas'); reset (t); while not (eof (t)) do BEGIN readln (t, s); inc(k); {строки} for i := 1 to length (s) do begin inc(k);{сколько в строке} s[i] := lowercase(s[i]); inc (a[ord (s[i])]); if s[i] in ['a'..'z'] then inc(h);{общее кол-во букв} END; end; for i := 65 to 255 do if (a[i] <> 0) then writeln (chr(i), ' - ','частота*-',( a[i]/h):3:3,', встречается раз -',a[i],' ','всего символов(букв)',h); close (t); readln; END. Добавлено через 1 мин. правильно ли подсчитана частота? Сообщение отредактировано: student___ - 14.04.2013 21:36 |
![]() ![]() |
![]() |
Текстовая версия | 30.07.2025 4:24 |