• Viernes 8 de Noviembre de 2024, 21:37

Autor Tema:  problema programacion en C  (Leído 1694 veces)

hkrxd

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
problema programacion en C
« en: Jueves 8 de Noviembre de 2012, 19:47 »
0
hola a todos, estoy tratando de hacer un programa en C que tiene los siguientes detalles:
muestra un menu de opciones, donde se escoge un caso y mediante switch, lleva a distintas operaciones.
se da la opcion de llenar una lista con articulos con nombre, codigo, precio, stock, stock minimo
se permite listar los productos, editar productos
vender productos.

el problema es que compilo sin problemas pero al ejecutar el programa y usarlo me da error y se cierra.
no veo error en el compilador por lo que no sé que es lo que me está ocurriendo.

Citar
#include <conio.h>
#include <string.h>
#include <stdio.h>


//FUNCIONES
void adicionar();
void consultar();
void listar();
void facturar();
void salir ();

int N, y, x, i;
struct ferreteria {
       
       char Nombre[50];
       int codigo;
       int valorventa;
       int valorcompra;
       int exismin;
       int exis;
} V[100];



int main(){
    int op;
    system("color 04");
   
  //MENU
   do {
       
        system ("cls");
       
        printf("\n\n\t\t**** FERRETERIA ****");
        printf("\n\n\t\t+*+*+*+ MENU PRINCIPAL +*+*+*+* \n\n");
        printf("1. Adicionar producto\n");
        printf("2. Consultar informacion Completa sobre un producto\n");
        printf("3. Facturar \n");
        printf("4. Listar\n");
        printf("5. SALIR\n");
        printf("\nDigite su opcion: ");
        scanf("%d",op);
        switch (op)
        {
               case 1: adicionar();
                       printf("\n\t");
                       system ("PAUSE");
                    break;
               case 2:
                    consultar();
                    printf("\n\t");
                    system ("PAUSE");
                    break;
               case 3:
                    facturar();
                    printf("\n\t");
                    system ("PAUSE");
                    break;
               case 4:
                    listar();
                    printf("\n\t");
                    system ("PAUSE");
                    break;
               case 5:
                    system ("cls");
                    printf("\a\n\n\n\t\t*+*+*+ GRACIAS POR USAR ESTE PROGRAMA *+*+*+");
                    getch();
                    return 0;
                    break;
               default: printf("\n\tOPCION NO VALIDA.");
        }
       
    } while(1);
    getch();
    return 0;
}

//************************* FUNCIONES *************************
void adicionar(){
     int op,p,n;
         system ("cls");
        printf("\n\n\t\t+++ MENU +++\n\n");
        printf("1. Adicionar producto\n");
        printf("2. Adicionar existencia a un producto\n");
        printf("3. Salir\n");
        printf("\nDigite su opcion: ");
        scanf("%d",op);
        switch (op)
        {
               case 1:
                    system ("cls");
                    printf("\n\nDigite el numero de productos  a registrar: ");
             scanf("%d",N);
                    system ("cls");
                    for(x=0;x<N;x++)
                    {
                        printf("\n\n\t\t++++NUEVO PRODUCTO++++");
                        printf("\nDigite el codigo del producto: ");
            scanf("%d",V
  • .codigo);

                        printf("\nDigite nombre del producto: ");
            scanf("%S",V
  • .Nombre);

                        printf("\n\n  RECUERDE QUE EL VALOR DE VENTA DEBE SER MAYOR, O IGUAL QUE EL DE COMPRA");
                        printf("\n\n\t  PARA NO TENER PERDIDAS!!!");
                        printf("\n\nDigite valor venta del producto: ");
            scanf("%d",V
  • .valorventa);       

                        printf("\nDigite valor compra del producto: ");
            scanf("%d",V
  • .valorcompra);

                        printf("\nDigite existencia del producto: ");
            scanf("%d",V
  • .exis);

                        printf("\nDigite existencia minima del producto: ");
            scanf("%d",V
  • .exismin);

                    }
                   
                     break;
               case 2:
                    system ("cls");
                    listar ();
                    printf("\ndigite el codigo del producto a adicionar unidades ");
            scanf("%d",p);
                    printf("\ndigite el numero de unidades a adicionar al producto ");
            scanf("%d",n);
                     for(i=0;i<N;i++){
                             if(V.codigo==p){
                                  V.exis = V.exis + n;
                                             
                                     }                                                                                     
                             }
                     break;
               
               case 3:
                                     
                    break;
               
                        default: printf("\n\tOPCION NO VALIDA. ");
                        getch();       
                        }
                       
                       

}

//**************************************************************************
void consultar(){
     int p;
     
     system ("cls");
     listar();
     printf("\n\ndigite el codigo del producto a consultar: ");
        scanf("%d",p);
     system ("cls");
     for(i=0;i<N;i++){
         if(V.codigo == p){
            printf(" \n CODIGO: %i",V.codigo);
            printf(" \n NOMBRE: %i",V.Nombre);
            printf(" \n VALOR DE VENTA: %i",V.valorventa);       
            printf(" \n VALOR DE COMPRA: %i",V.valorcompra);
            printf(" \n EXISTENCIA: %i",V.exis);
            printf(" \n EXISTENCIA MINIMA EN BODEGA: %i",V.exismin);
               if (V.exis <= V.exismin){
                   printf("\a\a\n\n\t\a\a **DEBE COMPRAR MAS DE ESTE PRODUCTO**");
                 }
          }
       }
                     
}


//*****************************************************************************
void facturar(){
     int a,b,c,d,opc;
   
     do{
          listar();
     printf("\ndigite el codigo del producto a facturar: ");
     scanf("%d",a);
     system ("cls");
      for(i=0;i<N;i++){
        if (V.codigo==a){
           if (V.exis==0){
              printf("\n\n");
              printf("EL PRODUCTO %s SE ENCUENTRA AGOTADO EN ESTOS MOMENTOS",V.Nombre); 
              }else {                 
                 printf("\ncuantos desea comprar de %s, la cant existente es de %i : ",V.Nombre, V.exis);
                 scanf("%d",b);
                 V.exis = V.exis-b;
                 c = V.valorventa*b;
                 printf("\nse acaba de adquirir %i %s por valor total de $ %i",b,V.Nombre,c);
                 }
         }}
         
     
     
      printf("\n\nDesea facturar otro producto? (si=1 no=0): ");
      scanf("%d",opc);
      }while (opc==1);
     
}
//****************************************************************************** 
 void listar(){ 
      system ("cls");
       printf("\n\t\t****PRODUCTOS****");     
       printf("\n\n CODIGO \t\t NOMBRE      ");
         for(i=0;i<N;i++){
            printf("\n\n   %i \t\t\t %s ",V.codigo, V.Nombre);
     
     }
     
     }

//****************************************************************************

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:problema programacion en C
« Respuesta #1 en: Viernes 9 de Noviembre de 2012, 00:02 »
0
Hola hkrxd, bienvendo al foro.

El error esta en a funcion scanf(),  requiere que le pases como parametro la direccion de la variable por medio del &:Ejemplo

Código: [Seleccionar]
//Incorrecto, necesitas la direccion de op, se obtiene por medio de &
scanf("%d", op);
//Correcto
scanf("%d", &op);

Corrije todos tus scanf anteponiendo el & a todas las variables que leas

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================