Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include <vector>
- using namespace std;
- struct elemento {string categoria;vector<string>producto;};
- #define MAX_CAT 20
- #define MAX_PROD 10
- class menu{
- private :
- vector <elemento> elem;
- vector<elemento>::iterator it;
- char opciones()const;
- bool acategoria ();//anade categoria
- bool aproducto();//anade producto a categoria
- void lista();
- void salir();
- bool existe(string);//Existe categoria ?
- public :
- void run();
- };
- //----------------------------------------------------------------------
- void menu::run(){
- while (true){
- switch (opciones()){
- case 'a' :acategoria();break;
- case 'b' :aproducto();break;
- case 'c' :lista();break;
- case 'd' :salir();break;
- }
- }
- }
- //----------------------------------------------------------------------
- char menu::opciones()const{
- char sel;
- cout <<"a) Agregar categoria \n"
- "b) Agregar producto a una categoria \n"
- "c) Ver lista de productos \n"
- "d) Salir \n";
- cin>>sel;
- return sel;
- };
- //----------------------------------------------------------------------
- bool menu::acategoria(){//anade categoria
- elemento cat;
- if (elem.size()>=MAX_CAT){cout<<"ERROR MAX CAT !"<<MAX_CAT<<endl;return false;}
- cout<<"Categoria ? ";cin>>cat.categoria;
- if (!existe(cat.categoria)) {elem.push_back(cat);return true;}
- return false;
- }
- //----------------------------------------------------------------------
- bool menu::aproducto(){//anade producto a categoria
- string cat,prod;
- cout<<"\n En que categoria quieres anadir ? ";cin>>cat;
- for (it=elem.begin(); it != elem.end(); ++it){
- if ((*it).categoria==cat) {
- if ((*it).producto.size()>=MAX_PROD){cout<<"ERROR MAX PROD !"<<MAX_PROD<<endl;return false;}
- cout <<" \n producto ?";
- cin>>prod;
- ((*it).producto).push_back(prod);
- }
- }
- lista();
- }
- //----------------------------------------------------------------------
- void menu::lista(){
- for (it=elem.begin(); it != elem.end(); ++it){//categorias
- cout <<"\n categoria="<<(*it).categoria<<endl;
- for (auto it2 : (*it).producto){//Productos
- cout <<"\t \t producto ="<<it2<<endl;
- }
- }
- };
- //----------------------------------------------------------------------
- void menu::salir(){ exit (EXIT_SUCCESS);}
- //----------------------------------------------------------------------
- bool menu::existe(string s){
- for (it=elem.begin(); it != elem.end(); ++it){
- if ((*it).categoria==s){return true;}
- }
- return false;
- }
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- int main (){
- menu m;
- m.run();
- return 0;
- }
- /*
- Ahora redacte un código que muestre el siguiente menú de opciones al usuario:
- a) Agregar categoría
- b) Agregar producto a una categoría 20
- c) Ver lista de productos
- d) Salir
- - Tome en cuenta lo siguiente:
- Pueden agregarse hasta 20 categorías diferentes
- Cada categoría puede tener hasta 10 productos diferentes como máximo
- En el menú c) los diferentes productos deben listarse clasificados por categoría
- Cuando usuario elija una opción de menú, este se borra para mostrar el dialogo correspondiente
- - Al finalizar la acción del menú elegida, debe mostrarse nuevamente el menú
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement