Символьный массив

78
26 августа 2021, 16:50

Задание: Вывести слова введенного текста, изменив каждое слово следующим образом: буквы слова, стоящие до первой гласной, перенести в конец слова. Использовать можно только символьные массивы, 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;
}
Answer 1

Вам нужно всего лишь выводить, так что можно так:

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];
READ ALSO
Как найти утечку памяти?

Как найти утечку памяти?

Проблема в xPtr, никак не могу найти ошибку, он на нулевом элементе даже

97
Как передаются указатели на переменные при записи/чтении *fstream

Как передаются указатели на переменные при записи/чтении *fstream

Как избавиться от локальных переменных, используя элементы класса в read()?

163
C++, полиморфизм и умные указатели

C++, полиморфизм и умные указатели

Я плохо понимаю, как умные указатели (особенно shared_ptr) взаимодействуют с полиморфными типамиОбщая картина кажется простой, но как только я начинаю...

86
Как можно перевернуть число в C++?

Как можно перевернуть число в C++?

Для наглядности: на вход программе даётся число, к примеру 1234Нужно сделать так, чтобы на выходе вывелось число 4321

142