- #include "stdafx.h"
- #include <iostream>
- #include <list>
- #include <string>
- #include <fstream>
- using namespace std;
- int main() {
- list<string> Nazwiska; // lista stringów, przechowuje ciąg znaków
- list<string> Imiona;
- list<int> Wieki; // lista intów, przechowuje liczby
- list<int> Wzrost;
- list<string>::iterator i;
- list<int>::iterator j;
- list<string>::iterator k;
- list<int>::iterator m;
- string NazwiskoTemp;
- string ImieTemp;
- int WiekTemp;
- int WzrostTemp;
- int mode = 1;
- ifstream plikin; // otwarcie pliku
- ofstream plikout; // zamknięcie pliku
- string NazwaPliku;
- while (mode != 6)
- {
- printf("nWybierz tryb:n");
- printf("1. Dodaj osoben");
- printf("2. Usun osoben");
- printf("3. Wyswietl listen");
- printf("4. Zapisz do plikun");
- printf("5. Wczytaj z plikun");
- printf("6. Wyjscie z programun");
- scanf("%d", &mode);
- if (mode == 1)
- {
- //dziala
- printf("Podaj nowe nazwisko:n");
- cin >> NazwiskoTemp;
- Nazwiska.push_back(NazwiskoTemp); // dodaje nazwisko na koniec listy
- printf("Podaj nowe Imie:n");
- cin >> ImieTemp;
- Imiona.push_back(ImieTemp); // dodaje imie na koniec listy
- printf("Podaj Wiek:n");
- cin >> WiekTemp;
- Wieki.push_back(WiekTemp); // dodaje wiek na koniec listy
- printf("Podaj Wzrost:n");
- cin >> WzrostTemp;
- Wzrost.push_back(WzrostTemp); // dodaje wzrost na koniec listy
- }
- else if (mode == 2)
- {
- i = Nazwiska.begin(); //
- j = Wieki.begin();
- k = Imiona.begin();
- m = Wzrost.begin();
- cout << "Podaj nazwisko do usuniecia:n";
- cin >> NazwiskoTemp; //wpisujemy nazwisko do usunięcia
- while (true)
- {
- if (*i == NazwiskoTemp) //jeżeli znajdzie podane nazwisko
- {
- Nazwiska.erase(i); //usuwa nazwisko
- Wieki.erase(j); // usuwa wiek
- Imiona.erase(k); // usuwa imie
- Wzrost.erase(m); // usuwa wzrost
- break; //usuwa tylko pierwszego napotkanego osobnika do usunięcia
- }
- else { ++i; ++j; ++k; ++m; } //przejscie o jeden dalej
- }
- }
- else if (mode == 3)
- {
- //dziala
- for (i = Nazwiska.begin(), j = Wieki.begin(), k = Imiona.begin(), m = Wzrost.begin(); i != Nazwiska.end(); ++i, ++j, ++k, ++m) //????????
- cout << "Nazwisko: " << *i << " Imie: " << *k << " Wiek: " << *j << " Wzrost: " << *m << endl; //wyświelta liste
- }
- else if (mode == 4)
- {
- printf("nPodaj nazwe pliku do zapisania(np. plik.txt)n");
- cin >> NazwaPliku; //podaje nazwe pliku
- plikout.open(NazwaPliku); //otwarcie pliku
- for (i = Nazwiska.begin(), j = Wieki.begin(), k = Imiona.begin(), m = Wzrost.begin(); i != Nazwiska.end(); ++i, ++j, ++k, ++m) //ustawianie iteratorow na poczatku list
- {
- if (i != Nazwiska.begin())
- plikout << endl << *i << "t" << *k << "t" << *j << "t" << *m; // Jeśli jest to pierwsze nazwisko, wpisz je bez znaku nowej linii do pliku
- else
- plikout << *i << "t" << *k << "t" << *j << "t" << *m; // Jeśli nie jest, wpisuj ze znakami nowej linii
- }
- plikout.close(); // zamkniecie pliku
- cout << endl << "Zapisano do pliku: " << NazwaPliku << endl; //wyswietlenie ze dane zostały zapisane do pliku o tej nazwie
- }
- else if (mode == 5)
- {
- string line;
- printf("nPodaj nazwe pliku do wczytania(np. plik.txt)n");
- cin >> NazwaPliku; // podaje nazwe pliku
- plikin.open(NazwaPliku); //otwarcie pliku
- if (plikin.is_open()) //sprawdzanie czy plik został otwarty
- {
- while (plikin.good())
- {
- plikin >> NazwiskoTemp >> ImieTemp >> WiekTemp >> WzrostTemp; //wypisanie listy od nazwiska do wzrostu
- Nazwiska.push_back(NazwiskoTemp);
- Imiona.push_back(ImieTemp);
- Wieki.push_back(WiekTemp);
- Wzrost.push_back(WzrostTemp);
- }
- plikin.close(); //zamknięcie pliku
- }
- else printf("nNie mozna otworzyc pliku");
- }
- else printf("nNierozpoznany tryb operacja.n");
- }
- getchar();
- return 0;
- }