Ayuda urgente!!! alguien ke se apiade de mi lo mas pronto posible

Cintia
01 de Junio del 2004
Hola tengo ke entregar un programa para el proximo viernes (4 de julio) pero no se como hacerle... es un menu con 4 opciones y de cada opcion se despliega un submenu, mi pregunta es... como hago para jalr los submenus dentro de un ciclo do-while... porfa ayudenme es para pasar mi curso de programacion

juan esteban ospina
01 de Junio del 2004
BUSCA AQUI LO QUE NECESITAN (SON UNAS POCAS 5OO LINEAS DE CODIGO PERO DE AHI PUEDES SACAR LO QUE NECESITAS)

#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include<iostream.h>



//Variables basicas de la aplicaci¢n.
int opcion = 0;
int i, k;
int x, y;
int ventas[2][12];
float valores[2][2];
float totales[2][12];


void menu_consultas();
void llenar_ventas();
void mostrar_matrices();
void llenar_valores();
void mostrar_total_ventas_mes();
void mostrar_total_ventas_ano();
void mostrar_total_costos_ano();
void mostrar_mes_mayor_venta();
void cuadro1();

void generar_totales();

float total_ventas_ano();
l a¤o. Suma todos los elementos de la fila 1*/
float total_costos_ano();

int mes_mayor_venta();

void ordenar_burbuja(float [], int [], int tamano);

char* mostrar_mes(int);



void main() {

while(opcion != '6') {
textbackground(BLUE);
textcolor(WHITE);
clrscr();
gotoxy(22,4);
cprintf("===================================");
gotoxy(22,5);
cprintf("| MUNDO BAJO |");
gotoxy(22,6);
cprintf("===================================");
gotoxy(30,10);
cprintf("MENU PRINCIPAL");
gotoxy(20,12);
cprintf("1. INGRESAR VENTAS EN EL A¥O");
gotoxy(20,14);
cprintf("2. INGRESAR PRECIOS");
gotoxy(20,16);
cprintf("3. GENERAR MATRIZ DE TOTALES");
gotoxy(20,18);
cprintf("4. MOSTRAR MATRICES");
gotoxy(20,20);
cprintf("5. CONSULTAS");
gotoxy(20,22);
cprintf("6. SALIR DEL PROGRAMA");
gotoxy(20,25);
cprintf("POR FAVOR DIGITE SU OPCION: _b");
switch (opcion = getch()) {
case '1':
llenar_ventas();
opcion = 0;
break;
case '2':
llenar_valores();
opcion = 0;
break;
case '3':
generar_totales();
opcion = 0;
break;
case '4':
mostrar_matrices();
opcion = 0;
break;
case '5':
menu_consultas();
opcion = 0;
break;
}
} //fin del while
} //fin de main


/ opcion = 0;
//Hace un ciclo infinito, hasta que el usuario escoja salir.
while(opcion != '5') {
textbackground(BLUE);
textcolor(WHITE);
clrscr();
gotoxy(22,4);
cprintf("===================================");
gotoxy(22,5);
cprintf("| MUNDO BAJO |");
gotoxy(22,6);
cprintf("===================================");
gotoxy(30,10);
cprintf("MENU CONSULTAS");
gotoxy(20,12);
cprintf("1. TOTAL DE VENTAS EN CADA MES");
gotoxy(20,14);
cprintf("2. TOTAL DE VENTAS EN EL A¥O");
gotoxy(20,16);
cprintf("3. TOTAL DE COSTOS EN EL A¥O");
gotoxy(20,18);
cprintf("4. MES EN QUE SE OBTUVO LA MAYOR VENTA");
gotoxy(20,20);
cprintf("5. REGRESAR AL MENU PRINCIPAL");
gotoxy(20,23);
cprintf("POR FAVOR DIGITE SU OPCION: _b");
switch (opcion = getch()) {
case '1':
mostrar_total_ventas_mes();
opcion = 0;
break;
case '2':
mostrar_total_ventas_ano();
opcion = 0;
break;
case '3':
mostrar_total_costos_ano();
opcion = 0;
break;
case '4':
mostrar_mes_mayor_venta();
opcion = 0;
break;
}
} //fin del while
} //fin de menu_consultas


void llenar_ventas() {
clrscr();
int o=4;
cuadro1();
//Ciclo para llenar el lado de las refrigeradoras
for (i = 0; i < 12; i++)
{
gotoxy(14+o,6);
o=o+5;
scanf("%d", &ventas[0][i]);
}
o=4;
for (i = 0; i < 12; i++) {
gotoxy(14+o,6+2);
o=o+5;
scanf("%d", &ventas[1][i]);
}
} //fin de llenar_matriz;

void llenar_valores() {
// valores[0][0] = 445000.00;valores[0][1] = 250000.00;
// valores[1][0] = 310000.00;valores[1][1] = 180000.00;
clrscr();
gotoxy(30, 10);
printf("PRECIOS DE VENTA Y COSTOS");
gotoxy(20, 14);
cprintf("PRECIO DE VENTA DE REFRIGERADORES: ______bbbbbb");
scanf("%f", &valores[0][0]);
gotoxy(20, 16);
cprintf("PRECIO DE VENTA DE CONGELADORES: ______bbbbbb");
scanf("%f", &valores[0][1]);
gotoxy(20, 18);
cprintf("COSTO DE REFRIGERADORES: ______bbbbbb");
scanf("%f", &valores[1][0]);
gotoxy(20, 20);
cprintf("COSTO DE CONGELADORES: ______bbbbbb");
scanf("%f", &valores[1][1]);
} //fin de llenar_valores;


void mostrar_matrices() {
clrscr();
gotoxy(30,2);
cprintf("MOSTRAR MATRICES");
gotoxy(30,5);
cprintf("MATRIZ DE VENTAS");
//Ciclo para mostrar la matriz de ventas
gotoxy(5,8);
cprintf("REFRIGERADORES |");
x = 21;
gotoxy(x-1,7);
cprintf("|"); //Para mostrar el comienzo de la fila que muestra los meses
for (i = 0; i < 12; i++) {
gotoxy(x,7);
char* c = mostrar_mes(i+1);
//Para que el mes salga de solamente 3 letras, muestro una por
//una las letras iniciales de este. si lo hago normal, entonces
//el mes sale muy largo y se desordena en la pantalla.
cprintf("%c%c%c|", c[0],c[1],c[2]);
gotoxy(x,8);
cprintf(" %2d|",ventas[0][i]);
delay(10); //para que vaya apareciendo con un efecto retardante.
x+=4;
}
y+=1;
gotoxy(5,9);
cprintf(" CONGELADORES |");
x = 21;
for (i = 0; i < 12; i++) {
gotoxy(x,9);
cprintf(" %2d|",ventas[1][i]);
delay(10); //para que vaya apareciendo con un efecto retardante.
x+=4;
}
//se muestra la matriz de precios y costos
gotoxy(30,12);
cprintf("MATRIZ DE VALORES");
gotoxy(24,14);
cprintf("| REFRIGERADORES | CONGELADORES |");
gotoxy(7,15);
cprintf("PRECIOS DE VENTA | %6.2f | %6.2f |", valores[0][0], valores[0][1]);
gotoxy(7,16);
cprintf(" COSTOS | %6.2f | %6.2f |", valores[1][0], valores[1][1]);

//Se muestra la matriz de totales
gotoxy(20,19);
cprintf("MATRIZ DE TOTALES (EN MILES DE PESOS)");
gotoxy(1,22);
cprintf("VENTAS |");
x = 9;
gotoxy(x-1,21);
cprintf("|"); //Para mostrar el comienzo de la fila que muestra los meses
for (i = 0; i < 12; i++) {
gotoxy(x,21);
char* c = mostrar_mes(i+1);
//Para que el mes salga de solamente 3 letras, muestro una por
//una las letras iniciales de este. si lo hago normal, entonces
//el mes sale muy largo y se desordena en la pantalla.
cprintf(" %c%c%c |", c[0],c[1],c[2]);
gotoxy(x,22);
cprintf("%5.0f|",totales[0][i]/1000.00);
delay(10); //para que vaya apareciendo con un efecto retardante.
x+=6;
}
y+=1;
gotoxy(1,23);
cprintf("COSTOS |");
x = 9;
for (i = 0; i < 12; i++) {
gotoxy(x,23);
cprintf("%5.0f|",totales[1][i]/1000.0);
delay(10); //para que vaya apareciendo con un efecto retardante.
x+=6;
}
//Mensaje para pausar la pantalla.
gotoxy(25,25);
cprintf("PRESIONE UNA TECLA PARA REGRESAR...");
opcion = getch(); //Para hacer una pausa en la pantalla.
} //fin de mostrar_matrices


void mostrar_total_ventas_mes() {
float total[12]; //en este vector almacenamos los totales.
int meses[12]; //para mostrar los meses con sus ventas ordenados.
//Copio en total las ventas de cada mes para luego organizarlo.
//Ademas Genero los meses.
for (i = 0; i < 12; i++) {
meses[i] = i+1;
total[i] = totales[0][i];
}
ordenar_burbuja(total, meses, 12); //Para que organize el vector de ventas.
clrscr();
gotoxy(15,5);
cprintf("TOTAL DE VENTAS DE CADA MES (EN MILES DE PESOS)");
gotoxy(30,10);
//Ciclo para mostrar el vector
x = 4;
for (i = 0; i < 12; i++) {
gotoxy(x,12);
char* c = mostrar_mes(meses[i]);
//Para que el mes salga de solamente 3 letras, muestro una por
//una las letras iniciales de este. si lo hago normal, entonces
//el mes sale muy largo y se desordena en la pantalla.
cprintf("| %c%c%c |", c[0],c[1],c[2]);
gotoxy(x,13);
cprintf("|%5.0f|",total[i] / 1000.00);
delay(10); //para que vaya apareciendo con un efecto retardante.
x+=6;
}
//Mensaje para pausar la pantalla.
gotoxy(25,25);
cprintf("PRESIONE UNA TECLA PARA REGRESAR...");
opcion = getch(); //Para hacer una pausa en la pantalla.
}// fin de mostrar_total_ventas_mes


void mostrar_total_ventas_ano() {
float total = 0.0;
clrscr();
gotoxy(27,5);
cprintf("TOTAL DE VENTAS EN EL A¥O");
gotoxy(15, 12);
total = total_ventas_ano();
printf("EL TOTAL DE VENTAS EN EL A¥O ES DE: %6.2f", total);

//Mensaje para pausar la pantalla.
gotoxy(25,25);
cprintf("PRESIONE UNA TECLA PARA REGRESAR...");
opcion = getch(); //Para hacer una pausa en la pantalla.
}// fin de mostrar_total_ventas_mes


void mostrar_total_costos_ano() {
float total;
clrscr();
gotoxy(27,5);
cprintf("TOTAL DE COSTOS EN EL A¥O");
gotoxy(15, 12);
total = total_costos_ano();
printf("EL TOTAL DE COSTOS EN EL A¥O ES DE: %6.2f", total);

//Mensaje para pausar la pantalla.
gotoxy(25,25);
cprintf("PRESIONE UNA TECLA PARA REGRESAR...");
opcion = getch(); //Para hacer una pausa en la pantalla.
}// fin de mostrar_total_ventas_mes


void mostrar_mes_mayor_venta() {
int mes;
clrscr();
gotoxy(27,5);
cprintf("MES DE MAYOR VENTA");
gotoxy(8, 12);
mes = mes_mayor_venta();
printf("EL MES DE MAYOR VENTA FUE %s CON UN TOTAL DE: %6.2f", mostrar_mes(mes), totales[0][mes-1]);

//Mensaje para pausar la pantalla.
gotoxy(25,25);
cprintf("PRESIONE UNA TECLA PARA REGRESAR...");
opcion = getch(); //Para hacer una pausa en la pantalla.
}// fin de mostrar_total_ventas_mes


