Advertisement
AntonioVillanueva

Categorias / productos

Apr 13th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.35 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>  
  3. #include <vector>
  4. using namespace std;
  5.  
  6. struct elemento {string categoria;vector<string>producto;};
  7. #define MAX_CAT 20
  8. #define MAX_PROD 10
  9.  
  10. class menu{
  11.     private :
  12.     vector <elemento> elem;
  13.     vector<elemento>::iterator it;
  14.  
  15.     char opciones()const;
  16.     bool acategoria ();//anade categoria
  17.     bool aproducto();//anade producto a categoria
  18.     void lista();
  19.     void salir();
  20.    
  21.     bool existe(string);//Existe categoria ?
  22.  
  23.     public :
  24.     void run();
  25.  
  26. };
  27. //----------------------------------------------------------------------
  28.     void menu::run(){
  29.         while (true){
  30.         switch (opciones()){
  31.             case 'a' :acategoria();break;
  32.             case 'b' :aproducto();break;
  33.             case 'c' :lista();break;
  34.             case 'd' :salir();break;           
  35.         }
  36.     }
  37. }
  38. //----------------------------------------------------------------------
  39.     char menu::opciones()const{
  40.         char sel;
  41.         cout <<"a) Agregar categoria \n"
  42.                 "b) Agregar producto a una categoria \n"
  43.                 "c) Ver lista de productos \n"
  44.                 "d) Salir \n";
  45.         cin>>sel;
  46.         return sel;
  47.                
  48.         };
  49. //----------------------------------------------------------------------
  50.     bool menu::acategoria(){//anade categoria
  51.         elemento cat;
  52.         if (elem.size()>=MAX_CAT){cout<<"ERROR MAX CAT !"<<MAX_CAT<<endl;return false;}
  53.         cout<<"Categoria ? ";cin>>cat.categoria;
  54.         if (!existe(cat.categoria)) {elem.push_back(cat);return true;}
  55.  
  56.         return false;
  57.  
  58.     }
  59. //----------------------------------------------------------------------
  60.     bool menu::aproducto(){//anade producto a categoria
  61.         string cat,prod;   
  62.         cout<<"\n En que categoria quieres anadir ? ";cin>>cat;
  63.        
  64.         for (it=elem.begin(); it != elem.end(); ++it){
  65.             if ((*it).categoria==cat) {
  66.                 if ((*it).producto.size()>=MAX_PROD){cout<<"ERROR MAX PROD !"<<MAX_PROD<<endl;return false;}
  67.                 cout <<" \n producto ?";
  68.                 cin>>prod;
  69.                 ((*it).producto).push_back(prod);
  70.                 }
  71.         }
  72.         lista();
  73.     }
  74. //----------------------------------------------------------------------
  75.     void menu::lista(){
  76.  
  77.         for (it=elem.begin(); it != elem.end(); ++it){//categorias
  78.             cout <<"\n categoria="<<(*it).categoria<<endl;
  79.            
  80.             for (auto it2 : (*it).producto){//Productos
  81.                 cout <<"\t \t producto ="<<it2<<endl;
  82.             }  
  83.         }      
  84.     };
  85. //----------------------------------------------------------------------
  86.     void menu::salir(){ exit (EXIT_SUCCESS);}
  87. //----------------------------------------------------------------------
  88.     bool menu::existe(string s){
  89.    
  90.         for (it=elem.begin(); it != elem.end(); ++it){
  91.             if ((*it).categoria==s){return true;}
  92.            
  93.         }
  94.             return false;
  95.     }
  96. //----------------------------------------------------------------------
  97. //----------------------------------------------------------------------
  98. int main (){
  99.     menu m;
  100.     m.run();
  101.  
  102. return 0;
  103. }
  104. /*
  105. Ahora redacte un código que muestre el siguiente menú de opciones al usuario:
  106. a) Agregar categoría
  107. b) Agregar producto a una categoría 20
  108. c) Ver lista de productos
  109. d) Salir
  110. - Tome en cuenta lo siguiente:
  111.  
  112.     Pueden agregarse hasta 20 categorías diferentes
  113.     Cada categoría puede tener hasta 10 productos diferentes como máximo
  114.     En el menú c) los diferentes productos deben listarse clasificados por categoría
  115.     Cuando usuario elija una opción de menú, este se borra para mostrar el dialogo correspondiente
  116.  
  117. - Al finalizar la acción del menú elegida, debe mostrarse nuevamente el menú
  118. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement