Porównywanie elementów tablicy z góry ustalonym "kodem"
Ostatnio zmodyfikowano 2014-10-26 15:16
HydeFromT70s Temat założony przez niniejszego użytkownika |
Porównywanie elementów tablicy z góry ustalonym "kodem" » 2014-10-25 00:43:11 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? #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; }
|
|
Monika90 |
» 2014-10-26 15:16:17 Można używać znaków w wyrażeniach arytmetycznych int rok( char ch ) { return( ch > '4' ? 2000: 2010 ) + ch - '0'; }
int main() { std::string kod; std::cin >> kod; std::cout << "rok: " << rok( kod[ 0 ] ) << std::endl; }
|
|
« 1 » |