elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayudin
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayudin  (Leído 2,321 veces)
roldanp521

Desconectado Desconectado

Mensajes: 1


Ver Perfil
ayudin
« en: 4 Mayo 2023, 16:31 pm »

disculpen gente , la duda que tengo con este programa que ice es que anda perfectamente el único inconveniente que tengo es que solo me registra la venta del último empleado que ingreso , cuando ingreso el nombre del primer empelado me dice que no está registrado solo me toma el último empelado. si me podrían ayudar saludos !

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <windows.h>
  4.  
  5. void registrar_venta (struct registro v[50] , float monto , int i , int opcion , char nombre [50]);
  6.  
  7. struct registro
  8. {
  9.  char nyp [50];
  10.  int documento;
  11.  int fecingres;
  12.  char ventasema[5];
  13. };
  14.  
  15. main ()
  16. {
  17.  int i,n,opcion;
  18.  char nombre[50] ;
  19.  float monto;
  20.  struct registro v[50];
  21.  
  22.  printf ("\n 1)- registrar un empleado");
  23.  printf ("\n");
  24.  printf ("\n 2)- registrar el total de venta del empleado");
  25.  printf ("\n");
  26.  printf ("\n 3)- salir");
  27.  printf ("\n");
  28.  printf ("\n seleciona una opcion : ");
  29.  scanf  ("%d",&opcion);
  30.  
  31.  while (opcion!=3)
  32.  {
  33.  
  34.    if (opcion==1)
  35.    {
  36.      printf ("\n ingrese la cant de empleados : ");
  37.      scanf  ("%d",&n);
  38.  
  39.      for (i=0 ; i<n ; i++)
  40.      {  
  41.        _flushall();
  42.        printf ("\n ingrese el nombre y apellido del empleado : ");
  43.        gets   (v[i].nyp);
  44.        strcpy (nombre,v[i].nyp);
  45.        printf ("\n ingrese documento del empleado : ");
  46.        scanf  ("%d",&v[i].documento);
  47.        printf ("\n ingrese fecha de ingreso : ");
  48.        scanf  ("%d",&v[i].fecingres);
  49.      }
  50.  
  51.    }
  52.  
  53.    registrar_venta (v , monto , i , opcion , nombre );
  54.  
  55.    getch();
  56.    system ("cls");
  57.    printf ("\n 1)- registrar un empleado");
  58.    printf ("\n");
  59.    printf ("\n 2)- registrar el total de venta del empleado");
  60.    printf ("\n");
  61.    printf ("\n 3)- salir");
  62.    printf ("\n");
  63.    printf ("\n seleciona una opcion : ");
  64.    scanf  ("%d",&opcion);
  65.  
  66.  }
  67.  
  68. }
  69.  
  70. void registrar_venta (struct registro v[50] , float monto , int i , int opcion , char nombre [50])
  71. {
  72.  
  73.  if (opcion==2)
  74.  {  
  75.    _flushall();
  76.  
  77.    printf ("\n ingrese el nombre del empleado que realizo la venta : ");
  78.    gets   (v[i].nyp);
  79.  
  80.    if (strcmp(nombre,v[i].nyp)==0)
  81.    {
  82.      for (i=0 ; i<5 ; i++)
  83.      {
  84.        printf ("\n ingrese el dia de venta : ");
  85.        gets  (v[i].ventasema);
  86.        printf ("\n ingrese el monto de venta : ");
  87.        scanf  ("%d",&monto);
  88.        _flushall();
  89.      }
  90.    }
  91.    else
  92.    {
  93.      printf ("\n no se registro este empleado ");
  94.    }
  95.  }
  96.  
  97. }

MOD: El código debe ir entre etiquetas de Código GeSHi


« Última modificación: 11 Mayo 2023, 20:42 pm por K-YreX » En línea

Locura_23

Desconectado Desconectado

Mensajes: 162



Ver Perfil
Re: ayudin
« Respuesta #1 en: 4 Mayo 2023, 18:23 pm »

hola, por lo que veo no estás utilizando una variable que controle el numero de empleados cargados en el arreglo de empleados.
Cuando trabajas con arreglos te conviene utilizar una variable que represente el numero de datos cargados en el arreglo, usualmente se le llama validos.
Esta variable inicia en cero, y se incrementa cada vez que agregas un empleado.
La utilizas en main(). Luego se la podes pasar a cualquier funcion, para recorrer el arreglo de
empleados.

Te recomiendo utilizar nombre descriptivos en tus variables, porque cuando intentes leer tu codigo dentro de 1 o 2 semanas, te va a costar leerlo. Siempre nombres descriptivos en funciones, variables y estructuras.

Usualmente la funcion main() retorna un entero.

considera las siguientes modificaciones:

Código
  1. #include <stdio.h>
  2.  
  3. typedef struct
  4. {
  5.  char nyp [50];
  6.  int documento;
  7.  int fecingres;
  8.  char ventasema[5];
  9. } empleado;
  10.  
  11. int registrarEmpleado(empleado empleados[], int dim)
  12. {
  13.    ;
  14. }
  15.  
  16. void registrarVentaPorNombre(empleado empleados[], int validos, char nombre[])
  17. {
  18.    ;
  19. }
  20.  
  21. int main()
  22. {
  23.    empleado arregloEmpleados[50];
  24.    int validosEmpleados = 0;
  25.  
  26.    validosEmpleados = registrarEmpleado(arregloEmpleados, 50);
  27.  
  28.    registrarVentaPorNombre(arregloEmpleados, validosEmpleados, "Juan");
  29.  
  30.    return 0;
  31. }
  32.  


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines