Найти в строке слова, отличные от последнего - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д