2013-09-30 3 views
0

Je suis dans une classe C++ débutante, et maintenant nous allons sur les fonctions. Pour une affectation, je dois écrire deux fonctions. On devrait prendre trois arguments int représentant une heure (heures, minutes, secondes), et retourner l'heure équivalente en secondes. La deuxième fonction devrait prendre un argument int (secondes) et renvoyer l'heure équivalente au format heures, minutes, secondes.Choix de plusieurs entrées utilisateur C++

Je me demande s'il existe un moyen de donner à l'utilisateur le choix du nombre d'arguments à entrer. Par exemple, existe-t-il un moyen de suggérer quelque chose comme «Entrez une heure en secondes ou heures, minutes, secondes:» et si l'utilisateur n'entre qu'une seule entrée, appelle une fonction, mais s'il entre trois, appelle l'autre? Je me rends compte que je pourrais d'abord donner à l'utilisateur un choix, comme "Entrez '1' pour convertir des secondes en heures, minutes, secondes.Entrez '2' pour convertir des heures, minutes, secondes en secondes." puis exécutez une instruction cin séparée en fonction de ce qu'ils choisissent, mais existe-t-il un moyen de le faire sans cette frappe supplémentaire de l'utilisateur?

+1

Oui, cela peut être fait, mais cela implique l'analyse, qui nécessite soit des outils avancés (comme 'stringstream'), soit un hachage soigné. Êtes-vous prêt pour cela? – Beta

+0

@Beta Probablement, il doit déjà le faire pour la fonction à trois arguments. – cdhowie

Répondre

1

Oui, vous pouvez le faire assez facilement. Invite l'utilisateur à entrer. Utilisez std::getline pour lire l'intégralité de leur entrée sous forme de chaîne. Vérifiez si cette chaîne ne contient que des chiffres (donc c'est une entrée) ou quelque chose comme des espaces ou des virgules (indiquant qu'il y a plus d'une entrée).

Convertissez le nombre d'entrées approprié et appelez la fonction choisie.

0

Il y a. Le plus simple est d'essayer d'analyser la chaîne dans deux formats différents. Si l'un échoue, essayez l'autre. Le format qui a réussi indique quelle fonction vous devriez appeler.

Si vous donnez des exemples d'entrées acceptables pour chaque fonction, je pourrais peut-être donner un exemple concret.