Страница 1 из 1
Си: задание по строкам.
Добавлено: 25 май 2010, 14:48
ydantezs
Даны две строки А и В. Составьте программу, проверяющую, можно ли из букв, входящих в А, составить В (буквы можно использовать не более одного раза и можно переставлять). Не пойму суть алгоритма, кто может обьясните или решите.
Re: Си: задание по строкам.
Добавлено: 25 май 2010, 14:58
BulldozerBSG
Создаешь массив счетчиков для подсчета символов в строке А. Обнуляешь. Проходишь по строке А и для каждого символа делаешь инкремент соответствующего счетчика. После подсчета проходим по строке В и делаем декремент соответствующего счетчика, при это проверяем если текущий счетчик стал меньше 0 после декремента то досрочно выходим с сообщение что составить строку нельзя. Если выход не произошел до окончания строки В то пишем что составить можно и выходим.
Re: Си: задание по строкам.
Добавлено: 25 май 2010, 15:10
ydantezs
"Проходишь по строке А и для каждого символа делаешь инкремент соответствующего счетчика." - непонятно, как будет виглядеть цикл? Его граница - Длина А?
Re: Си: задание по строкам.
Добавлено: 25 май 2010, 15:24
BulldozerBSG
Его граница - Длина А
Re: Си: задание по строкам.
Добавлено: 25 май 2010, 22:48
ydantezs
как это "Проходишь по строке А и для каждого символа делаешь инкремент соответствующего счетчика."
Re: Си: задание по строкам.
Добавлено: 26 май 2010, 11:45
BulldozerBSG
Приблизительно так:
Код: Выделить всё
int count_char[256];
memset(count_char, 0, sizeof(count_char);
char * s = "aklsdhufalwsfk";
char * s_t = s;
while (* s_t != 0)
{
count_char[*s_t]++;
s_t++;
}