Member 12718557 Ответов: 1

Как заставить мою программу подсчитывать количество специальных символов с помощью цикла while?


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

#include <iostream>
#include <string> 
using namespace std ;


int main()
{
    char str[100]  ;     // character string max is 100 characters
    int i ;
    int upperCase ;
    int num ;
    int lowerCase ;
    int spec ;
    
    cout << "Please enter a continuous string of characters with no spaces" << endl ;
    cout << "(example: ASO@23iow$)" << endl << endl ;   //shows an example and then adds a blank line
    cout << "Enter your string: " ;
    cin >> str ;
    cout << endl ;
    
    
    i = 0 ;
    
    while(str[i] != 0)
    {
        if ((str[i] >= 'a') && (str[i] <= 'z'))   // "i" represents each idividual character that the computer is checking
            lowerCase++ ;                        // if "i" is within a-z the computer adds 1 to variable "lowerCase"
        if ((str[i] >= '0') && (str[i] <= '9'))
            num++ ;
        if ((str[i] >= 'A') && (str[i] <= 'Z'))
            upperCase++ ;
            i++ ;                                // tells the computer to continue going through the string while "i" is not 0
        
    }
    
    cout << "your string has " << i << " characters" << endl ;
    
    cout << "Your string has " << lowerCase << " lowercase letters." << endl ;   //prints the number of lowercase characters
    
    cout << "Your string has " << num  << " numbers in it." << endl ;       //prints the number of numbers in the string
    
    cout << "Your string has " << upperCase << " uppercase letters." << endl ;  //prints the number of uppercase characters
    
    cout << "Your string has " << spec << " special characters." << endl ;
        return 0 ;
}


Что я уже пробовал:

Я пробовал str[i] != lowerCase str[i] != upperCase etc etc, но это просто в конечном итоге печатает количество символов в строке.

Richard MacCutchan

Вы должны использовать if ... else статьи. У вас уже есть большая его часть, вам просто нужно добавить последний else, который представляет собой специальные символы. Что-то вроде:

if (numbers)
{
increment number count
}
else if (lowercase)
{
increment lowercase count
}
else if (uppercase)
{
increment uppercase count
}
else
{
increment specials count
}

Member 12718557

СПАСИБО!

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Это зависит от вашего определения "особого характера".

Если это означает символ, который не покрывается диапазонами, которые у вас уже есть в коде, то это довольно просто. Это просто длина строки минус все остальные подсчеты, которые у вас есть.


Member 12718557

извините, я новичок в программировании, поэтому что-то вроде " if (str[i] -- lowerCase) ?? не знаю, как сделать то, что вы говорите @DaveKreskowiak

Dave Kreskowiak

Это не имеет ничего общего с тем, чтобы смотреть на персонажа и сравнивать его с чем-то другим. Вы уже сделали это, и у вас есть другие персонажи, не так ли?

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