![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
HelpMe |
![]()
Сообщение
#1
|
Гость ![]() |
Требуется ваша помощь в решении этой задачи:
Дан символьный массив. Определить , используя подпрограмму , какие символы встречаются 2 раза , 3 раза , к раз. Повторяющиеся символы и количество их повторений вывести на экран. Немогу составить процедуру , возникает проблема с символами которые повторяются больше 2 - ух раз , незнаю как реализовать ... требуется ваша помощь , спасибо тому кто поможет в решении |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата Немогу составить процедуру , возникает проблема с символами которые повторяются больше 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);
end;
begin
{ здесь - заполнение массива counts ... }
...
print_chars(2);
print_chars(3);
print_chars(4);
...
end.
Если ты покажешь, что за символьный массив, откуда он берется, и почему нельзя пользоваться строками, для этого специально предназначенными - то я расскажу, как заполнить массив counts, чтоб его можно было использовать... Сообщение отредактировано: volvo - |
Гость |
![]()
Сообщение
#4
|
Гость ![]() |
Массив из символов , запоняться должен с клавиатуры ... допустим массив "a a gh pg g p p p g b" из 10 элеметнов , после выполнения программы должно выводиться на экран "a - 2 раза" , "p - 3 раза" ну и соответсвенное если бы был символ повторяющийся 4 раза, то воводился бы и он.
|
Ozzя |
![]()
Сообщение
#5
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Массив из символов , запоняться должен с клавиатуры ... допустим массив "a a gh pg g p p p g b" из 10 элеметнов , после выполнения программы должно выводиться на экран "a - 2 раза" , "p - 3 раза" ну и соответсвенное если бы был символ повторяющийся 4 раза, то воводился бы и он. Нет, тебя не об этом спросили. Попросили привести фрагмент программы заполнения символьного массива, написанного тобой. |
HelpME |
![]() ![]()
Сообщение
#6
|
Гость ![]() |
извиняюсь , не понял вопроса сразу
![]()
program abc;
var a:array [1..10] of string;
...
for i:=1 to 10 do
readln(a[i]);
|
HelpMe |
![]()
Сообщение
#7
|
Гость ![]() |
Volvo , объесни пожалуйста как нужно заполнять массив для нахождения в нём символов
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Ты сам-то понял, что у тебя написано: В задании сказано, что есть символьный массив, ты показываешь код с массивом строк... И как это понимать?
|
HelpMe |
![]()
Сообщение
#9
|
Гость ![]() |
извиняюсь , ошибочка вышла ... писал ночью , попутал чтото ... массив должен быть и в правду Char
Расскажи как нужно его заполнить и в чём суть вот этой строки в процедуре Код for i := #0 to #255 do if counts[i] = k then write(i); |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Мне надоело бороться с тобой. Поскольку я так и не увидел, как именно ты хотел заполнять массив - напишу свой вариант:
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) расположены по алфавиту в порядке возрастания кодов, и пробегаем мы по всем символам тоже в порядке возрастания их кодов, то и выведенные символы будут упорядочены по алфавиту... |
HelpMe |
![]()
Сообщение
#11
|
Гость ![]() |
Volvo , спасибо за помощь , но твоя программа ищет в массиве только повторения символа "k" , а в условие нужно найти повторение любых символов введённых с клавиатуры , т.е. вводим 10 любых символов (какие символы в условие не оговоренно) и программы выдаёт какие символы повторяются 2 и т.д. раз например
вводим с клавиатуры массив "a b a d a b d i d d" на экране выдаётся "2: b" "3: a" "4: d" , вот в этом и проблема ... как реализовать это я даже не представляю , учусь только первый семестр ... |
Client |
![]()
Сообщение
#12
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
посмотри здесь, мож поможет Помогите решить, я что-то туплю
|
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Цитата программа ищет в массиве только повторения символа "k" , а в условие нужно найти повторение любых символов введённых с клавиатуры Да ты что? "А мужики-то не знают" (С) ![]() for i := 2 to 10 do begin { Ну, можно и не до 10, а до скольки нужно... }
write(i, ': '); print_chars(i);
end;
|
![]() ![]() |
![]() |
Текстовая версия | 18.04.2025 23:53 |