0
votes

Fonction qui prend l'entrée à partir d'une question et utilise cette entrée dans la fonction principale

J'écris actuellement un programme pour faire une simulation de chutes et d'échelles. Pour l'utilisateur, la première chose à apparaître dans la boîte de la console demanderait le nom du joueur 1, et le nom du joueur 2. Évidemment, je pourrais juste faire la cout << "Nom 1?" et Cin comme une variable. Cependant, dans cette affectation, nous recevrons un crédit supplémentaire si nous effectuions une fonction qui prend cette entrée pour l'utiliser dans la fonction principale. En d'autres termes, comment devrais-je écrire une fonction de sorte que, lorsqu'elle est appelée, elle apporte l'entrée que nous sommes revenus? J'ai essayé depuis un moment et je ne peux toujours pas comprendre. Voici un pseudocode de ce que j'essaie xxx

de manière optimale, c'est ce que la sortie devrait ressembler lors de l'exécution du programme.

Quel est le nom du joueur 1? Entrez le nom

Quel est le nom du joueur 2? Entrez le nom

exécute le jeu en utilisant les deux noms de joueurs

Désolé pour la question noob, je suis un très nouveau programmeur! Appréciez toute aide que je peux obtenir ici.


1 commentaires

Une fonction ne peut renvoyer qu'une seule valeur. Vous pouvez retourner un std :: paire


3 Réponses :


1
votes

Une fonction ne peut renvoyer qu'une seule valeur. Vous pouvez retourner un std :: paire xxx

au lieu de retourner les noms que vous pouvez utiliser des références xxx


5 commentaires

Cela semble super, utilisera dans le futur. Merci! Ne l'ai pas vu auparavant. Cependant, cet enseignant nous donnera juste un 0 sur la mission si nous utilisons quelque chose que nous n'avons pas appris dans ses notes. Nous signalera également au collège de tricherie. Ce qui est ironique parce que plus de la moitié de sa classe échoue, c'est une classe en ligne et ses notes sont terribles. Tant pis. Merci pour votre réponse!


@Adamkeller Vous devriez probablement mentionner cela dans votre question et votre liste tous les outils autorisés C ++. Nous ne pouvons pas connaître vos notes.


@Adamkeller J'ai ajouté une autre fonction à ma question.


Je vois. Utilisation de votre code, j'obtiens maintenant les trois erreurs suivantes: E0308: Plus d'une instance de la fonction surchargée "getplayernames" correspond à la liste des arguments C0282: redéfinition du paramètre formel "Nom du joueur" C0282: redéfinition du paramètre formel "Player1Name"


@Adamkeller je l'ai corrigé



0
votes

transmettez-les par référence. BOOM, vous n'avez besoin de rien retourner. XXX


0 commentaires

0
votes

Bien que vous puissiez créer une fonction qui lira une chaîne pour vous, vous devez fournir un moyen d'indiquer si la fonction a réussi em> ou échoué em> en lisant et en stockage la chaîne. Sinon, sur une erreur de flux, ou si l'utilisateur génère un manuel eof code> avec Ctrl + d kbd> (ou ctrl + z kbd> sous Windows), si vous omettre de l'attraper, de mauvaises choses vont se produire.

Ce n'est pas spécifique à cette fonction de chaîne de lecture, il est vrai avec chaque fonction qui complète une tâche qui dépend du code restant. "Valider, valider, valider" em> est la règle. Un simple reportage entier 1 code> sur le succès ou 0 code> sur une défaillance est bien (ou vice-versa, votre choix). BOOL CODE> est également un type simple pour indiquer le succès / l'échec. P>

Dans votre cas, vous vous souciez de savoir si la lecture réussie (qui dépend de std :: ios_base :: iostate code> après la lecture). La beauté est que vous n'avez pas besoin de vérifier les minuties de .eof (), .Fail () code> ou .bad () code> (bien que vous soyez libre de) (bien que vous soyez libre de), Vous vérifiez simplement le retour de votre fonction d'entrée (à l'aide de getline code> peut être préférable à >> code> pour la manipulation des espaces, ainsi que des caractères étrangers). Ici, vous pourriez simplement faire quelque chose comme: p> xxx pré>

qui vous permet de transmettre l'invite à afficher à l'utilisateur, puis retourne true / false code> basé sur si l'appel à getline code> réussit. p>

in principale () code> Vous pouvez simplement vérifier si votre fonction getstring code> fonction a réussi ou Échec avant de s'appuyer sur les informations de votre chaîne s code>, par exemple p> xxx pré>

(qui vous permet également d'utiliser la capacité par défaut de concaténer STD: : chaîne code> dans la formation de l'invite - tant que vous n'avez pas plus de neuf joueurs à l'aide de la méthode ci-dessus) p>

Ceci gérera votre entrée de joueur, y compris la blancheur dans le nom et tout en manipulant un EOF code> à l'une des entrées. Un court exemple avec deux joueurs serait: p>

EXEMPLE UTILISATION / SORTIE STROND> P>

$ ./bin/chutes
enter player 1: (stream error or user canceled input)


0 commentaires