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

Error al comprobar datos.

Estas en el tema de Error al comprobar datos. en el foro de C/C++ en Foros del Web. El problema es que introduzco los datos perfectos, pero al momento de introducir el segundo usuario me dice que ya existe, cuando el nombre es ...
  #1 (permalink)  
Antiguo 05/11/2010, 21:01
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 8 meses
Puntos: 13
Error al comprobar datos.

El problema es que introduzco los datos perfectos, pero al momento de introducir el segundo usuario me dice que ya existe, cuando el nombre es diferente.

Antes funcionaba me puse a hacer unos cambios y empezó a fallar.
Código C:
Ver original
  1. void agregar_lista(void)
  2. {
  3.     int i, copy, cerrar, vef;
  4.     char yorn;
  5.     limpiar_pantalla();
  6.  
  7.     datos[solicitud].equipos = 0;
  8.     cerrar = 1;
  9.     vef = 0;
  10.  
  11.     printf("Datos del cliente\n=================\n\nNombre: ");
  12.     fflush(stdout);
  13.     gets(datos[solicitud].clientes.cliente);
  14.     printf("Cedula/Rif: ");
  15.     gets(datos[solicitud].clientes.cedula);
  16.     printf("Telefono: ");
  17.     gets(datos[solicitud].clientes.telefono);
  18.     printf("Direccion: ");
  19.     gets(datos[solicitud].clientes.direccion);
  20.     printf("Ubicacion: ");
  21.     gets(datos[solicitud].clientes.ubicacion);
  22.  
  23.     for (i = 0 ; i < solicitud ; i++)
  24.     {
  25.         if ((strcmp(datos[i].clientes.cliente, datos[i].clientes.cliente) && strcmp(datos[i].clientes.cedula, datos[i].clientes.cedula)) == 0)
  26.         {
  27.             limpiar_pantalla();
  28.             printf("Este cliente ya existe, Deseas agregar los datos al anterior? Y/N: ");
  29.             yorn = getch();
  30.             if (yorn == 'Y' || yorn == 'y')
  31.             {
  32.                 copy = solicitud;
  33.                 solicitud = i;
  34.                 vef = 1;
  35.                 limpiar_pantalla();
  36.             }
  37.         }
  38.     }
  39.  
  40.     do
  41.     {
  42.         limpiar_pantalla();
  43.         printf("Equipo #%i \n=========\n\nMarca: ", datos[solicitud].equipos+1);
  44.         gets(datos[solicitud].equipo[datos[solicitud].equipos].marca);
  45.         printf("Modelo: ");
  46.         gets(datos[solicitud].equipo[datos[solicitud].equipos].modelo);
  47.         printf("Serial: ");
  48.         gets(datos[solicitud].equipo[datos[solicitud].equipos].serial);
  49.         printf("Capacidad: ");
  50.         gets(datos[solicitud].equipo[datos[solicitud].equipos].capacidad);
  51.         printf("Voltaje: ");
  52.         scanf("%i", &datos[solicitud].equipo[datos[solicitud].equipos].voltaje);
  53.         printf("Amp: ");
  54.         scanf("%f", &datos[solicitud].equipo[datos[solicitud].equipos].amp);
  55.         printf("Ph: ");
  56.         scanf("%i", &datos[solicitud].equipo[datos[solicitud].equipos].ph);
  57.         printf("Hz: ");
  58.         scanf("%i", &datos[solicitud].equipo[datos[solicitud].equipos].hz);
  59.         printf("Tipo: ");
  60.         bufferOFF();
  61.         gets(datos[solicitud].equipo[datos[solicitud].equipos].tipo);
  62.         printf("Refrigerante: ");
  63.         gets(datos[solicitud].equipo[datos[solicitud].equipos].refrig);
  64.         printf("Contactor: ");
  65.         gets(datos[solicitud].equipo[datos[solicitud].equipos].contactor);
  66.         printf("Capacitador: ");
  67.         gets(datos[solicitud].equipo[datos[solicitud].equipos].capacitador);
  68.         printf("Codigo bimetalico: ");
  69.         gets(datos[solicitud].equipo[datos[solicitud].equipos].cod_bimetalico);
  70.         printf("Presostato: ");
  71.         gets(datos[solicitud].equipo[datos[solicitud].equipos].presostato);
  72.         printf("Codigo del protector termico: ");
  73.         gets(datos[solicitud].equipo[datos[solicitud].equipos].cod_protector_termico);
  74.  
  75.         printf("\nCompresor\n=========\nModelo: ");
  76.         gets(datos[solicitud].compresor[datos[solicitud].equipos].modelo);
  77.         printf("Serial: ");
  78.         gets(datos[solicitud].compresor[datos[solicitud].equipos].serial);
  79.         printf("Amp: ");
  80.         scanf("%f", &datos[solicitud].compresor[datos[solicitud].equipos].amp);
  81.         printf("Ph: ");
  82.         scanf("%i", &datos[solicitud].compresor[datos[solicitud].equipos].ph);
  83.         printf("Hz: ");
  84.         scanf("%i", &datos[solicitud].compresor[datos[solicitud].equipos].hz);
  85.         printf("Filtro del secador: ");
  86.         bufferOFF();
  87.         gets(datos[solicitud].compresor[datos[solicitud].equipos].filtro_secador);
  88.         printf("Hp: ");
  89.         gets(datos[solicitud].compresor[datos[solicitud].equipos].hp);
  90.         printf("Solenoides: ");
  91.         scanf("%i", &datos[solicitud].compresor[datos[solicitud].equipos].solenoides);
  92.         bufferOFF();
  93.  
  94.         limpiar_pantalla();
  95.         printf("Deseas agregar otros equipos?: ");
  96.         yorn = getch();
  97.         if (yorn == 'Y' || yorn == 'y')
  98.         {
  99.             datos[solicitud].equipos++;
  100.             limpiar_pantalla();
  101.         }
  102.         else
  103.         {
  104.             cerrar = 0;
  105.         }
  106.     }
  107.     while (cerrar != 0);
  108.  
  109.     limpiar_pantalla();
  110.     printf("Deseas agregar una observacion. Y/N: ");
  111.     yorn = getch();
  112.     if (yorn == 'Y' || yorn == 'y')
  113.     {
  114.         printf("\nObservacion: ");
  115.         gets(datos[solicitud].clientes.observaciones);
  116.     }
  117.     else
  118.     {
  119.         strcpy(datos[solicitud].clientes.observaciones, "No hay observaciones...");
  120.     }
  121.  
  122.     if (vef = 1)
  123.     {
  124.         solicitud = copy;
  125.     }
  126.     datos[solicitud].equipos++;
  127.     solicitud++;
  128.     limpiar_pantalla();
  129. }

