Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.8 kB
6
Indexable
 const char* PLEC[] = { "MEZCFZYZNA","KOBIETA" };
    const char* STOPIEN[] = { "I","II","III"};
    enum Plec { MEZCZYZNA, KOBIETA };
    enum Stopien { I, II, III };

    struct Student {
        char imie[40];
        char nazwisko[60];
        Plec plec;
        Stopien stopien;
        int semestr;

    };

  void  wypelnij(Student& p,const char* imie, const char* nazwisko, Plec plec,Stopien stopien, int semestr) {
      strncpy(p.imie, imie, 40);
      strncpy(p.nazwisko, nazwisko, 60);
      p.plec = plec;
      p.stopien = stopien;
      p.semestr = semestr;
    }

    void ZapiszDoP(const char* nameP,Student st) {
        FILE* desp = fopen(nameP, "w");
        fprintf(desp, "%s; %s; %s; %s; %d;\n", st.imie,st.nazwisko, PLEC[int(st.plec)], STOPIEN[int(st.stopien)], st.semestr);
        


        fclose(desp);

        
    }

    void odczytajZP(const char* nameP,Student& st) {
       
        char imie[40] = {};
        char nazwisko[60] = {};
        char plectxt[20] = {};
        char stopientxt[20] = {};
        Plec plec;
        Stopien stopien;
        int sem;

        FILE* desp = fopen(nameP, "r");
        rewind(desp);
        fscanf(desp, "%[^;]; %[^;]; %[^;]; %[^;]; %d;\n", imie,nazwisko,plectxt,stopientxt,&sem);

      /*  fscanf(desp, "%s; ", imie);
         fscanf(desp, "%s; ", nazwisko);
         fscanf(desp, "%s; ", plectxt);
         fscanf(desp, "%s; ", stopientxt);
         fscanf(desp, "%d; ", &sem);*/
        imie[strlen(imie) - 1] = '\0';
        nazwisko[strlen(nazwisko) - 1] = '\0';
        plectxt[strlen(plectxt) - 1] = '\0';
        stopientxt[strlen(stopientxt) - 1] = '\0';
        plec = (strcmp(plectxt, PLEC[0])) ? Plec::KOBIETA : Plec::MEZCZYZNA;
        if (strcmp(stopientxt, STOPIEN[0])==0)
        {
            stopien = Stopien::I;
            cout << "\nczemu\n";
        }
        else if(strcmp(stopientxt, STOPIEN[1])==0)
        {
            stopien = Stopien::II;

        } 
        else if (strcmp(stopientxt, STOPIEN[2])==0)
        {
            stopien = Stopien::III;
        }
        else {
            cout << "\n+++++" << stopientxt << '\n';
            stopien = Stopien::I;
        }
       
        wypelnij(st, imie, nazwisko, plec, stopien, sem);
          fclose(desp);
    }

    ostream& operator<<(ostream& ekr, Student& st) {
        
        ekr << st.imie <<" " << st.nazwisko << " " << PLEC[int(st.plec)] << " " << STOPIEN[int(st.stopien)] << " " << st.semestr << "\n";
        return ekr;
    }

    int main() {
        Student st1;
        wypelnij(st1,"marek", "markowski", Plec::KOBIETA, Stopien::I, 3);
        ZapiszDoP("a.txt",st1);
        Student st2;
        odczytajZP("a.txt", st2);
        cout << st2;
    }