
Условие:
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
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 - |
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 825 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
По просьбе...
открываю тему. и еще один вариант ... (придумывал велосипед опять же по просьбе). ЧТо бы только с множествами.
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 - -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 18.04.2025 14:52 |