Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* 1.txt
- 3
- Pirmasis Petras *
- Antrutė Jurgita *
- Trečiasis Algis *
- 2
- Taiklioji Akis Tikyba
- Smalsuolė Marceliukė Etika
- 10
- Baravykas Algis Etika
- Baravykaitė Marijona Tikyba
- Lepšius Martynas Tikyba
- Pirmasis Petras Etika
- Lepšytė Barbora Etika
- Eglaitė Ramunė Etika
- Antrutė Jurgita Tikyba
- Liepaitė Rita Tikyba
- Trečiasis Algis Tikyba
- Gaurius Svajūnas Etika
- */
- #include <iostream>
- #include <iomanip>
- #include <fstream>
- using namespace std;
- const char duomF[] = "1.txt";
- const char rezF[] = "rez1.txt";
- const int CMax = 30;
- const int CPav = 25;
- // ----------------------------------------------------------------------------------------------
- struct Mokinys {
- string pav; // Pavarde ir vardas
- string dalykas; // Pasirinkto dalyko pavadinimas
- };
- // ----------------------------------------------------------------------------------------------
- void SkaitytiPav(ifstream &df, Mokinys A[], int &n)
- {
- char eil[CPav+1];
- df >> n;
- df.ignore(80, '\n');
- for(int i = 0; i < n; i++)
- {
- df.get(eil, CPav); // Nuskaitomas vardas ir pavarde
- A[i].pav = eil; // Vardas ir pavarde nukeliami y masyva
- A[i].dalykas = ""; // Dalykas nenurodytas, y masyva nieko nerasome
- df.ignore(80, '\n');
- }
- }
- void SkaitytiKlase(ifstream &df, Mokinys A[], int &n)
- {
- char eil[CPav+1];
- df >> n;
- df.ignore(80, '\n');
- for(int i = 0; i < n; i++)
- {
- df.get(eil, CPav); // Nuskaitomas vardas ir pavarde
- A[i].pav = eil; // Vardas ir pavarde nukeliami y masyva
- df >> ws; // Praleidziami tarpo simboliai
- getline(df, A[i].dalykas); // Nuskaitomas dalyko pavadinimas iki eilutes pabaigos
- }
- }
- void Spausdinti (Mokinys A[], int n, string eil)
- {
- ofstream rf(rezF, ios::app); // Pildomas failas
- rf << eil << endl;
- rf << "---------------------------------" << endl;
- rf << "Mokinys Dalykas " << endl;
- rf << "---------------------------------" << endl;
- for(int i = 0; i < n; i++) rf << setw(20) << left
- << A[i].pav << " " << A[i].dalykas << endl;
- rf << "---------------------------------" << endl << endl;
- rf.close();
- }
- void Trinti(Mokinys B[], int m, Mokinys A[], int &n)
- {
- for (int i = 0; i < m; i++) // Paziurimas salinamuju sarasas
- {
- for (int j = 0; j < n; j++) // Ieskoma klases sarase
- {
- if (B[i].pav == A[j].pav) // Lyginamos pavardziu ir vardu eilutes
- {
- A[j] = A[n-1]; // Salinamos reikesmes vietoje irasome paskutine masyvo reiksme
- n--; // Sumazinamas klases saraso reiksmiu skaicius
- j = n; // Vidinio ciklo darbas nutraukiamas
- }
- }}}
- void Papildyti(Mokinys C[], int k, Mokinys A[], int &n)
- {
- for (int i = 0; i < k; i++)
- {
- A[n] = C[i];
- n++;
- }
- }
- void Rikiuoti(Mokinys A[], int n)
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = i+1; j< n; j++)
- {
- if (A[j].pav < A[i].pav)
- {
- Mokinys sp = A[i];
- A[i] = A[j];
- A[j] = sp;
- }
- }}}
- void Atrinkti(Mokinys A[], int n, string dalykas, Mokinys B[], int &m)
- {
- m = 0;
- for (int i = 0; i < n; i++)
- {
- if (A[i].dalykas == dalykas)
- {
- B[m] = A[i];
- m++;
- }
- }}
- // ----------------------------------------------------------------------------------------------
- int main()
- {
- Mokinys Klase[CMax]; int n; // Klases mokiniu sarasas
- Mokinys Ate[CMax]; int m; // Isvykusiuju sarasas
- Mokinys Nauji[CMax]; int k; // Naujoku sarasas
- ofstream rf(rezF); rf.close();
- ifstream df(duomF);
- SkaitytiPav(df, Ate, m);
- SkaitytiKlase(df, Nauji, k);
- SkaitytiKlase(df, Klase, n);
- df.close();
- Trinti(Ate, m, Klase, n);
- Papildyti(Nauji, k, Klase, n);
- Rikiuoti(Klase, n);
- Spausdinti(Klase, n, "Klases sarasas");
- Atrinkti(Klase, n, "Etika", Ate, m);
- Spausdinti(Ate, m, "Etika pasirinkusieji mokiniai");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement