Ayuda por favor soy una NEOFITO


14 de Abril del 2016

Hola buenos dias estoy resolviendo un problema de programacion, y realmente soy nuevo y estoy aprendiendo y me gustaria contar con todo su apoyo.

el problema me pide lo siguiente:

redacte un código que muestre el siguiente menú de opciones al usuario:
a) Agregar categoría
b) Agregar producto a una categoría
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ú

hasta el momento este es mi codigo.... :(

#include 
#include 
#define MAXCAT 20
#define MAXPRO 10

using namespace std;
struct categorias{
	char nomCat[10];
	
};
 struct productos{
	char nomPro[10];
};
 
struct categorias newCategoria;
void menu();
void addCategoria(struct categorias addCat[MAXCAT]);
void addProducto(struct productos addPro[MAXPRO]);

int main (){
	
	 menu();

	system("cls");
	return 0;
    }

void menu(){
	char op;
	char vol;
	
	cout << "ttt###################################################"<<endl;
	cout << "ttt#-----------------------MENU----------------------#"<<endl;
	cout << "ttt# a) Agregar nueva Categoria                      #"<<endl;
	cout << "ttt# b) Agregar nuevo Producto                       #"<<endl;
	cout << "ttt# c) Mostrar Producto                             #"<<endl;
	cout << "ttt# d) Volver Menu                                  #"<<endl;
	cout << "ttt# e) Salir                                        #"<<endl;
	cout << "ttt###################################################"<<endl;
	cout << "ttn Introduzca su Opcion: ";
	cin >> op;

	
		switch(op){
			case 'a':
				cout << "Nueva Categoria" <<endl;
				addCategoria(newCategoria);
				cout << "nnn Preionar "d" para volver a menu: ";
				cin >> vol;
				system("cls");
				if (vol){
				 menu();   
				}
				    
			break;
				
			case 'b':
				cout << "Nuevo Producto"<<endl;
			break;
			case 'c':
				cout << "Mostrar Producto" <<endl;
			break;
			case 'd':
				menu();
			break;
			case 'e':
				exit(0); 
			break;

			default: 
				cout << "Tiene que elegir una Opcion del menu" <<endl;
				menu();
				exit(0);
				
		}
	}
	
	void addCategoria(struct categorias *addCat, struct categorias agregarCategoria[MAXCAT]){
		
		int numCategorias;
		int it;
		
		cout <<"Introduzca cuantas categorias nueva Agregara" << endl;
		cin >> numCategorias;
		
		addCat = (struct categorias *)malloc(MAXCAT*(sizeof(struct categorias)));
		
		if(addCat == NULL){
			cout << "Memoria insuficiente para almacenar" <<endl;
		}
		else {
			addCat = agregarCategoria;
			for(it = 0; it < numCategorias; it++){
			cout << "Introducir nombre de categoria: " <<endl;
			cin.getline(agregarCategoria[it].nomCat,10);
			
			
			addCat++;
			free(addCat);
			}
		}	
	
	}
	
	void addProducto(struct productos *addPro, struct productos agregarProducto[MAXPRO]){
		
		int numProducto;
		int it;
		
		cout <<"Introduzca cuantos productos Agregara" << endl;
		cin >> numProducto;
		
		addPro = (struct productos *)malloc(MAXPRO*(sizeof(struct productos)));
		
		if(addPro == NULL){
			cout << "Memoria insuficiente para almacenar" <<endl;
		}
		else {
			addPro = agregarProducto;
			for(it = 0; it < numProducto; it++){
				cout << "Introducir nombre de productos: " <<endl;
				cin.getline(agregarProducto[it].nomPro,10);
				
				addPro++;
				
				free(addPro);
			}
		}
	
		
	}