Invite et reçoit une date de “MM/DD/YYYY” à l'aide de CIN, ignorant les caractères“/”? (en C++)
Oui, c'est une affectation. Je n'ai pas l'esprit de travail pour obtenir une réponse et je ne veux pas la réponse exacte! 🙂 C'est mon premier de la classe C++. Je suis venu dans cette classe avec l'accord préalable de la connaissance de VBA, MySql, CSS et HTML.
Nous sommes tenus d'écrire un programme avec plusieurs fonctions différentes. L'un d'entre eux est nécessaire pour recevoir la date d'entrée en "MM/DD/YYYY"
format.
Alors que, en elle-même est assez facile, en tant que débutant, je voudrais juste poser
cin >> month >> day >> year;
Et insérez le "/" par la suite lors de l'affichage à l'utilisateur.
Cependant, je crois que notre professeur tiens à l'utilisateur d'entrer la date exactement de taper "12/5/2013", ou à toute autre date.
Par ses instructions:
La
'/'
peut être lu par cin. Afin de lire les'/'
caractère et de l'ignorer. Régler le jour à l'égalité de la 3ème entrée, d'un mois à la première entrée, et l'année de la cinquième entrée. Jeter les 2ème et 4ème entrée.
^ C'est où j'en suis de plus en plus compromise.
Jusqu'à présent, nous avons uniquement l'expérience de cin lorsque l'utilisateur appuie sur entrée après chaque entrée. Donc je ne sais pas si il veut que l'utilisateur d'appuyer sur entrée après 12, puis de nouveau après '/', puis après 5, après le '/', et enfin après '2013' (à l'aide de l'exemple avant de 12/5/2013 pour le mois de décembre 5th, 2013).
Quelqu'un de plus expérimenté ont tout possible de comprendre ce que je devrais faire?
Nous avons seulement appris comment utiliser "cin" pour recevoir des entrées (donc nous n'en connaissons pas d'autres méthodes pour la réception des avis), et je n'ai aucune idée de la façon d'aller sur "ignorer le caractère" lors de la saisie comme une chaîne de caractères comme '12/5/2013' exactement.
J'apprécierais toute aide à ce!
edit: j'ai cherché des réponses ici, mais tous ceux que j'ai rencontré sont au-delà de la portée de ce que nous avons appris et ne sont donc pas autorisés dans l'affectation.
Alors que je peux aller sur la compréhension de la logique de plus à l'avance de codage assez facilement, je suis frustré de mon manque de capacité à résoudre ces plus simples à des problèmes avec une certaine facilité. D'où mon affectation ici. J'ai passé plusieurs heures à la numérisation de notre manuel pour les éventuelles réponses ou des indices à "ignorer" les caractères dans une chaîne d'entrée, mais ont peu.
Aussi, je vous remercie Filip pour l'édition de mon post pour mieux afficher les infos. Est beaucoup mieux maintenant. 🙂
Il suffit d'ajouter un caractère temporaire et l'analyse. Puis faire un peu de vérification des erreurs pour voir si le caractère transmis est le bon séparateur (c'est à dire
/
). Le reste devrait être relativement simple à partir de là. SpoilerMerci! Je ne suis vraiment pas sûr de ce que tu veux dire par le caractère temporaire et l'analyser? Nous devons d'entrée quelque chose exactement comme "12/5/2013", puis appuyez sur entrée. Je vois que votre CIN est accepter les trois entrées pour le MM, JJ, et YYYY séparément. Cependant, nous devons obtenir en quelque sorte la date comme un morceau de l'entrée et de séparer les mm, jj, et aaaa. Ignorant le "/" en quelque sorte. Nous n'avons même pas abordé sur les cordes dans la classe encore, ce que je trouve bizarre.
Le getline est une fonction membre de la classe istream et je pense que les classes de flux a fini pour plus d'informations, voir le lien dans mon sna
OriginalL'auteur Kaitlyn | 2014-06-30
Vous devez vous connecter pour publier un commentaire.
C'est en fait assez facile! Le truc, c'est: vous pouvez entrer plus d'une seule chose. Cela signifie que, si vous écrivez
int d; std::cin >> d;
, c'est très bien pour une entrée de30/06/2014
. La valeur ded
devient30
et le reste de l'entrée n'est pas encore lire. Si vous rédiger le prochainstd::cin
déclaration, le contenu qui est disponible est/06/2014
.Vous avez ensuite besoin de consommer de la
/
, lire le mois, de consommer à nouveau et enfin de lire l'année.Si vous avez la garantie que le format d'entrée sera correct, c'est OK pour tout écrire
Alternativement, Si vous n'êtes pas à l'aise avec l'aide de
std::cin.get()
, il est aussi bien que la lecture d'un caractère:Voici quelques démos:
std::cin.get()
Hey mais vous r totalement faux . vous êtes à l'aide de cin trois fois.
Oh mon. Je ne sais pas ce eree. C'est que l'équivalent de cout? Aussi, nous sommes compris "#include <iostream> #include <stdlib.h> using namespace std;" en haut de l'ensemble de nos programmes, donc j'ai besoin seulement de supprimer tout "std::" dans ce programme,^? Nous ne sommes pas obligés d'écrire des erreurs dans ce programme, si la date est entrée dans un format incorrect. Nous devons donc nous supposons toujours que c'est exactement saisi comme "12/5/2013" ou "6/20/2001". Dans ce cas, je l'écris comme "cin >> d;", "cin.get() != '/'" ? Je suppose que, ce que je demande, c'est est-ce "cin.get() != '/')" Seulement obtenir toutes les valeurs saisies par l'utilisateur jusqu'à ce que '/'?
Oui, c'est le point! Je suis en train de lire les trois entiers et je suis la consommation de la
/
caractères.Oui,
std::cerr
est pratiquement le même questd::cout
, remplacez-la si vous le souhaitez. Vous pouvez également supprimer tous lesstd::
une fois que vous écrivezusing namespace std;
de cours.OriginalL'auteur stefan
suivre cette pseudo-code:
et voilà vous avez votre jour, mois et année de l'entrée.
Pouah je suis pas utilisé pour maintenir maj+entrée pour faire de nouvelles lignes dans cette zone de commentaire. Nous n'avons pas abordé les tableaux encore et ne peut pas utiliser ce. J'ai aussi ne pas comprendre ce que vous entendez par jeter "/"? Je sais qu'on doit se défausser d'elle, mais c'est quelque chose que je n'ai aucune idée de la façon de le faire dans le langage C++. 🙁 Je m'excuse pour ne pas connaître de plus. Je suis vraiment tout à fait un débutant et j'ai essayé pendant plusieurs heures à regarder tout cela sur google et d'autres ressources...en vain, malheureusement!
en rejetant je veux dire, si vous trouvez le caractère"/", juste ne rien faire avec elle et continuer. Toutefois, si vous n'avez pas appris tableau alors je pense que vous avez un peu d'un problème. Avez-vous jamais vu quelque chose comme ceci:
char input[5]
ou similaires?J'ai trouvé une manière différente, voir mise à jour de la solution en quelques secondes
apprécieront de savoir pourquoi le vote négatif, c'est mon code mal partout?
OriginalL'auteur pipja