Найти в строке слова, отличные от последнего - 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);
 }

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы