//Пример работающей программы
#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 (не забудьте указать для функций тип возвращаемого значения), либо с помощью параметров-указателей. Но судя по уровню урока, за указатели Вам браться ещё рановато.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Задача: На языке C/C++ написать программу, которая запрашивает целое число (положительное, отрицательное или ноль), разрядность типа данных...
Я начинающий програмист, использующий С++(с надеждой в дальнейшем попасть в GameDev)Так вот, для собеседования была написана игра и хотелось устранить...
Используя библиотеки QNetworkReply и QNetworkAccessManager я скачалexe файл, но не понимаю как его открыть