0
votes

Impossible d'obtenir la sélection de menu pour exécuter une fonction. C ++

Je suis un peu coincé. Je peux obtenir le menu à afficher mais quand je sélectionne une sélection, rien ne se passe juste un curseur clignotant. Aucun des choix de menus ne fonctionne. Aucune suggestion? Mes compétences de dépannage consistent à compiler le code source et à espérer le meilleur. Je ne sais pas comment utiliser le débogueur. J'utilise la version de la communauté Visual Studio. Voici mon code. Je suis un étudiant de première année et c'est ma première classe C ++.

#include <iostream>
#include <iomanip>
using namespace std;

// Function prototypes
void displayMenu();
int getChoice(int min, int max);
double kilosToPounds(double);
double poundsToKilos(double);

/*****     main     *****/
int main()
{
    double weight = 0;
    int choice = 0;

    displayMenu();

    cout << "Please choose a function: ";
    cin >> choice;

    choice = getChoice(1, 3);

    while (choice == 1)
    {
        double kilosToPounds(weight);
    }
    while (choice == 2)
    {
        double kilosToPounds(weight);
    }
    while (choice == 3);
    {
        return 0;
    }
}

/*****     displayMenu     *****/
void displayMenu()
{
    int padding = 8;

    cout << "Program to convert weights:\n\n"
        << right
        << setw(padding) << "" << "1. Convert kilograms to pounds\n"
        << setw(padding) << "" << "2. Convert pounds to kilograms\n"
        << setw(padding) << "" << "3. Quit\n";

}


/*****     getChoice     *****/
// THIS IS THE SAME FUNCTION YOU WROTE EARLIER IN THIS SET
// OF LAB EXERCISES. JUST FIND IT AND PASTE IT HERE. 
int getChoice(int min, int max)
{
    int choice;
    // Get and validate the input
    cin >> choice;
    while (choice < min || choice > max)
    {
        cout << "Invalid input. Enter an choice between 1 & 3: ";
    }
    return choice;
}

/*****     kilosToPounds     *****/
double kilosToPounds(double weight)
{
    double kilo = weight / 2.2;
    cout << "This item weighs " << kilo << " kilos.\n";
    return 0;
}

/*****    poundsToKilos     *****/
double poundsToKilos(double weight)
{
    double pounds = weight * 2.2;
    cout << "This item weighs " << pounds << " pounds.\n";
    return 0;
}


5 commentaires

Double-cliquez sur la barre grise vers la gauche de votre numéro de ligne de code pour définir un point d'arrêt . Ensuite, lorsque vous appuyez sur la touche Play (pour exécuter votre code), le code s'arrête sur cette ligne. Ensuite, appuyez sur l'une des touches fléchées pour déclencher une étape, une étape ou une étape dans différentes commandes. En bas à gauche, une fenêtre avec des variables. Vous pouvez développer des classes pour voir les valeurs actuelles. Apprenez à utiliser votre débogueur !!!


Il a la variable droite à la ligne 27 choix = getchoice (1, 3) mais cela s'arrête juste là-bas.


Cliquez sur le bouton "Pas dans" sur GetChoice, pas sur le bouton "Step Over".


@John je pense que vous pourriez et devriez-vous transformer en une réponse. (Vous faites des hypothèses, mais après 2 heures de réponse d'un utilisateur, je suppose généralement qu'ils ont oublié Stackoverflow.com/help/someone -answers )


Duh! Je n'avais aucune cout à demander au poids, donc je ne réalisais pas que cela attendait une contribution! Merci @john pour les astuces de débogueur, cela m'a résolu pour moi. La valeur "Choice" était là, mais elle avait également besoin d'une valeur pour "poids".


3 Réponses :


0
votes
  1. Êtes-vous sûr de vouloir utiliser une boucle tandis que? xxx
    1. Si Choice == 1, comment et quand allez-vous échapper à la boucle?

      En outre, vous voudrez peut-être faire quelque chose avec la valeur que vous calculez: xxx


2 commentaires

Bons points. Mais je pense qu'ils sont hors de la marque concernant le problème de l'OPS. Les commentaires de @john me semblent très plausibles - bien que un peu d'aînée.


Merci, Rob. Je vois comment tout en causait une boucle infinie. Je l'ai changé si mais je ne peux pas obtenir la fonction de retourner quoi que ce soit.



0
votes

