Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <cstdlib>
- #include <cctype>
- #include <stdlib.h>
- #include <crtdbg.h>
- #define _CRTDBG_MAP_ALLOC
- using namespace std;
- void usuwanie(string*& x)
- {
- delete[] x;
- x = 0;
- }
- void menu()
- {
- cout << "==========MENU===========" << endl;
- cout << "1. Dopisanie nowej odzywki" << endl;
- cout << "2. Usuniecie ostatniej odzywki" << endl;
- cout << "3. Dopisywanie odzywek do pliku" << endl;
- cout << "4. Wyszukiwanie odzywek" << endl;
- cout << "5. Wypisanie aktualnych odzywek" << endl;
- cout << "6. Kuniec" << endl;
- }
- string *startowa(ifstream& odczyt, string wers, int& rozmiar)
- {
- while (getline(odczyt, wers))
- rozmiar++;
- string *tablica = new string[rozmiar];
- odczyt.clear();
- odczyt.seekg(0, ios::beg);
- for (int i = 0; i < rozmiar; i++)
- {
- getline(odczyt, wers);
- tablica[i] = wers;
- }
- return tablica;
- }
- string* dopisanie(string* tablica_2, int& rozmiar)
- {
- string odzywka;
- cout << "Wporwadz nowa odzywke: ";
- cin >> odzywka;
- string* tablica_3 = new string[rozmiar];
- tablica_3[rozmiar-1] = odzywka;
- for (int i = rozmiar-2, g = 0; i >= 0; i--, g++)
- tablica_3[g] = tablica_2[g];
- return tablica_3;
- }
- string* odpisanie(string* tablica, int& rozmiar)
- {
- string* tablica_3 = new string[rozmiar];
- for (int i = 0; i < rozmiar; i++)
- tablica_3[i] = tablica[i];
- return tablica_3;
- }
- void wyszukiwanie(string* tablica, const int rozmiar)
- {
- string szukanie;
- cout << "Wpisz, co chcesz znalezc: ";
- cin >> szukanie;
- if (isdigit(szukanie[0]) || isdigit(szukanie[0] && szukanie[1]))
- {
- int indeks = stoi(szukanie);
- if (indeks >= rozmiar) {
- cout << "Nie ma tylu odzywek. Sproboj jeszcze raz." << endl;
- }
- else cout << indeks << ". " << tablica[indeks-1] << endl;
- }
- else
- {
- unsigned first, niema = 1;
- for (int i = 0; i < rozmiar; i++)
- {
- first = tablica[i].find(szukanie);
- if (first != std::string::npos) {
- cout << "Odzywka nr " << i + 1 << ": " << tablica[i] << endl;
- niema = 2;
- }
- }
- if (niema == 1) cout << "Niestety nie znaleziono odzywki zawierajacej podana fraze" << endl;
- }
- }
- void wyswietlenie(string*& tablica,const int rozmiar)
- {
- for (int i = 0; i < rozmiar; i++)
- cout << i + 1 << ". " << tablica[i] << endl;
- }
- string* zapisywanie(ofstream& zapis, string* tablica, int& rozmiar)
- {
- string odzywka;
- cout << "Wprowadz nowa odzywke, ktora zostanie wpisana do pliku:" << endl;
- cin >> odzywka;
- for (int i = 0; i < rozmiar; i++)
- zapis << tablica[i] << endl;
- zapis << odzywka;
- string* nowa = new string[rozmiar + 1];
- for (int i = 0; i < rozmiar; i++)
- nowa[i] = tablica[i];
- nowa[rozmiar] = odzywka;
- rozmiar++;
- return nowa;
- }
- int main(int argc, char* argv[])
- {
- string wers;
- int rozmiar = 0, wybor = 1;
- if (argc != 2) return 1;
- ifstream odczyt(argv[1]);
- string *tablica = startowa(odczyt, wers, rozmiar);
- while (wybor != 55)
- {
- menu();
- cin >> wybor;
- if (wybor == 1) {
- rozmiar++;
- tablica = dopisanie(tablica, rozmiar);
- }
- else if (wybor == 2) {
- rozmiar--;
- tablica = odpisanie(tablica, rozmiar);
- }
- else if (wybor == 3) {
- ofstream zapis(argv[1]);
- tablica = zapisywanie(zapis, tablica, rozmiar);
- zapis.close();
- }
- else if (wybor == 4) {
- cout << rozmiar << endl;
- wyszukiwanie(tablica, rozmiar);
- }
- else if (wybor == 5) wyswietlenie(tablica, rozmiar);
- else if (wybor == 6) wybor = 55;
- else cout << "Bledny wybor. Sproboj jeszcze raz." << endl;
- system("pause");
- system("cls");
- }
- usuwanie(tablica);
- getchar();
- _CrtDumpMemoryLeaks();
- _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
- _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG);
- return 0;
- }
- /*
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement