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

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

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

> сложная задача на подпрограмму, используется символьный массив
HelpMe
сообщение 8.12.2007 11:27
Сообщение #1


Гость






Требуется ваша помощь в решении этой задачи:

Дан символьный массив. Определить , используя подпрограмму , какие символы встречаются 2 раза , 3 раза , к раз. Повторяющиеся символы и количество их повторений вывести на экран.

Немогу составить процедуру , возникает проблема с символами которые повторяются больше 2 - ух раз , незнаю как реализовать ... требуется ваша помощь , спасибо тому кто поможет в решении

 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 15.12.2007 2:16
Сообщение #2


Гость






Мне надоело бороться с тобой. Поскольку я так и не увидел, как именно ты хотел заполнять массив - напишу свой вариант:
var
counts: array[char] of integer;

procedure print_chars(k: integer);
var i: char;
begin
{ этой строкой перебираем все символы алфавита }
for i := #0 to #255 do
if counts[i] = k then write(i);
writeln; { добавлено... Чтоб красивее было... }
end;

var
a: array [1..10] of char;
i: integer;

begin
i := 0;
{ ввод строки - постарайся не вводить больше 10 символов, а то будут проблемы }
while not eoln do begin
inc(i);
read(a[i]);
end;
readln;

{ вот так заполняем массив-счетчик }
for i := 1 to 10 do inc(counts[a[i]]);

write('2: '); print_chars(2);
write('3: '); print_chars(3);
write('4: '); print_chars(4);
end.

Суть в том, что массив counts индексируется не числом, а символом, то есть, count['a'] после заполнения будет содержать количество символов 'a' в массиве, и т.д.

В процедуре - пробегаем по всем символам таблицы ASCII, начиная от #0 (символа с кодом 0), заканчивая #255 (соответственно, символом с кодом 255), и проверяем, равен ли счетчик повторений очередного символа переданному в процедуру значению. Если равен - то печатаем символ... Поскольку символы (в стандартной кодировке 866) расположены по алфавиту в порядке возрастания кодов, и пробегаем мы по всем символам тоже в порядке возрастания их кодов, то и выведенные символы будут упорядочены по алфавиту...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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