Necesito ayuda con mi programa :S No se mantiene abierto

Iniciado por luisix, 11 Abril 2013, 17:14 PM

0 Miembros y 1 Visitante están viendo este tema.

luisix

Lo que trato de hacer es una caja registradora, pero estoy comenzando en esto del lenguaje c
yo se que para que se detenga se le pone un getche (); pero sige sin detenerse

como quiera eso, y si me lo pueden checar y decirme que le falta, gracias

luisix

este es el codigo..
//Programa que simula una caja registradora en un super mercado
//Se ingresan productos y se calcula el monto de todos ellos

#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <process.h>
#include <string.h>
#define MAXPROD 50
struct producto{
int id;
float costo;
char desc[30];
};

producto Productos[MAXPROD];
//Aqui guardaremos los productos
//----------------------------------------------------------------------//
void inicializaProductos(){
int i;

//Aqui limpiamos nuestro arreglo de productos de posible basura al crearse
for(i=0;i<MAXPROD;i++){
Productos.id = 0;
Productos.costo = 0;
strcpy(Productos.desc,NULL);
}
/*
Aqui tengo la base de datos de los productos disponibles y
sus caracteristicas, como id, costo y descripcion.
Solo tener cuidado de no ingresar id repetidos
*/
Productos[0].id = 5050;
Productos[0].costo = 12.5;
strcpy(Productos[0].desc,"Coca Cola 1.5L");
///////////////////////////////////////////////////////////
Productos[1].id = 4040;
Productos[1].costo = 8.5;
strcpy(Productos[1].desc,"Flan Art Grande");
///////////////////////////////////////////////////////////
Productos[2].id = 3030;
Productos[2].costo = 8.5;
strcpy(Productos[2].desc,"Agua Bonafont 1/2 Litro");
///////////////////////////////////////////////////////////
}

float BuscarProducto(int id_producto,int x){

int i,flag=0;

for(i=0;i<MAXPROD;i++){
if(Productos.id == id_producto){
flag = 1;
break;
}
}
if(flag == 0){
return -1; //Error id no encontrado
}

printf("ntt%st%.2f",Productos.desc,Productos.costo);
return Productos.costo;
}
//----------------------------------------------------------------------//
main(){
char opcion;
int x;
int prod; //Aqui guardamos que producto se agrega a la cuenta
float costo; //Acumulado de la cuenta del cliente
float costoProdActual; //Nos da el costo del producto actual
inicializaProductos();
while(1){ //Consideramos un while infinito, en
//teoria una caja registradora siempre esta encendida
clrscr();
costo = 0; //Iniciamos el costo de cada compra
printf("nnttt--**MENU**--");
printf("nntti.-Ingresa nuevo cliente"); // inicia una nueva factura
printf("nntts.-Salir"); //termina la ejecucion del programa
printf("nnttOpcion ---> ");
opcion = getche(); //Obtenemos la opcion del usuario
if(opcion == 's'){
return(1); //Salimos del programa
getche();
}
if(opcion == 'i'){
x=0;
clrscr();
while(prod != -1){
printf("nttIngresa -1 para terminar lista");
printf("nnttDame el numero de producto->");
scanf("%d",&prod);

printf(" ") ;
if(prod != -1 ){
x++;
costoProdActual = BuscarProducto(prod,x);
if(costoProdActual != -1){
costo += costoProdActual;
}
else{

printf("Producto no encontrado");
}

printf("tttttt");
printf("ntTotal: %.2f",costo);
return(1);

}
}//Fin segundo while
}
}//Fin del while principal
}

85

#2
un humilde consejo, ya que noto que no te respondieron..
que el código lo pongas en las etiquetas correspondientes, fijate en las opciones para la composición del mensaje, hay una lista con etiquetas de código. Y no usar con IO porque no te dan soporte acerca de eso generalmente XD. Sin mirar tu código, probá mandando un system("pause"); en algún lado, usar getchar(), getc(stdin), o cin.get(), hay otras formas..
Salu2
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/