2014-12-03 6 views
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: Это код, над которым я работаю. В основном это игра «Hangman» на шведском языке. То, что я хочу для функции «wordCheck», чтобы вернуть значение, если все буквы заполнены (и слово завершено), но сейчас он возвращает только 0, даже если «нКл» есть 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; 
} 

(соиЬ < < д только для отладки возвращаемого значения, а также голая в виде код не отполирован, это работа в процессе)

+0

@dasblinkenlight Плохо, я отредактировал сообщение. Это была опечатка. – user2166357

+0

Что вы пытаетесь сделать? – user3344003

+0

Как это «застряло»? Вы пытались использовать 'function ('a')'? – crashmstr

ответ

1

Если я не ошибаюсь, у вас есть передается значение с в 1 в wordcheck и из-за этого не выполняется условие if, которое не повышает значение nC ... поэтому вы всегда получаете 0 взамен.

Вы прошли 1 в целое с

wordcheck(NULL,1) 

, а затем проверили if(c!=1) затем nC++, который на самом деле не происходит, и ваш нКл остается 0, поэтому в следующем, если состояние вашего else { return 0; } дает возвращаемое значение

+0

О да, извините, это мое плохое, вот что я имел в виду: P – user2166357

+0

так ли это решает вашу проблему? – 3Demon

+0

Нет, если я печатаю возвращаемое значение в основной функции (например), оно говорит «0», а не «1». – user2166357

-1

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

+0

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