• Domingo 15 de Diciembre de 2024, 13:38

Autor Tema:  problema en programa con struct -_-  (Leído 1454 veces)

cazadorite

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
problema en programa con struct -_-
« en: Domingo 14 de Septiembre de 2008, 23:48 »
0
hi gente el problema es que cuando hago una venta me resta el stock equivocado yo pongo 1 cod y me resta el stock del otro -_- pero a simple viste no le encuentro el error..
Código: Text
  1.  
  2. #include <iostream>
  3. #include <conio.c>
  4.  
  5. using namespace std;
  6. struct tart
  7. {
  8.   char cad[5];
  9.   char desc[30];
  10.   float pu;
  11.   int stock;
  12. };
  13.  
  14. void cg(tart *);
  15. void m(tart *);
  16. int b(tart *,char *,int);
  17. void v(tart *);
  18. int main (int argc, char* argv[])
  19. {
  20.   char op;
  21.   tart va[2];
  22.   do
  23.   {
  24.   clrscr();
  25.     cout<<"1-cargar articulos"<<endl;
  26.     cout<<"2-mostar articulos"<<endl;
  27.     cout<<"3-ventas de articulos"<<endl;
  28.     cout<<"4-salir"<<endl;
  29.     op=getch();
  30.     switch(op)
  31.       {
  32.         case '1':
  33.           cg(va);
  34.           break;
  35.         case '2':
  36.           m(va);
  37.           break;
  38.         case '3':
  39.           v(va);
  40.           break;
  41.         case '4':
  42.         op='n';
  43.         break;
  44.       }
  45.     }while(op!='n');
  46.  
  47.   return 0;
  48. }
  49. void cg(tart *pv)
  50. {
  51.   for(int i=0; i<2; i++)
  52.   {
  53.   cout<<"ingrese codigo"<<endl;
  54.   fflush(stdin);
  55.   cin.getline(pv[i].cad,5);
  56.   cout<<"ingrese descripcion"<<endl;
  57.   cin.getline(pv[i].desc,5);
  58.   fflush(stdin);
  59.   cout<<"ingrese precio unitario"<<endl;
  60.   cin>>pv[i].pu;
  61.   cout<<"ingrese stock"<<endl;
  62.   cin>>pv[i].stock;
  63.   }
  64. }
  65. void v(tart *pv)
  66. {
  67.   char c[5];
  68.   int cant,pos;
  69.   fflush(stdin);
  70.   cout<<"ingrese codigo articulo"<<endl;
  71.   cin.getline(c,5);
  72.   cout<<"ingrese cantidad requerida"<<endl;
  73.   cin>>cant;
  74.   pos=b(pv,c,cant);
  75.  
  76.   cout<<"el importe de la venta es "<<(pv[pos].pu*cant);
  77.   getch();
  78.  
  79. }
  80. int b(tart *pv,char *c,int cant)
  81. {
  82.   for(int i=0; i<2; i++)
  83.   {
  84.     if(!(strcmp(c,pv[i].cad)==0))
  85.     {
  86.       pv[i].stock-=cant;// error resta stock equivocado
  87.       cout<<"se encontro el codigo"<<endl;
  88.     return i;
  89.     }
  90.  
  91.   }
  92.   return 0;
  93. }
  94. void m(tart *pv)
  95. {
  96.     for(int i=0; i<2; i++)
  97.   {
  98.   cout<<"codigo"<<pv[i].cad<<endl;
  99.   cout<<"descripcion"<<pv[i].desc<<endl;
  100.   cout<<"precio unitario"<<pv[i].pu<<endl;
  101.   cout<<"stock"<<pv[i].stock<<endl;
  102.   }
  103.   getch();
  104. }
  105.  
  106.  

Iganguli

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: mx
    • Ver Perfil
Re: problema en programa con struct -_-
« Respuesta #1 en: Lunes 15 de Septiembre de 2008, 02:57 »
0
en la funcion que se llama b revisa esta linea
Código: Text
  1. if(!(strcmp(c,pv[i].cad)==0))
  2.  
ya que esta mal por que la funcion strcmp regresa un 0 cuando son iguales los parametros prueba quitandole el ! deberia quedarte aqui
Código: Text
  1. if( strcmp(c,pv[i].cad)==0 )
  2.  
y trata de ponerle un nombre relevante a tus funciones ya que nombre como v, b etc. son dificil de saber que es lo que hacen