A ver si me pueden dar una mano, gracias :)

Última edición por guzzano; 06/11/2010 a las 00:08
  #2 (permalink)  
Antiguo 06/11/2010, 01:10
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años
Puntos: 4
Respuesta: Error al comprobar datos.

pues tal vez aqui esta tu error:
Código C++:
Ver original
  1. if ((strcmp(datos[i].clientes.cliente, datos[i].clientes.cliente) && strcmp(datos[i].clientes.cedula, datos[i].clientes.cedula)) == 0)
  2.  
  3. ya que comparas el mismo usuario, entonces siempre vas a recibir el mismo resultado
  4. podrias poner algo asi:
  5. if ((strcmp(datos[i].clientes.cliente, datos[i+1].clientes.cliente)==0 && strcmp(datos[i].clientes.cedula, datos[i+1].clientes.cedula)) == 0)
  6. //aunque esto solo compararia dos usuarios, y al siguiente usuario ya no podrias comparar el primero con el tercero.
  7. //asi que podrias usar dos for alli, para que compares uno con todos los demas, luego el
  8. //segundo con todos los demas y asi con n usuarios (claro al momento de compara debes
  9. //evitar que se comparen entre ellos mismos.)
Espero lo entiendas, sino puedes seguir preguntando.
Saludos
__________________
No pienses si no vas a actuar.
  #3 (permalink)  
Antiguo 06/11/2010, 09:57
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 8 meses
Puntos: 13
Respuesta: Error al comprobar datos.

Cita:
Iniciado por gvite666 Ver Mensaje
pues tal vez aqui esta tu error:
Código C++:
Ver original
  1. if ((strcmp(datos[i].clientes.cliente, datos[i].clientes.cliente) && strcmp(datos[i].clientes.cedula, datos[i].clientes.cedula)) == 0)
  2.  
  3. ya que comparas el mismo usuario, entonces siempre vas a recibir el mismo resultado
  4. podrias poner algo asi:
  5. if ((strcmp(datos[i].clientes.cliente, datos[i+1].clientes.cliente)==0 && strcmp(datos[i].clientes.cedula, datos[i+1].clientes.cedula)) == 0)
  6. //aunque esto solo compararia dos usuarios, y al siguiente usuario ya no podrias comparar el primero con el tercero.
  7. //asi que podrias usar dos for alli, para que compares uno con todos los demas, luego el
  8. //segundo con todos los demas y asi con n usuarios (claro al momento de compara debes
  9. //evitar que se comparen entre ellos mismos.)
Espero lo entiendas, sino puedes seguir preguntando.
Saludos
Me di cuenta de la estupidez que había hecho, no estaba comparando el cliente introducido con alguno de la estructura, si no estaba comparando el cliente 1 con el 1, el 2 con el 2, por eso me decía que ya existía.

La solución no era mas que;
Código C:
Ver original
  1. for (i = 0 ; i < solicitud ; i++)
  2.     {
  3.         if ((strcmp(datos[solicitud].clientes.cliente, datos[i].clientes.cliente) && strcmp(datos[solicitud].clientes.cedula, datos[i].clientes.cedula)) == 0)
  4.         {
  5.             limpiar_pantalla();
  6.             printf("Este cliente ya existe, Deseas agregar los datos al anterior? Y/N: ");
  7.             yorn = getch();
  8.             if (yorn == 'Y' || yorn == 'y')
  9.             {
  10.                 copy = solicitud;
  11.                 solicitud = i;
  12.                 vef = 1;
  13.                 limpiar_pantalla();
  14.             }
  15.         }
  16.     }

Muchísimas gracias, si no leo lo que me dijiste no me doy cuenta jaja,

Saludos

Etiquetas: comprobar
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 23:33.