Блог студента SEO`шника
Дата публикации:

Как переделать программу на C++ для сортировки слов по типу символов

609f2d0a

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

Для этого необходимо изменить следующие строки кода или объяснить их работу:

auto text =[](string &str, vector<string> const &words) {     
    bool first = true;     
    if (!str.empty()) //плюс минус     
        first = false;    
    for (auto const &b : words) {   
        if (!first)         
            str += ' ';     
        else        
            first = false;           
        str += b;     
    }      
};

Программа:

#include <iostream>  
#include <string>  
#include <vector>  
#include <sstream>    

using namespace std;    

int main() {      
    string input;      
    cout << "Enter line: ";      
    getline(cin, input);        

    if (input.length() > 300)          
        input.resize(300);      

    vector<string> wordsOnlyDigits, wordsContainDigits, otherWords;      
    stringstream stroka(input);      
    string word;      

    while (stroka >> word) {          
        bool containsDigits = false, containsNonDigits = false;          

        for (auto const &a : word) {              
            if (isdigit(a))                  
                containsDigits = true;              
            else                  
                containsNonDigits = true;          
        }          

        if (containsNonDigits) {              
            if (containsDigits)                  
                wordsContainDigits.push_back(word);              
            else                  
                otherWords.push_back(word);          
        }          
        else              
            wordsOnlyDigits.push_back(word);      
    }        

    auto text =[](string &str, vector<string> const &words) {          
        bool first = true;          

        if (!str.empty())              
            first = false;          

        for (auto const &b : words) {              
            if (!first)                  
                str += ' ';              
            else                  
                first = false;              

            str += b;          
        }      
    };        

    string output;         
    text(output, wordsOnlyDigits);         
    text(output, wordsContainDigits);         
    text(output, otherWords);         
    output += ' ';      
    cout << "Output:" << output << endl;        

    system("pause");  
}

После внесения изменений программа будет работать так, как требуется преподавателю, сортируя слова в тексте по типу символов.

© 2009 Блог студента SEO`шника. Все права защищены. Копирование контента запрещено! Видеочат