Тема: Тестовий рядок
Добрий вечір!
Стикнулася з проблемою при обробці текстових рядків..
Маю завдання: В рядку, що вводить користувач, знайти кількість слів, які містять однакову кількість голосних і приголосних літер, вивести на екран найдовше слово та видалити з тексту всі слова-паліндроми.
Кількість слів з однаковою кількістю голосних та приголосних букв знайшла. Не розумію, де помилка в реалізації другого пункту щодо найдовшого слова (виводить постійно лише перше слово рядка), а як видалити слова-паліндроми, якщо чесно, взагалі не розумію до кінця. Буду дуже рада будь-якій допомозі чи підказці)
Мій код:
#include "StdAfx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
#include <string.h>
#include <string>
#define MAX 25
using namespace std;
int main()
{
char str[100], copystr[100], maxword[20], *word=0, *max_word = 0;
int i, d, kol=0, k=0, kol1=0, kolsl=0, f=0, maxlen=0, mass[MAX]={0}, mass1[MAX]={0},mass2[MAX]={0}, j=0, len, maxsize =0, max=0, length;
bool f_yes, t;
string words[100], words1;
char *p;
/*Визначення кількості слів, які містять однакову кількість голосних та приголосних букв*/
puts("You can perform a specific operation on a text string!");
puts("Enter the line:");
gets_s(str);
p = strtok(str, " ,.!?-0123456789:;");
while(p!=0)
{
for (i = 0; i < strlen(p); i++)
{
if (p[i] == 'A' || p[i] == 'a' || p[i] == 'O' || p[i] == 'o' || p[i] == 'I'|| p[i] == 'i'|| p[i] == 'E'|| p[i] == 'e'|| p[i] == 'U'|| p[i] == 'u')
mass[j]++;
else
mass1[j]++;
}
p = strtok(NULL, " ,.!?-0123456789:;");
j++;
}
setlocale(LC_CTYPE, "ukr");
for(i=0; i<j;i++)
{
printf("Word %i:\nCounts of vowels:%i\tCounts of consonants:%i\n",i+1, mass[i], mass1[i]);
if (mass[i] == mass1[i])
k++;
}
printf("Counts of words that contain the same counts of vowels and consonants: %i\n", k);
/*Визначення найдовшого слова у рядку*/
length=strlen(p);
while(p!=NULL)
{
length=strlen(p);
if(maxlen < length)
{
maxlen = length;
word=p;
}
p = strtok(NULL, " ,.!?-0123456789:;");
}
printf("Maxword is '%s' and the length of the word is equal to %2d\n", word, maxlen);
/*Пробувала визначити слова-паліндроми для видалення*/
len = words1.length();
while(p!=0)
{
for(int i = 0; i < len/2; ++i)
{
if(words1[i] != words1[len-i-1])
{
words1[i]=mass2[j];
}
}
p = strtok(NULL, " ,.!?");
j++;
}
/*for(i=0; i<j; i++)
cout<<"Mass: "<<mass2[i]<<endl;*/
_getch();
system("pause");
return 0;
}