Advertisement
Guest User

Untitled

a guest
Apr 8th, 2017
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.78 KB | None | 0 0
  1.  
  2. #include "stdafx.h"
  3. #include <iostream>
  4. #include <fstream>
  5. #include <string>
  6. #include <cstdlib>
  7. #include <cctype>
  8. #include <stdlib.h>
  9. #include <crtdbg.h>
  10. #define _CRTDBG_MAP_ALLOC
  11. using namespace std;
  12.  
  13. void usuwanie(string*& x)
  14. {
  15. delete[] x;
  16. x = 0;
  17. }
  18.  
  19.  
  20. void menu()
  21. {
  22. cout << "==========MENU===========" << endl;
  23. cout << "1. Dopisanie nowej odzywki" << endl;
  24. cout << "2. Usuniecie ostatniej odzywki" << endl;
  25. cout << "3. Dopisywanie odzywek do pliku" << endl;
  26. cout << "4. Wyszukiwanie odzywek" << endl;
  27. cout << "5. Wypisanie aktualnych odzywek" << endl;
  28. cout << "6. Kuniec" << endl;
  29. }
  30.  
  31. string *startowa(ifstream& odczyt, string wers, int& rozmiar)
  32. {
  33. while (getline(odczyt, wers))
  34. rozmiar++;
  35. string *tablica = new string[rozmiar];
  36.  
  37. odczyt.clear();
  38. odczyt.seekg(0, ios::beg);
  39.  
  40. for (int i = 0; i < rozmiar; i++)
  41. {
  42. getline(odczyt, wers);
  43. tablica[i] = wers;
  44. }
  45.  
  46. return tablica;
  47.  
  48. }
  49.  
  50. string* dopisanie(string* tablica_2, int& rozmiar)
  51. {
  52. string odzywka;
  53. cout << "Wporwadz nowa odzywke: ";
  54. cin >> odzywka;
  55. string* tablica_3 = new string[rozmiar];
  56. tablica_3[rozmiar-1] = odzywka;
  57. for (int i = rozmiar-2, g = 0; i >= 0; i--, g++)
  58. tablica_3[g] = tablica_2[g];
  59.  
  60. return tablica_3;
  61. }
  62.  
  63. string* odpisanie(string* tablica, int& rozmiar)
  64. {
  65. string* tablica_3 = new string[rozmiar];
  66. for (int i = 0; i < rozmiar; i++)
  67. tablica_3[i] = tablica[i];
  68.  
  69. return tablica_3;
  70.  
  71. }
  72.  
  73. void wyszukiwanie(string* tablica, const int rozmiar)
  74. {
  75. string szukanie;
  76.  
  77. cout << "Wpisz, co chcesz znalezc: ";
  78. cin >> szukanie;
  79.  
  80. if (isdigit(szukanie[0]) || isdigit(szukanie[0] && szukanie[1]))
  81. {
  82. int indeks = stoi(szukanie);
  83.  
  84. if (indeks >= rozmiar) {
  85. cout << "Nie ma tylu odzywek. Sproboj jeszcze raz." << endl;
  86. }
  87. else cout << indeks << ". " << tablica[indeks-1] << endl;
  88. }
  89. else
  90. {
  91. unsigned first, niema = 1;
  92. for (int i = 0; i < rozmiar; i++)
  93. {
  94. first = tablica[i].find(szukanie);
  95. if (first != std::string::npos) {
  96. cout << "Odzywka nr " << i + 1 << ": " << tablica[i] << endl;
  97. niema = 2;
  98. }
  99. }
  100. if (niema == 1) cout << "Niestety nie znaleziono odzywki zawierajacej podana fraze" << endl;
  101. }
  102. }
  103.  
  104. void wyswietlenie(string*& tablica,const int rozmiar)
  105. {
  106. for (int i = 0; i < rozmiar; i++)
  107. cout << i + 1 << ". " << tablica[i] << endl;
  108. }
  109.  
  110. string* zapisywanie(ofstream& zapis, string* tablica, int& rozmiar)
  111. {
  112. string odzywka;
  113. cout << "Wprowadz nowa odzywke, ktora zostanie wpisana do pliku:" << endl;
  114. cin >> odzywka;
  115.  
  116. for (int i = 0; i < rozmiar; i++)
  117. zapis << tablica[i] << endl;
  118. zapis << odzywka;
  119.  
  120. string* nowa = new string[rozmiar + 1];
  121. for (int i = 0; i < rozmiar; i++)
  122. nowa[i] = tablica[i];
  123. nowa[rozmiar] = odzywka;
  124. rozmiar++;
  125.  
  126. return nowa;
  127.  
  128. }
  129.  
  130.  
  131. int main(int argc, char* argv[])
  132. {
  133. string wers;
  134. int rozmiar = 0, wybor = 1;
  135.  
  136. if (argc != 2) return 1;
  137. ifstream odczyt(argv[1]);
  138.  
  139. string *tablica = startowa(odczyt, wers, rozmiar);
  140.  
  141. while (wybor != 55)
  142. {
  143. menu();
  144. cin >> wybor;
  145. if (wybor == 1) {
  146. rozmiar++;
  147. tablica = dopisanie(tablica, rozmiar);
  148. }
  149. else if (wybor == 2) {
  150. rozmiar--;
  151. tablica = odpisanie(tablica, rozmiar);
  152. }
  153. else if (wybor == 3) {
  154. ofstream zapis(argv[1]);
  155. tablica = zapisywanie(zapis, tablica, rozmiar);
  156. zapis.close();
  157. }
  158. else if (wybor == 4) {
  159. cout << rozmiar << endl;
  160. wyszukiwanie(tablica, rozmiar);
  161. }
  162. else if (wybor == 5) wyswietlenie(tablica, rozmiar);
  163. else if (wybor == 6) wybor = 55;
  164. else cout << "Bledny wybor. Sproboj jeszcze raz." << endl;
  165. system("pause");
  166. system("cls");
  167. }
  168.  
  169. usuwanie(tablica);
  170. getchar();
  171. _CrtDumpMemoryLeaks();
  172. _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
  173. _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG);
  174. return 0;
  175. }
  176. /*
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement