1

Тема: Допоможіть(Терміново)

У мене задача, яка має функцію, яка перетворювати слова в реченні з малої літери на слова з великої. Також є функція, яка виводить кожне речення з нового рядку. Але у мене проблема, програма видає помилку(could not convert ‘* line’ from ‘std::string {aka std::basic_string}’ to ‘bool’). Але я вважаю що код правильний. Можете будь- ласка допомогти.
Сам код(функції):

string toUpper(string s ) {
    string s1("!,.?-");
    bool counter(1);
   
    s.at(0) = toupper(s.at(0));
    for (int i = 1; i<s.size(); ++i) {
        if (s.at(i - 1) == ' ')counter = 0;
        if (counter && s1.find(s.at(i - 1)) != s1.npos)counter = 0;
        if (!counter && isalpha(s.at(i)))s.at(i) = toupper(s.at(i));
        counter = 1;
    }
    return s;
}
int n;
void toUpperAll( string s, ...) {
    string *line = &s;
    //string *current;
    while (*line) { // Ось тут вибиває помилку
        cout << " n =" << endl;
        cout << *line << endl;
        line ++;
    }
}

2

Re: Допоможіть(Терміново)

1. Слово "терміново" без названої суми за терміновість сповільнює отримання відповіді.
2. Користуйтеся тегами code (кнопка <>).
3. У функції toUpperAll у вас якась дурня написана. Що, на вашу думку, має приходити параметрами до цієї функції? І як ви їх плануєте обліковувати - останнім має бути обов'язково NULL чи false? C++ - не Python і не додає надмірних дій, якщо ви самі їх не хочете. Зокрема, не обліковує параметри функції, якщо ви цього не хочете. Я б вам узагалі не радив на цьому етапі робити функції з довільною кількістю параметрів, передавайте vector<string>, якщо треба кілька стрічок обробити.

3

Re: Допоможіть(Терміново)

У тому й річ, мені потрібні функції з довільною кількістю параметрів. І якраз та функція - To Upper нормально працює, а помилку вибиває для *line(я про це писав).І я хотів поради як правильно вирішити помилку в цьому випадку.

4

Re: Допоможіть(Терміново)

mokrandriy1 написав:

мені потрібні функції з довільною кількістю параметрів

Тоді у вас два варіанти - або (C++)шаблони з змінною кількістю аргументів, або (C) stdarg.h/cstdarg. Обидва досить складні, але тільки тому, що сама задача досить складна.

Подякували: leofun011

5

Re: Допоможіть(Терміново)

спасибі