Как использовать несколько логических операторов в строке - PullRequest
0 голосов
/ 25 мая 2019

Я хочу проверить по индексу, является ли он согласным или нет, и то, является ли соседний индекс гласным, поэтому у меня проблемы с синтаксисом, и есть ли лучший способ продолжить?

Я пробовал запускать код с моей версией цикла For, но приращения значения переменной, которое я настроил для хранения числа индексов, удовлетворяющих условию, нет.

if (s[i]!= ('a' || 'e' || 'i' || 'o' || 'u') && s[i+1] == ('a' || 'e' || 'i' || 'o' || 'u'))

Дает 0 в качестве вывода.

Ответы [ 2 ]

2 голосов
/ 25 мая 2019

Написать функцию. Например:

bool isvowel( char c ) {
    return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}

Тогда вы можете просто сказать:

if ( !isvowel( s[i] )  && isvowel( s[i+1] )  )  {
      // do something
} 
0 голосов
/ 25 мая 2019

Напишите отдельную функцию, которая проверяет, является ли данный символ гласным.Например,

#include <iostream>
#include <string>
#include <cstring>
#include <cctype>

bool is_vowel( char c )
{
    const char *vowels = "aeiou";

    return c != '\0' && std::strchr( vowels, std::tolower( ( unsigned char )c ) );
}

int main( void )
{
    std::string s( "Hi" );

    if ( not is_vowel( s[0] ) && is_vowel( s[1] ) ) std::cout << s << '\n';
}

Вывод программы:

Hi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...