получить гласные из char в C ++

0
#include <iostream>
using namespace std;

char a[20];

int main()
{
    cin >> a;
}

Если я пишу для a = "home", я хочу взять гласные ("o" и "e") и заменить их прописными буквами ("O" и "E"). как это сделать?

EDIT: Ваши ответы, где очень полезно. Я сделал что-то вроде этого:

    cin >> a;

for (int i = 0; a[i] != '\0' && i <= 20; i++)
{
    if (a[i] == 'a')
        a[i] = 'A';
    if (a[i] == 'e')
        a[i] = 'eE';
    if (a[i] == 'i')
        a[i] = 'iI';
    if (a[i] == 'o')
        a[i] = 'oO';
    if (a[i] == 'u')
        a[i] = 'uU';

}

Я хотел изменить для примера "e" в "eE", но он не работает...

  • 0
    Начните с этого и добавьте в isvowel .
Теги:

3 ответа

1
Лучший ответ

В принципе, вы можете сделать это:

#include <iostream>
using namespace std;
char a[20];

int main(){
    cin >> a;
    for (int i = 0; a[i] != '\0' && i < 20; i++){
        if (a[i] == 'a' || a[i] == 'e' || a[i] == 'i'|| a[i] == 'o'|| a[i] == 'u'){
            a[i] = a[i] + 'A' - 'a';
        }
    }
    cout << a;
}

Программа выполняет итерацию каждого символа в строке и сравнивает ее со всеми пятью гласными. Если он обнаруживает, что это гласный, он превращает его в верхний регистр.

Линия

a[i] = a[i] + 'A' - 'a';

может показаться трудным для понимания, но это не так. Каждый символ на самом деле является целым числом в системе кодирования. В большинстве систем кодирования разница между буквой и ее соответствующей заглавной буквой является константой, определяемой ('A' - 'a'). Таким образом, добавляя ("A" - "a") к любому персонажу, вы фактически превращаете его в верхний регистр.

  • 1
    Я не думаю, что SO - это место, где готовый продукт предоставляется ОП, который не проявил своих усилий и вклада в решение этого вопроса!
  • 1
    Добавлено объяснение :)
Показать ещё 6 комментариев
5
  1. Напишите функцию, которая скажет вам, является ли что-то гласным или нет. Это может быть так же просто, как цикл через массив или использование std :: set.
  2. Перебирайте символы и заменяйте гласные возвращаемым значением toupper.

В качестве вторичного примечания вы, вероятно, захотите использовать std::string вместо char[].

  • 0
    1. звучит хорошо, я просто не знаю как? используя ascii? я даже не знаю, как взять все буквы по одному ...
  • 0
    @ user3720828, я обновлю.
Показать ещё 13 комментариев
0
   //inside the loop body

   cin >> a;
   while(a[i])
   if(a[i] == 'a' || a[i] == 'e' || a[i] == 'i' || a[i]== 'o' || a[i]=='u')
   {
         a[i]=toupper(a[i]);
   }
  • 1
    не работает вообще ... prntscr.com/3qzq7l
  • 0
    Вы можете вставить свой полный код, пожалуйста?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню