Invata cu noi!
Zodiacul – o problema simpla
Problema „Zodiacul” poate fi enuntata extrem de simplu:
Se citeste o data calendaristica corecta prin zi si luna si se cere sa se stabileasca in ce zodie se gaseste acea data calendaristica.
Problema este o aplicatie foarte utila pentru introducerii structurii SELECTEAZA…SFARSIT_SELECTEAZA in partea de invatare a algoritmicii.
Prezentarea noastra va folosi un program in C++ pe care doritorii il pot prelua si rula in propriul IDE pentru a se convinge ca el functioneaza corect.
~~Cateva explicatii pentru acest algoritm~~
Zodiile pe care le cunoastem de fapt sunt:
|Zodia |Perioada calendaristică |
|Berbec | 21 martie – 20 aprilie |
|Taur | 21 aprilie – 21 mai |
|Gemeni | 22 mai – 21 iunie |
|Rac | 22 iunie – 21 iulie |
|Leu | 22 iulie – 22 august |
|Fecioară | 23 august – 22 septembrie |
|Balanță | 23 septembrie – 22 octombrie |
|Scorpion | 23 octombrie – 21 noiembrie |
|Săgetător | 22 noiembrie – 21 decembrie |
|Capricorn | 22 decembrie – 19 ianuarie |
|Vărsător | 20 ianuarie – 18 februarie |
|Pești | 19 februarie – 20 martie |
Converisia datei calendaristice
Data calendaristica pe care o citim va fi facuta dupa o relatie matematica simpla.
conversie luna*100+ziua
In comentariul adaugat la codul sursa se pot vedea valorile conversiilor realizate.
De exemplu: 7 martie se va converti in 307 si daca este cautat intre toate valorile intervalelor de conversie se gaseste ca 219< 307 < 320 deci 7 martie este in zodia Pestilor.
#include <iostream> using namespace std; //zodii //|Zodia |Perioada calendaristică | conversie //|Berbec | 21 martie - 20 aprilie |321 - 420 //|Taur | 21 aprilie - 21 mai |421 - 521 //|Gemeni | 22 mai - 21 iunie |522 - 621 //|Rac | 22 iunie - 21 iulie |622 - 721 //|Leu | 22 iulie - 22 august |722 - 822 //|Fecioară | 23 august - 22 septembrie |823 - 922 //|Balanță | 23 septembrie - 22 octombrie |923 - 102 //|Scorpion | 23 octombrie - 21 noiembrie |1023 - 1121 //|Săgetător | 22 noiembrie - 21 decembrie |1122 - 1221 //|Capricorn | 22 decembrie - 19 ianuarie |1222 - 1231, 101 - 119 //|Vărsător | 20 ianuarie - 18 februarie |120 - 218 //|Pești | 19 februarie - 20 martie |219 - 320 int main() { int z, l, conversie = 0, caz; cout<<"citeste ziua si luna: "; cin >> z >> l; while(z<0 || z>31){ cout<<"reciteste ziua: "; cin >> z; } while(l<0 || l>12){ cout<<"reciteste luna: "; cin >> l; } conversie = l * 100 + z; if(( (conversie>=101)&&(conversie<=119)) || (conversie>=1222)&&(conversie<=1231) ){ caz = 1; } else if( (conversie>=120)&&(conversie<=218) ){ caz = 2; }else if( (conversie>=219)&&(conversie<=320) ){ caz = 3; }else if( (conversie>=321)&&(conversie<=420) ){ caz = 4; }else if( (conversie>=421)&&(conversie<=521) ){ caz = 5; } else if( (conversie>=522)&&(conversie<=621) ){ caz = 6; } else if( (conversie>=622)&&(conversie<=721) ){ caz = 7; } else if( (conversie>=722)&&(conversie<=822) ){ caz = 7; } else if( (conversie>=823)&&(conversie<=922) ){ caz = 9; } else if( (conversie>=923)&&(conversie<=1022) ){ caz = 10; } else if( (conversie>=1023)&&(conversie<=1121) ){ caz = 11; } else if( (conversie>=1122)&&(conversie<=1221) ){ caz = 12; } switch(caz) { case 1: cout << "CAPRICORN" << endl; break; case 2: cout << "VARSATOR" << endl; break; case 3: cout << "PESTI" << endl; break; case 4: cout << "BERBEC" << endl; break; case 5: cout << "TAUR" << endl; break; case 6: cout << "GEMENI" << endl; break; case 7: cout << "RAC" << endl; break; case 8: cout << "LEU" << endl; break; case 9: cout << "FECIOARA" << endl; break; case 10: cout << "BALANTA" << endl; break; case 11: cout << "SCORPION" << endl; break; case 12: cout << "SAGETATOR" << endl; break; default: cout << "Data citita nu este valida" << endl; break; } return 0; }
admin
0
Tags :