![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Анютка |
![]() ![]()
Сообщение
#1
|
Гость ![]() |
Вроде девушка я не тупая, но не могу понять
![]() Условие: Цитата Определить какие символы встречаются в строке и посчитать сколько раз встречается каждый из них. В алфавитном порядке вывести обнаруженные символы и кол-во их вхождений в строку. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
GoTo "Поиск":
Задача на обработку текста |
Анютка |
![]()
Сообщение
#3
|
Гость ![]() |
Получилось:
program volvo;
var a : array[0..255] of byte;
procedure count(s : string);
var i : integer;
begin
for i:=1 to length(s) do inc(a[ord(s[i])]);
end;
procedure WriteAr;
var i : integer;
begin
for i:=0 to 255 do
if (a[i]<>0) then
Writeln(chr (i),' - ',a[i], ' раз ');readln;
end;
var b:string;
begin
writeln ('Введите строку: ');readln(B);
count (B); WriteAr; readln; end.
Поправьте, если что не так ... Сообщение отредактировано: Altair - 27.10.2005 19:50 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Анютка, а почему нельзя было оставить:
var a : array[#0..#255] of byte;
, как было изначально? Зачем лишние преобразования нужны?Ну, конечно, программа работает, но она бы выглядела гораздо красивее... ![]() |
Анютка |
![]()
Сообщение
#5
|
Гость ![]() |
А как решить задачу с помощью множественного типа, что-то я не могу понять ...
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Анютка, с помощью только множественного - не получится. Множество не в состоянии хранить информацию о том, сколько раз каждый символ встречался в тексте. Вот если бы просто отсортировать все встречающиеся символы в порядке возрастания - тогда это задача на множества, а так получится просто "притягивание за уши"...
|
Анютка |
![]()
Сообщение
#7
|
Гость ![]() |
А в моей задаче вообще не используется множ. тип.
И скажите пожалуйста, как изменить программу с помощью var a : array[#0..#255] of byte;
Ведь я такая неопытная ещё ![]() |
klem4 |
![]()
Сообщение
#8
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
uses crt;
var
c : array[char] of byte;
ch: char;
s : string;
i : integer;
begin
clrscr;
write('s='); readln(s);
for i := 1 to length(s) do
for ch := #32 to #255 do
if s[i]=ch then
inc(c[ch]);
for ch := #32 to #255 do
if c[ch]<>0 then
writeln(ch,' ',c[ch]);
readln;
End.
Volvo же давал тебе ссылку ... там поправить то оставалось чуть-чуть -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
program volvo;
var
a : array[#0..#255] of byte;
chars: set of char;
procedure count(s : string);
var i : integer;
begin
for i := 1 to length(s) do begin
inc(a[ s[i] ]); chars := chars + [s[i]];
end;
end;
procedure WriteAr;
var i: char;
begin
for i:=#0 to #255 do
if i in chars then
Writeln(i,' - ', a[i], ' раз ');
readln;
end;
var b: string;
begin
writeln('Введите строку: '); readln(B);
chars := []; count (B);
WriteAr;
readln;
end.
|
Анютка |
![]()
Сообщение
#10
|
Гость ![]() |
To: klem4
А можно как-нибудь прокомментировать программу? И что значит "#" ? Почему именно от 32 ?? И всё-таки, как решить программу с помощью множеств, я не говорю, что только с помощью множест. типа, просто с его использованием. var b: Set of 0..7; и т.п. |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Анютка, ты мой предыдущий пост читала?
chars: set of char;
в нем видела? Это что, не множество по-твоему? |
Анютка |
![]()
Сообщение
#12
|
|||
Гость ![]() |
Я говорила про задачу klem4. Как её можно изменить? чтобы там присутсвовал множественный тип.
|
|||
Анютка |
![]()
Сообщение
#13
|
Гость ![]() |
Потому что твоя программа проще, у меня конкретный вопрос: можно ди изменить твою программу?
To: volvo Можно как-нибудь прокомментировать твою программу? |
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Анютка, ссылку на программу которую чуть-чуть подправил klem4, я дал во втором (!!!) посте. Ты ее зачем-то всю поменяла, а когда тебе снова вернули почти то, что было, тебе нужны комментарии? Комментариев не будет.
|
Altair |
![]()
Сообщение
#15
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
По просьбе...
открываю тему. и еще один вариант ... (придумывал велосипед опять же по просьбе). ЧТо бы только с множествами.
var
s:string; {входная строка}
m:set of char;{множество встетивщихся символов}
I,j,count:byte;{счетчики}
begin
m:=[];{обнуляем множество}
readln(s);{вводим строку}
{проходим по длинне строки и включаем в множетсво встетивщиеся сиволы}
for i:=1 to length (s) do include(m,(s[i]));
{проходим коды символов с 32 до 255 (от пробела по всем алфавитам.. до конца)}
for i:=32 to 255 do
{если символ входит в множество}
if chr(i) in m then begin
{исключаем из множетсва, что бы исключить повторы}
exclude(m,chr(i));
{обнуляем количество вхождений}
count:=0;
{просматриваем всю строку и если находим этот символ, увеличиваем КОУНТ }
for j:=1 to length(s) do if s[j]=chr(i) then inc(count);
{вывод результата для текущего символа.}
writeln(chr(i),' ',count);
end;
readln;
end.
p.s. рекомендую алгоритм и программу volvo. без процедур (по просьбе). program volvo_modify;
var
a : array[#0..#255] of byte;
chars: set of char;
i : integer;
b: string;
c:char;
begin
writeln('Enter string: '); readln(B);
chars := [];
for i := 1 to length(b) do begin
inc(a[ b[i] ]); chars := chars + [b[i]];
end;
for c:=#0 to #255 do
if c in chars then
Writeln(c,' - ', a[c], ' raz ');
readln;
readln;
end.
Сообщение отредактировано: Altair - 30.10.2005 19:12 -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 30.07.2025 5:20 |