Witam, mam takie zadanie:
Napisz prosty program który zapyta użytkownika o datę urodzenia w formie DDMMRRRR gdzie dd dzień mm miesiąc i rrrr rok
przyjąć datę jako wartość typu longA następnie wypisać na ekranie w postaci dziesiątkowej następujące jej fragmenty
- fragment o nazwie niebieskie na który składają się bity 0,1,2,3,4,5
-fragment o nazwie zielony na który składają się bity od 10 do 14 (włącznie)
-fragment o nazwie czerwony na który składają się bity 16,17,18W programie nie można ani razu użyć operacji bitowej koniunkcji ani przesunięcia bitowego. Jeśli posłużysz się unia to niech NIE będzie ona anonimowa.
Rozwiązałem to w taki sposob:
#include <iostream>
using namespace std;
struct tnij
{
int niebieski :6;
int :3; //puste
int zielony :5;
int :1; // puste
int czerwony :3;
};
union kolory
{
long cala;
tnij date;
};
int main()
{
long data;
cout << "Podaj swoja date urodzenia (liczbowo) np 16041995 -> "; cin>>data;
kolory dane;
dane.cala = data;
cout << "Niebieski: " << dane.date.niebieski << endl;
cout << "Zielony: " << dane.date.zielony << endl;
cout << "Czerwony " << dane.date.czerwony << endl;
}
Jest to dobre rozwiazanie?