Изменение возвращаемого значения

0

Я новичок в функциях и стараюсь получить значения возвращаемых значений.

Я создал функцию, которая печатает текст, но я хочу, чтобы он возвращал значение в зависимости от того, что происходит в фактической функции.

Это пример:

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 предназначен только для отладки возвращаемого значения, также учитывая, что код не отполирован, это незавершенная работа)

  • 0
    @dasblinkenlight Мой плохой, я редактировал пост. Это была опечатка.
  • 0
    Что ты пытаешься сделать?
Показать ещё 3 комментария
Теги:
function
return

2 ответа

1
Лучший ответ

Если я не ошибаюсь, вы передали значение 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; } дает возвращаемое значение

  • 0
    Ах, да, извините, это плохо, вот что я имел ввиду: P
  • 0
    так это решает вашу проблему?
Показать ещё 9 комментариев
-1

В цикле do while вы должны отправлять свою переменную букв вместо нулевой переменной, потому что это массив, который вы хотите проверить.

  • 0
    Да, но это, похоже, не помогает моей проблеме.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню