Найти в строке слова, отличные от последнего - C (СИ)
Формулировка задачи:
помогите пожалуйста. надо сделать так чтоб отличны от последнего слова , и в слове гласные буквы (a, e, i, o, u) не чередуются с согласными
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <locale.h>
- int main()
- {
- char *ch;
- char str[1000];
- char mas[50][9];
- char q, z, b;
- char glas[] = "aeiou";
- int i, l, j, e;
- int k = 0;
- do
- {
- setlocale(LC_ALL, "rus");
- printf("Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству:\n\n");
- printf("36)в слове гласные буквы (a, e, i, o, u) чередуются с согласными;");
- printf("\nВведите строку:\n");
- gets(str);
- l = strlen(str);
- ch = strtok(str, " .");
- for (i = 0; ch != '\0'; i++)
- {
- if (strlen(ch) > 8)
- {
- printf("Ошибка!\n");
- system("pause");
- break;
- }
- strcpy(mas[i], ch);
- ch = strtok(NULL, " .");
- k++;
- }
- printf("\nРезультат :\n");
- printf("последнее слово: %s \n \n Строка :", mas[0]);
- for (i = 1; i < k; i++)
- {
- if (strcmp(mas[i], mas[0]) != 0)
- {
- e = 0;
- for (j = 0; j<(strlen(mas[i]) - 1); j++)
- {
- z = mas[i][j];
- b = mas[i][j + 1];
- if ((strchr(glas, b) && strchr(glas, z) || (strchr(glas, z) && strchr(glas, b))))
- {
- e++;
- }
- }
- {
- if (e == 0)
- printf(" %s", mas[i]);
- }
- }
- }
- printf("\nДля выхода нажмите Esc");
- printf("\n\n\n\n");
- q = getch();
- } while (q != 27);
- }
Решение задачи: «Найти в строке слова, отличные от последнего»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <locale.h>
- int main()
- {
- char *ch;
- char str[1000];
- char mas[50][9];
- char q, z, b;
- char glas[] = "aeiou";
- int i, l, j, e;
- int k = 0;
- do
- {
- setlocale(LC_ALL, "rus");
- printf("Г„Г*Г*Г* ïîñëåäîâГ*òåëüГ*îñòü, ñîäåðæГ*Г№Г*Гї îò 2 äî 50 ñëîâ, Гў ГЄГ*æäîì ГЁГ§ êîòîðûõ îò 1 äî 8 ñòðî÷Г*ûõ Г«Г*ГІГЁГ*Г±ГЄГЁГµ ГЎГіГЄГў; ìåæäó ñîñåäГ*èìè ñëîâГ*ìè - Г*ГҐ ìåГ*ГҐГҐ îäГ*îãî ïðîáåëГ*, Г§Г* ïîñëåäГ*ГЁГ¬ ñëîâîì - òî÷êГ*. ГЌГ*ГЇГҐГ·Г*ГІГ*ГІГј ГІГҐ ñëîâГ* ïîñëåäîâГ*òåëüГ*îñòè, êîòîðûå îòëè÷Г*Г» îò ïåðâîãî ñëîâГ* ГЁ óäîâëåòâîðÿþò ñëåäóþùåìó ñâîéñòâó:\n\n");
- printf("36)Гў ñëîâå ГЈГ«Г*Г±Г*ûå ГЎГіГЄГўГ» (a, e, i, o, u) ÷åðåäóþòñÿ Г± ñîãëГ*Г±Г*ûìè;");
- printf("\nÂâåäèòå ñòðîêó:\n");
- gets(str);
- l = strlen(str);
- ch = strtok(str, " .");
- for (i = 0; ch != '\0'; i++)
- {
- if (strlen(ch) > 8)
- {
- printf("ГЋГёГЁГЎГЄГ*!\n");
- system("pause");
- break;
- }
- strcpy(mas[i], ch);
- ch = strtok(NULL, " .");
- k++;
- }
- printf("\nÐåçóëüòГ*ГІ :\n");
- printf("ïîñëåäГ*ГҐГҐ ñëîâî: %s \n \n ÑòðîêГ* :", mas[k-1]);
- for (i = 0; i < k; i++)
- {
- if (strcmp(mas[i], mas[k-1]) != 0)
- {
- e = 0;
- for (j = 0; j<(strlen(mas[i]) - 1); j++)
- {
- z = mas[i][j];
- b = mas[i][j + 1];
- if ((strchr(glas, b) && strchr(glas, z) || (strchr(glas, z) && strchr(glas, b))))
- {
- e++;
- }
- if ((strchr(glas, b)==NULL && strchr(glas, z)==NULL || (strchr(glas, z)==NULL && strchr(glas, b)==NULL)))
- {
- e++;
- }
- }
- {
- if (e != 0)
- printf(" %s", mas[i]);
- }
- }
- }
- printf("\nÄëÿ âûõîäГ* Г*Г*æìèòå Esc");
- printf("\n\n\n\n");
- q = getch();
- } while (q != 27);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д