pieniakoskar

Magazyn

Mar 19th, 2018
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. #include <iostream>
  2. #include "menu.h"
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. wczytaj::bazaPlyt p;
  9. wczytaj::baze(p);
  10. menu(p);
  11. return 0;
  12. }
  13.  
  14.  
  15. menu.cpp
  16.  
  17. #include "menu.h"
  18.  
  19. void menu(wczytaj::bazaPlyt &p){
  20. int op;
  21. do{
  22. std::cout << "Program do obslugi magazynu plyt" << std::endl
  23. << "Plyt w magazynie: " << wczytaj::rozmiarBazy(p) << ".\n" << std::endl
  24. << "1-Wyswietl plyty z zakresu." << std::endl
  25. << "2-Znajdz plyty o wymiarach." << std::endl
  26. << "3-Zakoncz program." << std::endl;
  27. std::cin >> op;
  28. switch (op){
  29. case 1: {
  30. std::cout << "Podaj zakres" << std::endl;
  31. zakres(p);
  32. break;
  33. }
  34. case 2: {
  35. std::cout << "Podaj wymiary" << std::endl;
  36. szukaj(p);
  37. break;
  38. }
  39. default: break;
  40. }
  41. }while(op!=3);
  42. }
  43. void zakres(wczytaj::bazaPlyt &p){
  44. //unsigned
  45. int pocz,kon;
  46. do{
  47. std::cout << "od:";
  48. std::cin >> pocz;
  49. std::cout << "do:";
  50. std::cin >> kon;
  51. }while(pocz<=0||kon<=0);
  52. if(pocz>kon)wyswietl::zakresPlyt(p,kon-1,pocz-1);
  53. wyswietl::zakresPlyt(p,pocz-1,kon-1);
  54. }
  55. void szukaj(wczytaj::bazaPlyt &p){
  56. float dlug,szer;
  57. std::cout << "szerokosc:";
  58. std::cin >> szer;
  59. std::cout << "dlugosc:";
  60. std::cin >> dlug;
  61. wyswietl::plytyOwymiarach(p,szer,dlug);
  62. }
  63.  
  64.  
  65. menu.h
  66.  
  67. #ifndef MENU_H_INCLUDED
  68. #define MENU_H_INCLUDED
  69.  
  70. #include "wyswietl.h"
  71.  
  72. void menu(wczytaj::bazaPlyt &p);
  73. void zakres(wczytaj::bazaPlyt &p);
  74. void szukaj(wczytaj::bazaPlyt &p);
  75.  
  76. #endif // MENU_H_INCLUDED
  77.  
  78.  
  79. wczytaj.cpp
  80.  
  81. #include "wczytaj.h"
  82.  
  83. namespace wczytaj {
  84.  
  85. int rozmiarBazy(bazaPlyt &p){
  86. return p.size();
  87. }
  88. void baze(bazaPlyt &p){
  89. std::fstream plik;
  90. plik.open("dane.txt");
  91. while(!plik.eof()){
  92. plyta Plyta;
  93. if(!isdigit(plik.peek())) {
  94. plik.ignore();
  95. continue;
  96. }
  97. plik >> Plyta.sz >> Plyta.dl >> Plyta.gr;
  98. p.push_back(Plyta);
  99. }
  100. plik.close();
  101. }
  102. plyta * infoOplycie(bazaPlyt &p,unsigned int nr){
  103. if(nr>=p.size())return NULL;
  104. return &(p[nr]);
  105. }
  106.  
  107. };
  108.  
  109.  
  110. wczytaj.h
  111.  
  112. #ifndef WCZYTAJ_H_INCLUDED
  113. #define WCZYTAJ_H_INCLUDED
  114.  
  115. #include <iostream>
  116. #include <fstream>
  117. #include <vector>
  118.  
  119. namespace wczytaj {
  120. struct plyta {//informacje o plycie
  121. float sz; //szerokosc
  122. float dl; //dlugosc
  123. float gr; //grubosc
  124. };
  125. typedef std::vector<plyta> bazaPlyt;
  126. int rozmiarBazy(bazaPlyt &p);
  127. void baze(bazaPlyt &p);
  128. plyta * infoOplycie(bazaPlyt &p,unsigned int nr);
  129. };
  130.  
  131. #endif // WCZYTAJ_H_INCLUDED
  132.  
  133.  
  134. wyswietl.cpp
  135.  
  136. #include "wyswietl.h"
  137.  
  138. namespace wyswietl {
  139. void plyte(wczytaj::bazaPlyt &p, unsigned int nr){
  140. wczytaj::plyta * Plyta = wczytaj::infoOplycie(p,nr);
  141. if(!Plyta){
  142. std::cout << "\tBlad! Plyty o indeksie " << nr+1 << " nie ma w bazie!" << std::endl;
  143. return;
  144. }
  145. //std::cout.fill('0');
  146. std::cout.setf(std::ios::fixed);
  147. std::cout.precision(1);
  148. std::cout << nr+1 << ". " << Plyta->sz << " x " << Plyta->dl << " x ";
  149. std::cout.precision(2);
  150. std::cout << Plyta->gr << std::endl;
  151. }
  152. void zakresPlyt(wczytaj::bazaPlyt &p, unsigned int poczatek, unsigned int koniec){
  153. for(;poczatek<=koniec;poczatek++)plyte(p,poczatek);
  154. std::cout << std::endl;
  155. }
  156. void plytyOwymiarach(wczytaj::bazaPlyt &p, float szerokosc, float dlugosc){
  157. bool e=0;
  158. for(unsigned int i=0;i<wczytaj::rozmiarBazy(p);i++){
  159. wczytaj::plyta * Plyta = wczytaj::infoOplycie(p,i);
  160. if((Plyta->sz==szerokosc) && (Plyta->dl==dlugosc)){
  161. if(!e)std::cout << "Znalezione plyty:" << std::endl;
  162. plyte(p,i);
  163. e=1;
  164. }
  165. }
  166. std::cout.precision(1);
  167. if(!e)std::cout << "\n\tBrak plyt o wymiarach " << szerokosc << " x " << dlugosc << std::endl;
  168. std::cout << std::endl;
  169. }
  170. };
  171.  
  172.  
  173. wyswietl.h
  174.  
  175. #ifndef WYSWIETL_H_INCLUDED
  176. #define WYSWIETL_H_INCLUDED
  177.  
  178. #include "wczytaj.h"
  179.  
  180. namespace wyswietl {
  181. void plyte(wczytaj::bazaPlyt &p, unsigned int nr);//wyswietla jedna plyte z bazy
  182. void zakresPlyt(wczytaj::bazaPlyt &p, unsigned int poczatek, unsigned int koniec);//wyswietla zakres plyt od do w bazie
  183. void plytyOwymiarach(wczytaj::bazaPlyt &p, float szerokosc, float dlugosc);//wyswietla plyty o podanej szerekosci i dlugosci
  184. };
  185.  
  186. #endif // WYSWIETL_H_INCLUDED
Add Comment
Please, Sign In to add comment