7
votes

Je viens d'apprendre les fonctions C ++; Puis-je utiliser si des instructions sur les valeurs de retour de la fonction?

Ce que je suis confus est sur la fonction isnompannindrome (). Il retourne une valeur booléenne de vrai ou de faux. Comment suis-je supposé utiliser cela afin que je puisse afficher s'il s'agit d'un palindrome ou non. Pour ex. si (isnumpalindrome == vrai) COUT << "Votre numéro est un palindrome"; sinon cout << "Votre numéro n'est pas un palindrome."; xxx


3 commentaires

WOW, pour quelqu'un apprenant simplement sur les fonctions que vous écrivez déjà un code assez agréable C ++. Bien joué.


Haha merci. Je n'ai que cette classe donc je passe mes journées que de pratiquer le code -_-...


Edité: Fonctionne maintenant, mais je dois toujours corriger la partie variable globale.


9 Réponses :


8
votes

Oui, vous pouvez faire une telle chose.

En fait, vous pourriez faire juste ... xxx


0 commentaires

2
votes

Lorsqu'une fonction renvoie un type, vous pouvez penser à cette fonction comme étant remplacée par la valeur de retour et le type. Donc, pour vous:

isnumpalindrome () -> {vrai / faux} p>

Vous pouvez donc écrire par exemple: p>

if(isPalindrome())
  cout<<"it is!"<<endl;
else
  cout<<"it is not :("<<endl;


0 commentaires

12
votes

La valeur de retour d'une fonction peut être utilisée comme une variable du même type.

Votre programme principal devrait ressembler à ceci: p>

bool isNumPalindrom(int num)
{
   ...
}


5 commentaires

Devrais-je mettre ces variables dans la principale int ()? Cela ferait-il dans une variable non module / globale et localisé.


Oui, vous mettez les variables comme locales à la principale, puis les transmettre aux fonctions qui en ont besoin.


+1 pour montrer comment attribuer la valeur d'une fonction à une variable


Je reçois des erreurs de compilateurs disant que mes variables sont non fermées / non déclarées lorsque je les ai placées dans la principale. Devrais-je modifier d'autres choses en plus de simplement changer l'emplacement de Global-> dans la principale.


@Sagistic: oui. Comme Miked a dit, vous devez transmettre les variables aux fonctions comme des arguments. Par exemple, vous modifieriez isnumpalindrome () pour ressembler au code dans Modifier Miked, avec un argument int num .



4
votes
if(isNumPalindrome())
{
    cout << "Your number is a palindrome";
}
else
{
    cout << "Your number is not a palindrome";
}

0 commentaires

0
votes

Vous pouvez appeler Isnumpalindrome () Inside Inknumber (), et avoir la valeur renvoyée de Isnumpalindrome () être utilisée dans un test conditionnel. Il est préférable de passer num en tant qu'argument à Isnumpalindrome, cependant: isnumpalindrome (int Num) xxx

puis principale peut appeler uniquement ()


0 commentaires

2
votes

Tout d'abord, vous ne devrait pas utiliser les globaux pour num code> et pwr code>; Vous devez les transmettre comme arguments sur les fonctions:

// valid
if (isNumPalindrome(num)) {
    std::cout << '"' << num << "\" is a palindrome." << std::endl;
} else {
    std::cout  << '"' << num << "\" is not a palindrome." << std::endl;
}

// invalid
std::cout << '"' << num << (if (isNumPalindrome(num)) {
    "\" is a palindrome.";
} else {
    "\" is not a palindrome.";
}) << std::endl;

// valid, but not recommended
std::cout << '"' << num << "\" is " << (isNumPalindrome(num) ? "" : "not ") << "a palindrome." << std::endl;


6 commentaires

Je reçois un tas d'erreurs lorsque je mets les variables dans la principale.


La plupart d'entre eux se trouvent dans lequel de la variable locale non référencée et un identifiant non déclaré non déclaré.


Les fonctions ont leurs propres étendues, ils ne voient aucune variables déclarées en dehors d'eux, à moins que vous ne les transmettez comme arguments.


@Sagistic: "variable locale non référencée" est un avertissement qui signifie que vous déclarez une variable locale mais ne le référencez pas. "Identifiant non déclaré" est une erreur qui signifie que vous référence à un identifiant (comme une variable), mais ne le déclarez pas. Vérifiez les fautes de frappe; Vous devriez avoir une ligne telle que int num; et se référer à la variable num dans d'autres déclarations. Si vous avez besoin d'une aide plus d'aide, d'abord de la recherche afin que la toile soit grande pour l'avertissement, puis l'erreur. Si rien ne se pose, postez une nouvelle question avec un boîtier de test minimal ( CATB. org / ~ ESR / FAQ / Smart-QUESTS.HTML # Code ).


@Outis: va faire. Merci de votre aide. Je vais essayer d'apprendre les différences exactes de déclarer des variables globalement / localement / bloc.


@Sagistic: les termes clés à lire sont "Portée", "Linkage" et "Durée de stockage".



0
votes

dans une phrase unique:

"comme condition de la déclaration si vous pouvez utiliser n'importe quel expression dont résultat , une fois lorsque l'expression est évaluée, peut être implicitement converti en ' bool '. "


0 commentaires

2
votes

Autant de personnes ont déclaré, la valeur de retour d'une fonction devient essentiellement la valeur de la fonction.

Voici un exemple d'une opération ternaire pour l'impression du résultat. P>

cout << "The number " << (isNumPalindrome()) ? "is a palindrome" : "is NOT a palindrome";


0 commentaires

0
votes

Encore une autre solution; -)

#include <iostream>
#include <sstream>
#include <algorithm>

bool is_palindrome( const int num )
{
    std::ostringstream os;
    os << num;
    const std::string& numStr = os.str();
    std::string reverseNumStr = numStr;
    std::reverse( reverseNumStr.begin(), reverseNumStr.end() );
    const bool result = ( numStr == reverseNumStr );
    return result;
}

int main()
{
    int num = 0;
    std::cout << "Enter an integer in order to determine if it is a palindrome: ";  
    std::cin >> num; 

    std::string inset;
    if( !is_palindrome( num ) )
    { 
        inset = "not ";
    } 
    std::cout << "It is " << inset << "a palindrome." << std::endl; 
}


0 commentaires