Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <stdio.h>
- #include <string.h>
- // проверка на необх буквы в слове
- int proverka(char* prov, char* slovo) {
- for (int i = 0; prov[i] != '\0'; i++) {
- // проверяем все ли буквы есть в слове
- if (!(strchr(slovo, prov[i]))) { // если данной буквы нет в слово, то возращает нуль и не добавляет его в рез
- return 0;
- }
- // проверяем, что бы кол-во букв не превышало кол-во букв в другом слове
- for (int i = 0; slovo[i] != '\0'; i++) {
- int xi = 0;
- for (int j = 0; slovo[j] != '\0'; j++) { // считаем кол-во вхождения буквы в слове
- if (slovo[i] == slovo[j])
- xi++;
- }
- int xj = 0;
- for (int j = 0; prov[j] != '\0'; j++) { // считаем кол-во вхождений буквы в проверяемомо слове
- if (slovo[i] == prov[j])
- xj++;
- }
- if (xj > xi) // если в проверяемом больше, то нуль
- return 0;
- }
- } // если все хорошо возращает еденицу и добовляет слово рез
- return 1;
- }
- // поиск длины слова
- int dlina(char* str, int nach, char* net) {
- int k = 0;
- for (int i = 0; !(strrchr(net, str[nach + i])) && str[i] != '\0'; i++)
- k++;
- return k;
- }
- void main() {
- SetConsoleCP(1251); SetConsoleOutputCP(1251);
- char str[81], slovo[81]; // сама строка ввода и слово
- char znak[7] = { ' ', '.' , ',' , ' ', '!' , '?' , '\0' }; // разделители
- char prov[81]; // проверяемое слово
- char rez[81] = " "; // результат
- int dlin; // Длина слова
- printf("Введите слово: ");
- fgets(slovo, 81, stdin);
- slovo[strlen(slovo) - 1] = ' '; // замена \n на пробел
- int dlin_slovo = strlen(slovo);
- printf("Введите предложение: ");
- fgets(str, 81, stdin);
- str[strlen(str) - 1] = ' '; // замена \n на пробел
- // запускаем цикл на строку
- for (int i = 0; str[i] != '\0'; i++) {
- if (!(strrchr(znak, str[i]))) { // Ищем первую букву
- dlin = dlina(str, i, znak);
- strncpy_s(prov, 81, str + i, dlin); //Переменной prov присваиваем слово рассматриваеваемой длины
- strcpy_s(str, 81, str + dlin + i); //Строку str перезаписываем без слова в переменной slovo(оно нам больше не пригодится,так как сравнится со всеми словами предложения)
- i = -1; //Начинаем строку с нулевого элемента(нулевым элементом будет строка str,начинающая с dlin)
- if (proverka(prov, slovo) == 1 && dlin <= dlin_slovo) { // отправляем в функцию на проверку необходимых букв в слове
- strcat_s(rez, prov); // добавляем это слово в результат и добовляем пробел
- strcat_s(rez, " ");
- }
- }
- }
- printf("Из слова %sсоставлены следующие слова из введенного предложения:%s", slovo, rez);
- }
Add Comment
Please, Sign In to add comment