Untitled
unknown
plain_text
a year ago
3.0 kB
5
Indexable
Never
const char* PLEC[] = { "mezczyzna","kobieta" }; const char* STOPIEN[] = { "I","II","III"}; enum class Plec{ mezczyzna, kobieta }; enum class Stopien { I,II,III }; struct Student { char imie[40]; char nazwisko[60]; Plec plec; Stopien stopien; int semestr; }; void wypelnij(Student& s,const char* imie, const char* nazwisko,Plec plec,Stopien stopien,int semestr) { strcpy(s.imie, imie); strcpy(s.nazwisko, nazwisko); s.plec = plec; s.stopien = stopien; s.semestr = semestr; } void zapiszDoP(Student& s, const char* nameF) { uint8_t tsem, tstopien, tplec, maska3 = 7, kombinat; tsem = s.semestr & maska3; cout << bitset<8>(tsem) << "\tsem\n"; tstopien = (int(s.stopien) + 1) << 3; cout << bitset<8>(tstopien) << "\tstopien\n"; tplec = int(s.plec) << 5; cout << bitset<8>(tplec) << "\tplec\n"; kombinat = tsem | tstopien | tplec; cout << bitset<8>(kombinat) << "\tplec\n"; char tab[9]; for (size_t i = 0; i < 8; i++) { tab[7 - i] = (kombinat & (1 << i)) ? '1' : '0'; } tab[8] = '\0'; cout << tab << endl; FILE* desp = fopen(nameF, "w"); fprintf(desp, "%s; %s; %s;", s.nazwisko, s.imie,tab); fclose(desp); } void OdczytZP(Student& s,const char* nameP) { char tab[9]; FILE* desp = fopen(nameP, "r"); rewind(desp); fscanf(desp, "%s; %s; %s;", s.nazwisko, s.imie, tab); /* fscanf(desp, " %s; ",s.imie); fscanf(desp, " %s; ",s.nazwisko); fscanf(desp, " %s; ",tab);*/ /* if (fscanf(desp, " %[^;]; %[^;]; %[^;]; ", s.imie, s.nazwisko, tab) != 3) { printf("Blad odczytu danych z pliku\n"); exit(1); }*/ //tab[8] = '\0'; fclose(desp); uint8_t kombinat=0; for (size_t i = 0; i < 8; i++) { if (tab[i] == '1') { kombinat |= (1 << (7 - i)); } } uint8_t tsem, tstopien, tplec; tsem = kombinat & 7; tstopien = (kombinat & 0x18)>>3; tplec = (kombinat & 0x20) >> 5; s.stopien=static_cast<Stopien>(tstopien); s.plec = static_cast<Plec>(tplec); s.semestr = tsem; } ostream& operator<< (ostream& ekr,Student s) { ekr << s.imie << s.nazwisko << PLEC[int(s.plec)] << s.semestr << STOPIEN[int(s.stopien)]; return ekr; } int main() { Student s; wypelnij(s, "marekl", "howski", Plec::kobieta, Stopien::I, 3); zapiszDoP(s,"b.txt"); Student s2; OdczytZP(s2, "b.txt"); uint8_t maska = 0x20; cout << bitset<8>(maska); cout <<"\n\n" << s2; }