void generar_totales() {
int w; //Necesaria para la multiplicacion, porque se utilizan 3 ciclos for
float total; //para acumular el total antes de mandarlo a la matriz de totales.
for (w = 0; w < 12; w++) {
for (i = 0; i < 2; i++) {
total = 0.0;
for (k = 0; k < 2; k++) {
total = total + (valores[i][k] * ventas[k][w]);
}
totales[i][w] = total;
}
}
clrscr();
gotoxy(32, 15);
cprintf("MATRIZ GENERADA");
//Mensaje para pausar la pantalla.
gotoxy(25,25);
cprintf("PRESIONE UNA TECLA PARA REGRESAR...");
getch();

} //Fin de generar_totales


float total_ventas_ano() {
float suma = 0.0;
for (i = 0; i < 12; i++) {
suma = suma + totales[0][i];
}
return suma;
} //fin de total_ventas_ano

float total_costos_ano() {
float suma = 0.0;
for (i = 0; i < 12; i++) {
suma = suma + totales[1][i];
}
return suma;
} //fin de total_costos_ano


int mes_mayor_venta() {
int mes = 0;
//este ciclo lo comienzo en 1 porque inicialemte se valida el
//primer mes con el resto de meses.
for (i = 1; i < 12; i++) {
if (totales[0][i] > totales[0][mes]) {
mes = i;
}
}
return mes + 1;
} //fin de mes_mayor_venta


void ordenar_burbuja(float vector[], int posiciones[], int tamano) {
float aux;
int auxPos;
for(k=1; k<tamano; k++) {
for(i=0;i < tamano-k;i++) {
if (vector[i] > vector[i+1]) {
//Ordenando las Posiciones
auxPos = posiciones[i];
posiciones[i] = posiciones[i+1];
posiciones[i+1] = auxPos;
//Ordenando el Vector
aux=vector[i];
vector[i]=vector[i+1];
vector[i+1]=aux;
}
}
}
}





char* mostrar_mes(int mes) {
char* r;
switch (mes) {
case 1: r = "ENERO"; break;
case 2: r = "FEBRERO"; break;
case 3: r = "MARZO"; break;
case 4: r = "ABRIL"; break;
case 5: r = "MAYO"; break;
case 6: r = "JUNIO"; break;
case 7: r = "JULIO"; break;
case 8: r = "AGOSTO"; break;
case 9: r = "SEPTIEMBRE"; break;
case 10: r = "OCTUBRE"; break;
case 11: r = "NOVIEMBRE"; break;
case 12: r = "DICIEMBRE"; break;
}
return r;
}





//******************************************************************
/*Este procedimiento genera un cuadro para ingresar datos en matriz de
2*12
//****************************************************************/

void cuadro1()
{
gotoxy(3,6);cout<<"Refrigeradores";
gotoxy(3,8);cout<<"Congeladores";
gotoxy(18,4);cout<<"Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic";
int i;
for(i=1;i<=75;i++)
{
gotoxy(2+i,5); cout<<char(205);
gotoxy(1+i,7); cout<<char(196);
gotoxy(2+i,9); cout<<char(205); // Í º É » ¼ È Ä ³

}
for(i=1;i<=3;i++)
{
gotoxy(2,5+i); cout<<char(186);
gotoxy(77,5+i); cout<<char(186);

gotoxy(17,5+i); cout<<char(186);
gotoxy(27,5+i); cout<<char(179);
gotoxy(32,5+i); cout<<char(179);
gotoxy(22,5+i); cout<<char(179);
gotoxy(37,5+i); cout<<char(179);
gotoxy(42,5+i); cout<<char(179);
gotoxy(47,5+i); cout<<char(179);
gotoxy(52,5+i); cout<<char(179);
gotoxy(57,5+i); cout<<char(179);
gotoxy(62,5+i); cout<<char(179);
gotoxy(67,5+i); cout<<char(179);
gotoxy(72,5+i); cout<<char(179);
gotoxy(77,5+i); cout<<char(186);

gotoxy(2,5); cout<<char(201);
gotoxy(2,9);cout<<char(200);
gotoxy(77,9); cout<<char(188);
gotoxy(77,5);cout<<char(187);
}

}







juan esteban ospina
01 de Junio del 2004
CINTIA---->MIRA QUE LA OPCION 5 DEL MENU PRINCIPAL SE DESPLIEGA UN MENU DE CONSULTAS.
CONCRETAMENTE EN EL CASO 5.
ESPERO HABER AYUDADO.