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

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

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

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


Гость






Вроде девушка я не тупая, но не могу понять sad.gif
Условие:
Цитата
Определить какие символы встречаются в строке и посчитать сколько раз встречается каждый из них. В алфавитном порядке вывести обнаруженные символы и кол-во их вхождений в строку.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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

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


Гость






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


Гость






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


Гость






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

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


Ведь я такая неопытная ещё sad.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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; и т.п.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






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


Гость






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

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

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

 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






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

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


Гость






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


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

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

Репутация: -  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 -


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

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

 





- Текстовая версия 5.05.2024 18:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name