Il y a plusieurs erreurs dans votre code:

  1. Si vous avez déjà getchoice Fonction qui prend l'entrée de l'utilisateur, pourquoi prenez l'entrée de l'utilisateur avant d'appeler dans la fonction getchoice fonction? xxx
    1. Pourquoi utilisez-vous pendant la boucle si vous souhaitez uniquement vérifier une certaine condition? Utilisez si instruction à la place. xxx

      au lieu de xxx

      1. Lorsque vous appelez une fonction, vous n'avez pas besoin de spécifier son type de retour. xxx

        ou juste xxx

        au lieu de xxx

        < a href = "https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAM1QDsCBlZAQwBtMQBGAFlICsupVs1qhkAUgBMAISnTSAZ0ztkBPHUqZa6AMKpWAVwC2tEADZSW9ABk8tTADljAI0zEQkgBykADqgWE6rR6hibmvv6BdLb2Tkau7l6KypiqQQwEzMQEIcamFkoqanQZWQQxji5uHt4Kmdm5YQX15XaV8dVeAJSKqAbEyBwA5FIAzHbIhlgA1OKjOup1xJjMRnPY4gAMAIJjE1OYs/PqRiJ4Putb2wYBotO0q5gKPsyD03Xoc7I7VwD0v9MAGIGWhpOjTHzEVBEAgATx8TyuADdUHh0NN8M9hLCALJaAwQLpfK52AjTYCYHIIVGDCCk6ZGOykab004ADyJo2%2B23QfWc7GmAGs8Kx/AAVVAABT62gUEF5Bn5mE53IVSohMvQCglAGkRf55Xz2Cqrn8AFQWi3Ta3W052G3Wy0W34k%2BgM5h2QmmgDs3IdaoFAHdMHhgAgyXMACLTTibYk7B305DUvBvKMx%2BO7BM2zE%2BbF42gEk0/bPWtAGCPzOY6WaSSSS9jMJTTZOofyHZjTKggsGmWuSTNXB2t1OHdMUqk0zAQTjM0bFrPbYd9Ss6avTKysQelllUaYQEdp0aR9OcIk78S%2BocOm3C0XaqWauXB0PhhcOy8nnfKZt4PcHlMjxPY9pkkc8lxtS8/Rva073FR8QS1CAXzDAh30g70vwg60f0OP990PMdj3TedMw/K8dwdZYCH6WhpjjLlr2tT8fSw80nRvXN83xG8nTNF0dhRNEMTwLFmFxfEvR%2BCjsJZN0XnQfA7nTTxt1k8tV3XKR6yhYBiFWaYiBbOgkTcMkUPDBQQHEAB WHRaFs% 2BztKYm9q3XYhXwIFyPyreZ3kpQMIAUpTgC6I41z85y63CrS604AA6aY9FoUzsiFfU9NWBRDNQDVEIURyHLrbzIN8mslAIQLgrsUKYsi4rorc% 2Bq60S5LUrJPx8py9LRUyowCrsoqB0o0qIvKgKguYRSarCpqayiyQ6vmutRkSgBFAxCEK5zGJLXZMNNPbfj4m8Jx0QDDgdPiBO2f5pjFAAJABJBhphe% 2B6HuwaYGG2HEvsBABVBwdDFJ6AHkHGmABNMGAemAB1AAlMGxS% 2B7BtkR6wnuwRG3shx73oYbAxT% 2BAEwcBaZrG2aRpmwAANHGdBe7AGESgApAGGDFIEnocaMnu57Y% 2BemSVti5r6BemT7EewRLXTJM6LrpN1GVoZlWWYDkfWg60kwuo5o04MibTugBxSlphEdEkTYNFmAIQ4CAQPDaB8CsXMDBARUOACp3Chl7UvNdvRrQiji% 2B9lwPInWbw0pb% 2ByelLbfROw3YIRLsHoNxLbosPXEqzAtBjWszGmUYQH7Y3mIOndqNolsLsHGvF2OjiHTgh9pS6q6nRugNDg7iUu9lQ1FSDENUPAqCXP7nrcvTCyyQBSR4oHXb1JXePtLFL3ssITAjGmCzsu0% 2BO4K36KO / i7bivXqjKXrhjuRYo6TptTrZV1fVsp7y0% 2B6NQ4H8tRf3vKPdUi8p4yX9AAvKsoDZHwnuGaYZpQKryrsZCsF9JA71EiyB2h9j79njkAk% 2BZUiEkOvoNHaMc67EDok / ViQweisBAEMGyQxSCmCGJsDhqBWFrhkHId4fQBhjkkKMTgHCCCsJ4V0HogoQA2RXmYUY3pNjehst6TgnhNicBsmYAxQhWHcA4VwnhpA% 2BFDA4VZTYpBpHcKYaQOAsAYCIBQKgIwPhvZkAoAeDxXj2DuGAAoB4PgFDUgIKQKgIoHbECshAZwMiOHODsFkWErDJGkDQEYIwWgCBg1oKwdJDjSBYFOKId gSTSl4GWGkUyVkSmYDZKkCswxzGkmUFU1geBnD6WILCPQWAMlSI8kYYZPQaD0CYGwDgPB% 2BCCGEKIFAcg5BCB6VZSAPRUA% 2BGKLQBpABafZHwowSEETITgmTCipF2ZobQjRTCzisBUOICRBB% 2BACLs% 2B5bzIi7OeVUdws4rm9lKA0fQeRBBAt2SC1osR / kQpaF8wFLQ / kdABT0BQIjBhcGYaw9hnCqmWLZJ4Mw% 2ByzDcHJMgZA% 2B4CDEBBIKMKEBcCEBILWCRzI9CeO8ays8SUVkyCkUkuRpAFGqPijZIxQwTGkDGTZWxZjeGsOsSAWx9jZFONcRAJAK407kEoNkgJ1RHn4CIACqJdBGAsEqXMwM% 2BkfDjIlXi% 2BVFjWFjE4EfQgCBphEpJWSilVKIA0rpV0AVDihXOymtUQkEqpUyrlQSxVihlV2MFfIkA3BvTxVGGYSQABOSQ3AvCcBzZ4bgoxRi8BYUMUYpj41WOTaGnFQxJA1pKZYkNsieipQCBobgQA% 3D » rel = "nofollow noreferrer"> Démo


