Задание: Вывести слова введенного текста, изменив каждое слово следующим образом: буквы слова, стоящие до первой гласной, перенести в конец слова. Использовать можно только символьные массивы, string нельзя.
Смог это реализовать используя string temp
, а string нельзя использовать. Никак не могу решить данную задачу без использования вышеупомянутого типа. =(
Так же из-за проблем с кодировкой, писал под английский.
Код:
#include <iostream>
#include <string.h>
using namespace std;
bool glasn(char a){
//ёеуыаоэяиюЁУЕЫАОЭЯИЮ //"eyuioaEYUIOA"
char g[12] = { 'e', 'y', 'u', 'i', 'o', 'a', 'E', 'Y', 'U', 'I', 'O', 'A' };
for(int i = 0; i<18; i++){
if(a == g[i])
return true;
}
return false;
}
int main(){
//setlocale(LC_ALL, "RUS");
cout << "Text: " << endl;
char* s = new char;
cin.getline(s, 256, '\n');
string temp = "";
bool done = true;
for(int i = 0; i<int(strlen(s)); i++){
if(!glasn(s[i]) and s[i] != ' ' and done)
temp += s[i];
else if(glasn(s[i]))
{
done = false;
cout << s[i];
}
else if(s[i] == ' '){
cout << temp << " ";
done = true;
temp = {};
}
if(!done and !glasn(s[i]))
cout << s[i];
//cout << "(" << done << ")";
}
cout << temp;
//cout << "\n\n\n\n\n\n\n\n" << temp;
}
Вам нужно всего лишь выводить, так что можно так:
char* s = new char[256];
cin.getline(s, 256, '\n');
char g[] = "eyuioaEYUIOA";
// находим позицию первой гласной буквы
int n = strcspn(s, g);
cout << s + n;
for (int i = 0; i < n; ++i)
cout << s[i];
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Проблема в xPtr, никак не могу найти ошибку, он на нулевом элементе даже
Как избавиться от локальных переменных, используя элементы класса в read()?
Я плохо понимаю, как умные указатели (особенно shared_ptr) взаимодействуют с полиморфными типамиОбщая картина кажется простой, но как только я начинаю...
Для наглядности: на вход программе даётся число, к примеру 1234Нужно сделать так, чтобы на выходе вывелось число 4321