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