1 commentaires

Salut, merci pour l'entrée. Je ne reçois toujours pas de retour des fonctions.



0
votes

Voir ci-dessous,

#include <iostream>
#include <iomanip>
using namespace std;


void displayMenu();
int getChoice(int,int);
double kilosToPounds(double);
double poundsToKilos(double);


int main()
{
    double weight = 0;
    int choice = 0;

    displayMenu();

    cout << "Please choose a function: ";
    choice = getChoice(1, 3);

    if (choice == 1)
    {
        cin>>weight;
        kilosToPounds(weight);
    }
    if (choice == 2)
    {
        cin>>weight;
        kilosToPounds(weight);
    }
    if (choice == 3);
    {
        return 0;
    } 
 }


void displayMenu()
{
    int padding = 8;

    cout << "Program to convert weights:\n\n"
         << right
         << setw(padding) << "" << "1. Convert kilograms to pounds"<<endl
         << setw(padding) << "" << "2. Convert pounds to kilograms"<<endl
         << setw(padding) << "" << "3. Quit"<<endl;

}


int getChoice(int min, int max)
{
    int choice;
    cin >> choice;
    while (choice < min || choice > max)
    {
       cout << "Invalid input. Enter an choice between 1 & 3: ";
       cin >> choice;
    }
    return choice;
}

double kilosToPounds(double weight)
{
     double kilo = weight / 2.2;
     cout << "This item weighs " << kilo << " kilos.\n"<<endl;
     return 0;
}


double poundsToKilos(double weight)
{
    double pounds = weight * 2.2;
    cout << "This item weighs " << pounds << " pounds."<<endl;;
    return 0;
}


8 commentaires

S'il y a une autre réponse avec le même contenu, vous le prélevez, pas de la dupliquer.


@NutCracker Désolé, d'autres réponses n'ont-elles pas de points sur l'int getchoice (int min, int max); Fonction, alors pourquoi je suis ajouté ma réponse mais merci de votre conseil.


Merci pour votre commentaire. Je vois vos points sur la boucle tandis que je l'ai changé si des boucles. J'ai aussi corrigé mes appels de fonction. Cependant, la question persiste toujours ma sélection de menu ne fonctionne pas.


@Ryandunnion avez-vous changé la fonction getchoice () en ajoutant CIN dans la boucle tandis que


@Ryandunnion Voir getChoice () Fonction en code complet


@Srilakshmikanthant, il s'est arrêté parce que cela attendait une contribution. Je n'ai pas écrit de cout pour demander le poids. Donc, je n'avais aucune idée pourquoi elle s'est arrêtée.


@Ryan Dunnion Quel est le sens de l'arrêt de l'arrêt ici. L'exécution est complètement arrêtée ou attend la saisie?. L'entrée ne nécessite pas de sortie. La sortie est pour informer l'utilisateur de donner une entrée


Oui @srilakshmikanthanthan c'est exactement ce qui s'est passé. Le programme attendait une contribution et j'ai négligé d'ajouter une déclaration de COUT pour l'inviter.