Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con almacen en C

Estas en el tema de Problema con almacen en C en el foro de C/C++ en Foros del Web. Bueno mi problema es el siguiente, mi programa guarda los datos generales de un producto para quedar en la memoria secundaria. Una vez guardado el ...
  #1 (permalink)  
Antiguo 30/05/2015, 19:34
 
Fecha de Ingreso: mayo-2015
Mensajes: 1
Antigüedad: 8 años, 10 meses
Puntos: 0
Exclamación Problema con almacen en C

Bueno mi problema es el siguiente, mi programa guarda los datos generales de un producto para quedar en la memoria secundaria. Una vez guardado el producto este se puede modificar borrar etc... los datos que pido para el producto son:

-nombre del producto
-descripción del producto
-stock del producto

ahora lo que necesito es que cuando el usuario presione la tecla para consultar el producto con un stock menor a 5, este me muestre solo esos productos con el stock menor a 5, lo mismo para los productos con stock mayor a 25. Pero al querer hacer esto no lo hace correctamente mi código por favor ayuda!! les muestro mi código:

Por favor díganme como hacer para solucionarlo creo que lo que hace mal mi programa sucede en el case 5 y 6.

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
typedef struct {
int codigo;
float numero,dato;
char des[40];
char nombre[20];
float precio;
int subopcion,leerentero;
float existencia;} PRODUCTO;

int menu(void) {
int op1;
printf("\n\n\t\t ***MI PROPIO MENU***\n\n\t\t");
printf("\n\n\t 1-. ALTAS DE PRODUCTOS |");
printf("\n\n\t 2-. BAJAS DE PRODUCTOS |");
printf("\n\n\t 3-. CAMBIOS DE PRODUCTOS |");
printf("\n\n\t 4-. LISTAR PRODUCTOS |");
printf("\n\n\t 5-. STOCK MENOR A 5 |");
printf("\n\n\t 6-. STOCK MAYOR A 25 |");
printf("\n\n\t 7-. SALIR |");
printf("\n\n\n\t DAME LA OPCION DESEADA |\n\n");
printf("\n -");

scanf("%d",&op1);
return(op1);
}

int main(void){
PRODUCTO b[100];
int op=0, I=0,J,si;
while(op < 7) {
system("cls");
op = menu();
system("cls");
switch (op){
case 1:{
printf("\n ALTA DE PRODUCTO");
do {fflush( stdin );
printf("\n dame el nombre del producto: ");
gets(b[I].nombre);
fflush( stdin );
printf("\n dame la descripcion del producto: ");
gets(b[I].des);
printf("\n dame el stock:");
scanf("%d",&b[I].numero);

printf("\n\n Para agregar otro producto presione 1\n\n o cualquier numero para continuar");
scanf("%d",&si);
I=I+1;
}while(si==1);
break;
}

case 2:{
printf("\n bajas de productos");
printf("\n");



break;
}
case 3:{
printf("\n cambios de productos");
getche();
break;
}
case 4:{
printf("\n listas de productos\n");
for(J=0;J<I;J++){
printf("\n %s...%s...%d",b[J].nombre,b[J].des,b[J].numero);

}
getche();
break;
}

case 5:{
printf("\n Productos con stock menor a 5");
for(J=0;J<I;J++){
printf("\n%s\n%s\n%d",b[J].nombre,b[J].des,b[J].numero<5);
}
getche();
break;
}
case 6:{
printf("\n Productos con stock mayor a 25");
for(J=0;J<I;J++){
printf("\n%s\n%s\n%d",b[J].nombre,b[J].des,b[J].numero>25);
}
getche();
break;
}
case 7:{
printf("\n salir");
getche();
break;
}
default:{
printf("\n\n La opcion no existe presione del 1 al 7\n\n\n");
system("pause");
menu();
break;
}

if(op < 7) {
printf("\n\n");
system("PAUSE");
}

}
}
system("PAUSE");
return 0;
}
  #2 (permalink)  
Antiguo 31/05/2015, 03:47
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Problema con almacen en C

Buenos días.

Lo primero es lo primero. El código tiene que ir decorado. Son las normas del foro y consigues que éste sea legible. Para decorar el texto, elige el lenguaje que corresponda en el combo "highlight" y después pega el código entre las dos etiquetas que te aparecerán en el mensaje.

En cuanto a tu problema. Si lo que quieres es que solo se muestren los artículos que cumplen con la condición dada, tienes que usar un if dentro del forma, de tal forma que únicamente los artículos que cumplen con la condición que corresponda (p. Ej. stock<5) pasen por el printf.

No te pongo código porque es importante que te pegues un poco con ello.

Un saludo

Etiquetas: lenguajec
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:31.