Тема: Кількість слів, які містять однакову кількість голосних і приголосних
З клавіатури вводиться текстовий рядок. Розробити програму, яка виконує:
a) кількість слів, які містять однакову кількість голосних і приголосних букв;
б) виводить на екран найдовше слово;
в) видаляє з тексту слово-паліндроми;
Мені потрібно зробити завдання а (але можете перевірити і б і в на правильність)
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
void set_longest(string* current_word, string* new_word)
{
if (new_word->length() > current_word->length())
*current_word = *new_word;
}
int is_palindrome(string* word)
{
if (word->length() > 0)
{
size_t index1 = 0;
size_t index2;
index2 = word->length()-1;
for(; index1 < index2; ++index1, --index2)
if(word->at(index1) != word->at(index2))
return 0;
}
return 1;
}
int main()
{
string result = "";
string s;
string delimiter = " ";
string longest_word = "";
size_t pos;
cout << "Enter your text and press [enter]: ";
getline(cin, s);
pos = s.find(delimiter);
while (pos != std::string::npos)
{
string token;
token = s.substr(0, pos);
set_longest(&longest_word, &token);
if (!is_palindrome(&token))
result += token;
result += delimiter;
s.erase(0, pos + delimiter.length());
pos = s.find(delimiter);
}
set_longest(&longest_word, &s);
if (!is_palindrome(&s))
result += s;
cout << "The first longest word is: " << longest_word << endl;
cout << "string w/o palindromes: " << result << endl;
system ("pause");
return 0;
}