Я новичок в функциях и стараюсь получить значения возвращаемых значений.
Я создал функцию, которая печатает текст, но я хочу, чтобы он возвращал значение в зависимости от того, что происходит в фактической функции.
Это пример:
int function(char a)
{
int b = 0;
if(a == 'a')
{
b++;
}
cout << "Example";
if(b == 1){
return 1;
}
else
{
return 0;
}
}
Однако в этом случае возвращаемое значение будет "застревает" в 0 и не изменится на 1. Есть ли способ сделать возвращаемое значение надежным из того, что происходит в этой функции, или это не так, как это должно быть сделано?
EDIT: Это код, над которым я работаю. В основном это игра "Виселица" на шведском языке. Я хочу, чтобы функция "wordCheck" возвращала значение, если все буквы заполнены (и слово завершено), но прямо сейчас оно возвращает только 0, даже если "nC" равно 4.
#include <iostream>
#include <string>
using namespace std;
int wordCheck(char word[4], int c)
{
int nC = 0, a;
if(c != 1)
{
for (int i = 0; i < 4; i++)
{
if (word[i] == NULL)
{
word[i] = '_';
}
else if (word[i] != '_')
{
nC++;
}
}
cout << "Ordet: "<< word[0] << " " << word[1] << " " << word[2] << " " << word[3] << endl << endl;
}
if(nC == 4){
return 1;
}
else
{
return 0;
}
}
int main()
{
setlocale(LC_ALL,"");
char guess = 'l', word[50] = "bajs", letter[4] = {NULL, NULL, NULL, NULL}, null[4] = {NULL, NULL, NULL, NULL};
int i = 0, d = wordCheck(null, 1);
do
{
i++;
system("cls");
cout << "**********HÄNGA GUBBE**********" << endl;
cout << "*******************************" << endl;
cout << "*********GISSA PÅ ORDET********" << endl;
cout << "-------------------------------" << endl << endl;
wordCheck(letter, 0);
cout << "Gissning " << i << " : ";
cout << d;
cin >> guess;
if (guess == word[0])
{
letter[0] = 'B';
}
else if (guess == word[1])
{
letter[1] = 'a';
}
else if(guess == word[2])
{
letter[2] = 'j';
}
else if (guess == word[3])
{
letter[3] = 's';
}
} while (wordCheck(null, 1) != 1);
system("pause");
return 0;
}
(cout << d предназначен только для отладки возвращаемого значения, также учитывая, что код не отполирован, это незавершенная работа)
Если я не ошибаюсь, вы передали значение c как 1 в функции wordcheck, и из-за этого не выполняется условие if, которое не повышает значение nC... вот почему вы всегда получаете 0 взамен.
Вы прошли от 1 до int c
wordcheck(NULL,1)
а затем проверяется, if(c!=1)
тогда nC++
который на самом деле не происходит, а ваш nC остается 0, поэтому в следующем условии if ваш else { return 0; }
else { return 0; }
дает возвращаемое значение
В цикле do while вы должны отправлять свою переменную букв вместо нулевой переменной, потому что это массив, который вы хотите проверить.