Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "menu.h"
- using namespace std;
- int main()
- {
- wczytaj::bazaPlyt p;
- wczytaj::baze(p);
- menu(p);
- return 0;
- }
- menu.cpp
- #include "menu.h"
- void menu(wczytaj::bazaPlyt &p){
- int op;
- do{
- std::cout << "Program do obslugi magazynu plyt" << std::endl
- << "Plyt w magazynie: " << wczytaj::rozmiarBazy(p) << ".\n" << std::endl
- << "1-Wyswietl plyty z zakresu." << std::endl
- << "2-Znajdz plyty o wymiarach." << std::endl
- << "3-Zakoncz program." << std::endl;
- std::cin >> op;
- switch (op){
- case 1: {
- std::cout << "Podaj zakres" << std::endl;
- zakres(p);
- break;
- }
- case 2: {
- std::cout << "Podaj wymiary" << std::endl;
- szukaj(p);
- break;
- }
- default: break;
- }
- }while(op!=3);
- }
- void zakres(wczytaj::bazaPlyt &p){
- //unsigned
- int pocz,kon;
- do{
- std::cout << "od:";
- std::cin >> pocz;
- std::cout << "do:";
- std::cin >> kon;
- }while(pocz<=0||kon<=0);
- if(pocz>kon)wyswietl::zakresPlyt(p,kon-1,pocz-1);
- wyswietl::zakresPlyt(p,pocz-1,kon-1);
- }
- void szukaj(wczytaj::bazaPlyt &p){
- float dlug,szer;
- std::cout << "szerokosc:";
- std::cin >> szer;
- std::cout << "dlugosc:";
- std::cin >> dlug;
- wyswietl::plytyOwymiarach(p,szer,dlug);
- }
- menu.h
- #ifndef MENU_H_INCLUDED
- #define MENU_H_INCLUDED
- #include "wyswietl.h"
- void menu(wczytaj::bazaPlyt &p);
- void zakres(wczytaj::bazaPlyt &p);
- void szukaj(wczytaj::bazaPlyt &p);
- #endif // MENU_H_INCLUDED
- wczytaj.cpp
- #include "wczytaj.h"
- namespace wczytaj {
- int rozmiarBazy(bazaPlyt &p){
- return p.size();
- }
- void baze(bazaPlyt &p){
- std::fstream plik;
- plik.open("dane.txt");
- while(!plik.eof()){
- plyta Plyta;
- if(!isdigit(plik.peek())) {
- plik.ignore();
- continue;
- }
- plik >> Plyta.sz >> Plyta.dl >> Plyta.gr;
- p.push_back(Plyta);
- }
- plik.close();
- }
- plyta * infoOplycie(bazaPlyt &p,unsigned int nr){
- if(nr>=p.size())return NULL;
- return &(p[nr]);
- }
- };
- wczytaj.h
- #ifndef WCZYTAJ_H_INCLUDED
- #define WCZYTAJ_H_INCLUDED
- #include <iostream>
- #include <fstream>
- #include <vector>
- namespace wczytaj {
- struct plyta {//informacje o plycie
- float sz; //szerokosc
- float dl; //dlugosc
- float gr; //grubosc
- };
- typedef std::vector<plyta> bazaPlyt;
- int rozmiarBazy(bazaPlyt &p);
- void baze(bazaPlyt &p);
- plyta * infoOplycie(bazaPlyt &p,unsigned int nr);
- };
- #endif // WCZYTAJ_H_INCLUDED
- wyswietl.cpp
- #include "wyswietl.h"
- namespace wyswietl {
- void plyte(wczytaj::bazaPlyt &p, unsigned int nr){
- wczytaj::plyta * Plyta = wczytaj::infoOplycie(p,nr);
- if(!Plyta){
- std::cout << "\tBlad! Plyty o indeksie " << nr+1 << " nie ma w bazie!" << std::endl;
- return;
- }
- //std::cout.fill('0');
- std::cout.setf(std::ios::fixed);
- std::cout.precision(1);
- std::cout << nr+1 << ". " << Plyta->sz << " x " << Plyta->dl << " x ";
- std::cout.precision(2);
- std::cout << Plyta->gr << std::endl;
- }
- void zakresPlyt(wczytaj::bazaPlyt &p, unsigned int poczatek, unsigned int koniec){
- for(;poczatek<=koniec;poczatek++)plyte(p,poczatek);
- std::cout << std::endl;
- }
- void plytyOwymiarach(wczytaj::bazaPlyt &p, float szerokosc, float dlugosc){
- bool e=0;
- for(unsigned int i=0;i<wczytaj::rozmiarBazy(p);i++){
- wczytaj::plyta * Plyta = wczytaj::infoOplycie(p,i);
- if((Plyta->sz==szerokosc) && (Plyta->dl==dlugosc)){
- if(!e)std::cout << "Znalezione plyty:" << std::endl;
- plyte(p,i);
- e=1;
- }
- }
- std::cout.precision(1);
- if(!e)std::cout << "\n\tBrak plyt o wymiarach " << szerokosc << " x " << dlugosc << std::endl;
- std::cout << std::endl;
- }
- };
- wyswietl.h
- #ifndef WYSWIETL_H_INCLUDED
- #define WYSWIETL_H_INCLUDED
- #include "wczytaj.h"
- namespace wyswietl {
- void plyte(wczytaj::bazaPlyt &p, unsigned int nr);//wyswietla jedna plyte z bazy
- void zakresPlyt(wczytaj::bazaPlyt &p, unsigned int poczatek, unsigned int koniec);//wyswietla zakres plyt od do w bazie
- void plytyOwymiarach(wczytaj::bazaPlyt &p, float szerokosc, float dlugosc);//wyswietla plyty o podanej szerekosci i dlugosci
- };
- #endif // WYSWIETL_H_INCLUDED
Add Comment
Please, Sign In to add comment