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

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

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

 
 Ответить  Открыть новую тему 
> Про множественный тип, ну как же
Анютка
сообщение 26.10.2005 14:07
Сообщение #1


Гость






Вроде девушка я не тупая, но не могу понять sad.gif
Условие:
Цитата
Определить какие символы встречаются в строке и посчитать сколько раз встречается каждый из них. В алфавитном порядке вывести обнаруженные символы и кол-во их вхождений в строку.
 К началу страницы 
+ Ответить 
volvo
сообщение 26.10.2005 14:18
Сообщение #2


Гость






GoTo "Поиск":
Задача на обработку текста
 К началу страницы 
+ Ответить 
Анютка
сообщение 27.10.2005 19:47
Сообщение #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
сообщение 27.10.2005 19:55
Сообщение #4


Гость






Анютка, а почему нельзя было оставить:
var a : array[#0..#255] of byte;
, как было изначально? Зачем лишние преобразования нужны?

Ну, конечно, программа работает, но она бы выглядела гораздо красивее... rolleyes.gif
 К началу страницы 
+ Ответить 
Анютка
сообщение 30.10.2005 12:49
Сообщение #5


Гость






А как решить задачу с помощью множественного типа, что-то я не могу понять ...
 К началу страницы 
+ Ответить 
volvo
сообщение 30.10.2005 12:58
Сообщение #6


Гость






Анютка, с помощью только множественного - не получится. Множество не в состоянии хранить информацию о том, сколько раз каждый символ встречался в тексте. Вот если бы просто отсортировать все встречающиеся символы в порядке возрастания - тогда это задача на множества, а так получится просто "притягивание за уши"...
 К началу страницы 
+ Ответить 
Анютка
сообщение 30.10.2005 14:14
Сообщение #7


Гость






А в моей задаче вообще не используется множ. тип.

И скажите пожалуйста, как изменить программу с помощью
var a : array[#0..#255] of byte;


Ведь я такая неопытная ещё sad.gif
 К началу страницы 
+ Ответить 
klem4
сообщение 30.10.2005 14:23
Сообщение #8


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.10.2005 14:26
Сообщение #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.
 К началу страницы 
+ Ответить 
Анютка
сообщение 30.10.2005 17:01
Сообщение #10


Гость






To: klem4
А можно как-нибудь прокомментировать программу? И что значит "#" ?
Почему именно от 32 ??

И всё-таки, как решить программу с помощью множеств, я не говорю, что только с помощью множест. типа, просто с его использованием.
var b: Set of 0..7; и т.п.
 К началу страницы 
+ Ответить 
volvo
сообщение 30.10.2005 17:04
Сообщение #11


Гость






Анютка, ты мой предыдущий пост читала?
  chars: set of char;
в нем видела? Это что, не множество по-твоему?
 К началу страницы 
+ Ответить 
Анютка
сообщение 30.10.2005 17:13
Сообщение #12


Гость






Я говорила про задачу klem4. Как её можно изменить? чтобы там присутсвовал множественный тип.

М
Зачем ? blink.gif Volvo привел тебе программу (последний его пост) в ней используется так сильно тебе нужный множественный тип !
chars: set of char; { <--- это именно он ! }

читай внимательней что тебе пишут ...
klem4

 К началу страницы 
+ Ответить 
Анютка
сообщение 30.10.2005 17:27
Сообщение #13


Гость






Потому что твоя программа проще, у меня конкретный вопрос: можно ди изменить твою программу?

To: volvo
Можно как-нибудь прокомментировать твою программу?
 К началу страницы 
+ Ответить 
volvo
сообщение 30.10.2005 17:33
Сообщение #14


Гость






Анютка, ссылку на программу которую чуть-чуть подправил klem4, я дал во втором (!!!) посте. Ты ее зачем-то всю поменяла, а когда тебе снова вернули почти то, что было, тебе нужны комментарии? Комментариев не будет.
 К началу страницы 
+ Ответить 
Altair
сообщение 30.10.2005 19:08
Сообщение #15


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


По просьбе...
открываю тему. и еще один вариант ...
(придумывал велосипед опять же по просьбе).
ЧТо бы только с множествами.

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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