//Даны две строки А и B. Составьте программу,
//проверяющую, можно ли из букв, входящих в А, составить В
//(буквы можно использовать не более одного раза и можно переставлять).
//Например, А: ИНТЕГРАЛ; В: АГЕНТ — составить можно; В: ГРАФ -нельзя.
#include
#include
#include
#include
void main()
{
clrscr();
int i=0,p=0,n=0,dlina=0,dlina1=0;
char str[100], str1[100];
for(i=0;i<100;i++) //обнуляем строку
{str[i]=NULL;str1[i]=NULL;}
printf("Введи строку A: ");
scanf("%s",&str);
printf("Введи строку B: ");
scanf("%s",&str1);
dlina1=strlen(str1);
dlina=strlen(str);
for(i=0;str1[i]!=NULL;i++)//перебирает одну строку
for(p=0;str[p]!=NULL;p++)//перебирает вторую строку
{
if(str1[i]==str[p])//сравнивает букву первой строки с буквой второй строки
{n++; str[p]='*'; p=dlina-1;}//удаляет букву, кторая уже была задействована, чтобы не задейвствовать ее потом повторно
}
if(dlina1==n)//сравнивает, если все буквы одной строки есть во второй строке (за что отвечают соответственно счетчики), то выводит что можно составить
printf("Yes\n");
else
printf("No\n");
getch();
}
Программа Си ++. Можно ли из букв, входящих в А, составить В?
29 Ноя, 2012