Toon posts:

"datums" invoeren in c++

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mensen,


Hier mijn vraag:

Schrijf een programma dat een datum in verschillende formaten kan weer geven en lezen. De formaten zijn : 03-03-1967, 03 maart 1967, 1967-maart-03, maart 03 1967.


Het invoeren van de datum lukt nog wel, maar hoe kan ik ervoor zorgen dat het programma 01 als januari, 02 als februari, 03 als maart enz enz ziet ??

Hierbij de code die ik tot nu toe heb:

---------------------------------------------------------------------------------------------------------------------
#include <iostream>
#include <string>
using namespace std;

int main ()
{
string dag, maand, jaar;

// char* month[] = { "januari", "februari", "maart" }
// char* charMont = month[m-1]

cout << " Voer de datum in gescheiden door / " << endl;
cin >> dag;
cin.ignore(); // negeer '/' karakter
cin >> maand;
cin.ignore(); // negeer '/' karakter
cin >> jaar;
cin.get();


cout << "De datum is: " << dag << " " << maand << " " << jaar << endl;
cout << "De datum is: " << maand in letters << dag << jaar << endl;


cin.get();


}

--------------------------------------------------------------------------------------------------------------------

Nu wil ik de maand als 01 invoeren en als januari weergeven. De maand in letters moet op de plek van: maand in letters . Het is me nog niet helemaal duidelijk hoe ik dit het beste aan kan pakken. De variabele maand wordt dus 1.... en dan...??

Ik hoor het graag van de experts, alvast bedankt _/-\o_

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 17:14
Converteren naar een getal (daar bestaat een C++ -met stringstream- en een C- manier voor), kijken of 'ie tussen 1 en 12 ligt en vervolgens het item uit de array printen wat daarmee correspondeert. Die conversie en controle zou ik al doen voor het printen, zodat de gebruiker geen verkeerde datum kan invullen. :)

[ Voor 5% gewijzigd door Jaap-Jan op 27-11-2008 22:35 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • daboemann
  • Registratie: April 2007
  • Laatst online: 26-09 12:37
Je bent toch begonnen met een array te maken van month[]?

Als je nou de invoer van de gebruiker (bijvoorbeeld 02) - 1 doet, dan heb je als het goed is de juiste plek in de array te pakken aangezien deze vanaf de 0 begint met tellen. Dan is het alleen nog iets verzinnen (weet de syntax van C++ zelf niet) die iets van month[maandNummer - 1] weergeeft toch?

  • blackangel
  • Registratie: April 2002
  • Laatst online: 26-09 22:25
Het is dat ik cin niet begrijp (ik ben meer van C, stdio.h, scanf()...), maar wat Jaap-Jan en daboemann zeggen klopt.

Wat je in princiepe ook gewoon kan doen is cin naar een getal doen, zoiets als
C++:
1
2
3
4
5
6
unsigned int maand; //maand tussen 0 en 2^32-1
cin >> maand--;     //maand is 'normaal' 1 tot 12, haal daar na input 1 vanaf
if(maand<12)        //maand zou nu 0 tot 11 moeten zijn, zo niet, dan doet user iets fout
  cout << maandText[maand] << endl;     //en print
else                //fout dus
  cout << "error, foute maand" << endl; //doe iets anders

En dan een heel stuk netter en leesbaarder als je nog op dit niveau zit (niet denigerend bedoeld overigens, ik ben ook daar geweest, maar mijn code is tegenwoordig heel wat korter :) )

Als je als cin ook een textinput kan krijgen, zoals "januari" wordt het moeilijker. Dan is het het netste om een string in te lezen en die vervolgens te vertalen naar een int. Kan die het niet vertalen naar een int, dan is het geen getal, dan ga je vergelijken met iets als if(!input.compare(maandText[i])) cout<<input;

Maar ga eerst maar eens aan de slag met lekker klooien met array's :)

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 13:03

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.