//Пример работающей программы
#include <iostream>
#include <string>
using namespace std;
int main()
{
bool flag = true;
bool jk = false;
char str;
string str_output;
while ((str = cin.get()) != '\n')
{
str_output += str;
if (str == ',')
{
str_output.clear();
jk = true;
}
if (str == '.' || str == '?' || str == '!')
{
if (!jk)
{
cout << str_output << endl;
}
flag = false;
}
if (!flag)
{
str_output.clear();
flag = true;
jk = false;
}
}
}
``
//Программа переписанная под функции
#include <iostream>
#include <string>
using namespace std;
void logic_function(bool flag,string str_output,bool jk)
{
if (!flag)
{
str_output.clear();
flag = true;
jk = false;
}
}
void logic(char str,bool jk,string str_output,bool flag)
{
if (str == '.' || str == '?' || str == '!')
{
if (!jk)
{
cout << str_output;
}
flag = false;
}
}
void clear_str(string str_output,char str,bool jk)
{
if (str == ',')
{
str_output.clear();
jk = true;
}
}
int main()
{
bool flag = true;
bool jk = false;
char str;
string str_output;
while ((str = cin.get()) != '\n')
{
str_output += str;
clear_str(str_output, str, jk);
logic(str, jk, str_output, flag);
logic_function(flag, str_output, jk);
}
}
Когда Вы передаёте в функцию переменную как аргумент, копируется только значение переменной. Все изменения этого значения внутри функции будут локальными и никак не отразятся на основной переменной. Т.е. создали Вы переменную flag внутри функции main и передали её в какую-нибудь функцию. Эта функция изменила значение flag. Но после возврата в main значение flag будет прежним. Функция изменила только локальную копию значения, а, завершая работу, уничтожила эту копию, никуда не передав.
Решить эту проблему можно либо используя глобальные переменные (но это делать не рекомендуется в целях улучшения качества кода + Вам по заданию нельзя их использовать), либо возвращая значения из функций. Последнее можно делать с помощью return (не забудьте указать для функций тип возвращаемого значения), либо с помощью параметров-указателей. Но судя по уровню урока, за указатели Вам браться ещё рановато.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости