#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", но он не работает...
В принципе, вы можете сделать это:
#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") к любому персонажу, вы фактически превращаете его в верхний регистр.
toupper
. В качестве вторичного примечания вы, вероятно, захотите использовать std::string
вместо char[]
.
//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]);
}
isvowel
.