Witam,
Jestem bardzo początkującym "programistom", o ile w ogóle mogę się tak nazwać, i mam pewien problem natury technicznej.
Chcę napisać program, który po wprowadzeniu przez użytkownika pewnego 7 znakowego kodu poda odpowiednią datę. Program, a raczej jego szkielet, generalnie działa poprawnie, ale jego kod nie podoba mi się i wiem, że na pewno da się to zrobić w sposób bardziej elegancki.
Kod, wprowadzany przez użytkownika w formacie: RMxDDxx (R- rok, M - miesiac, DD - dzien), np.: 6HY1763 powinien podać datę 17.08.2006
Pytanie brzmi: W jaki sposób mogę napisać ten kod w bardziej elegancki (krótszy) sposób niż przy użyciu switcha? Wiem, że poziom zaawansowania tego problemu jest bardzo "złożony", ale siedzę nad tym już drugi dzień i nie mogę tego ogarnąć :/
#include <iostream>
using namespace std;
int main()
{
const int znakow_w_kodzie = 7;
char kod [znakow_w_kodzie];
int rok=0, miesiac=0, dzien1=0, dzien2=0;
cout << "Podaj kod: ";
for(int i=0; i<znakow_w_kodzie; i++)
cin >> kod[i];
// ROK
switch(kod[0])
{
case '0': rok=2010; break;
case '1': rok=2011; break;
case '2': rok=2012; break;
case '3': rok=2013; break;
case '4': rok=2014; break;
case '5': rok=2005; break;
case '6': rok=2006; break;
case '7': rok=2007; break;
case '8': rok=2008; break;
case '9': rok=2009; break;
}
//MIESIAC
switch(kod[1])
{
case 'A': miesiac=01; break;
case 'B': miesiac=02; break;
case 'C': miesiac=03; break;
case 'D': miesiac=04; break;
case 'E': miesiac=05; break;
case 'F': miesiac=06; break;
case 'G': miesiac=07; break;
case 'H': miesiac=8; break;
case 'I': miesiac=9; break;
case 'J': miesiac=10; break;
case 'K': miesiac=11; break;
case 'L': miesiac=12; break;
}
//PIERWSZA CYFRA DNIA
switch(kod[3])
{
case '0': dzien1=0; break;
case '1': dzien1=1; break;
case '2': dzien1=2; break;
case '3': dzien1=3; break;
}
// DRUGA CYFRA DNIA
switch(kod[4])
{
case '0': dzien2=0; break;
case '1': dzien2=1; break;
case '2': dzien2=2; break;
case '3': dzien2=3; break;
case '4': dzien2=4; break;
case '5': dzien2=5; break;
case '6': dzien2=6; break;
case '7': dzien2=7; break;
case '8': dzien2=8; break;
case '9': dzien2=9; break;
}
cout << "Data: " << dzien1 << dzien2 << "." << miesiac << "." << rok << endl;
return 0;
}