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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


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

Desconectado Desconectado

Mensajes: 15


Ver Perfil
ayuda funcion buscar
« en: 22 Mayo 2019, 05:53 am »

Cuando uso la funcion buscar en mi codigo, esta no busca. Me podrian ayudar?
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define TAM 1000
  4.  
  5.  
  6. struct Ferreteria{
  7.  
  8.    int sueldoH;
  9.    char nombre[20], ap[30], direccion[20], telefono[10];
  10.    char edad[2], contrato[30], hrsextras[5];
  11.  
  12. }p[TAM];
  13.  
  14. struct Ferreteria capturar(struct Ferreteria x){
  15.  
  16. printf("\nNOMBRE: ");
  17.    fflush(stdin);
  18.    scanf("%s", &x.nombre);
  19.    printf("\nAPELLIDO: ");
  20.    fflush(stdin);
  21.    gets(x.ap);
  22.    printf("\nDIRECCION: ");
  23.    fflush(stdin);
  24.    gets(x.direccion);
  25.    printf("\nTELEFONO: ");
  26.    fflush(stdin);
  27.    gets(x.telefono);
  28.    printf("\nTIPO DE CONTRATO: ");
  29.    fflush(stdin);
  30.    scanf("%s", &x.contrato);
  31.    printf("\nHORAS EXTRAS: ");
  32.    fflush(stdin);
  33.    gets(x.hrsextras);
  34.    return x;
  35.  
  36.  
  37. }
  38.  
  39. void mostrar(struct Ferreteria x){
  40.  
  41.            fflush(stdin);
  42.    printf("\nLOS DATOS SON: \n"
  43.           "\nNOMBRE: %s \nAPELLIDO: %s"
  44.           "\nDIRECCION: %s" "\nTELEFONO: %s\n"
  45.           "TIPO DE CONTRATO: %s",
  46.           x.nombre,x.ap, x.direccion, x.telefono, x.contrato,x.hrsextras);
  47.           fflush(stdin);
  48.  
  49.           if(strcmp(x.contrato, "obrero")==0)
  50.           {
  51.               fflush(stdin);
  52.               x.sueldoH=x.sueldoH+70;
  53.               fflush(stdin);
  54.               printf("\nSUELDO POR HORA: %i", x.sueldoH);
  55.               fflush(stdin);
  56.           }
  57.           fflush(stdin);
  58.  
  59.           if(strcmp(x.contrato, "administrativo")==0)
  60.           {
  61.               fflush(stdin);
  62.               x.sueldoH=x.sueldoH+80;
  63.               fflush(stdin);
  64.               printf("\nSUELDO POR HORA: %i", x.sueldoH);
  65.               fflush(stdin);
  66.           }
  67.  
  68.           if(strcmp(x.contrato, "jefe de area")==0)
  69.           {
  70.               fflush(stdin);
  71.               x.sueldoH=x.sueldoH+90;
  72.               fflush(stdin);
  73.               printf("\nSUELDO POR HORA: %i", x.sueldoH);
  74.           }
  75.           fflush(stdin);
  76.  
  77.  
  78. }
  79.  
  80. int buscar(struct Ferreteria x[], int n, char nom[]){
  81.    int i;{
  82.    for(i=0; i<n; i++)
  83.        if (!(strcmp(x[i].nombre, nom))){
  84.        return i;
  85.        }
  86.    }
  87. return 0;
  88.  
  89. }
  90.  
  91. int localizar(struct Ferreteria x[], int n, char nom){
  92.    int i;{
  93.    for(i=0; i<n; i++)
  94.        if (nom == x[i].nombre){
  95.        return 1;
  96.        }
  97.    }
  98. return 0;
  99.  
  100. }
  101.  
  102. int eliminar(struct Ferreteria x[], int n, int index){
  103.  
  104.    int i;
  105.  
  106.    for(i= index; i < n; i++)
  107.        x[i] = x[i+1];
  108.    n--;
  109.    return n;
  110.  
  111.  
  112. }
  113.  
  114.  
  115. main(){
  116.  
  117. int n,i;
  118. char c[20];
  119.  
  120. printf("CUANTOS EMPLEADOS QUIERES REGISTAR: ");
  121. scanf("%d",  &n);
  122. for(i = 0; i<n; i++)
  123.  
  124. p[i] = capturar(p[i]);
  125.  
  126. for(i=0; i<n; i++)
  127. mostrar(p[i]);
  128.  
  129.    printf("\nNOMBRE DEL EMPLEADO: ");
  130.    scanf("%s", &c);
  131.        if(buscar(p,n,c))
  132.            printf("si existe el empledado\n");
  133.            else
  134.            printf("no existe el empleado\n");
  135.  
  136.  
  137.  
  138.          int a= localizar(p,n,c);
  139.        if(a >=0){
  140.  
  141.            n = eliminar(p,n,a);
  142.            printf("registro eliminado");
  143.  
  144.            for(i = 0; i <n; i++)
  145.            mostrar(p[i]);
  146.        }
  147.            else
  148.                printf("no exsiste");
  149.  
  150. }
  151.  
  152.  


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.000



Ver Perfil
Re: ayuda funcion buscar
« Respuesta #1 en: 22 Mayo 2019, 06:30 am »

Aparte de los tantos <fflush(stdin)> que no deberían usarse, la función <gets()> que no debería usarse, la función <scanf()> para cadenas que tampoco debería usarse y los nombres de variables para nada específicos que supongo no vas a cambiar porque tú lo entiendes y con que lo entienda el que lo programa ya es suficiente... :silbar:
El problema lo tienes por usar unas veces <gets()> para guardar una cadena de caracteres (deberías usar <fgets()> mejor) y otras veces <scanf()>. <gets()> o su variante más segura <fgets()> guardan el enter del final como un salto de línea; mientras que el <scanf()> no guarda el salto de línea.
Por eso si tú escribes "Pepe" en un <gets()>, estás guardando "Pepe\n" mientras que si escribes "Pepe" en un <scanf()> estás guardando "Pepe". Por eso las cadenas no son iguales.
PD: La función <localizar()> no te va a funcionar como creo que esperas :silbar:


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
la funcion buscar da problemas
Sugerencias y dudas sobre el Foro
melele 3 1,823 Último mensaje 22 Noviembre 2004, 19:23 pm
por melele
Añadir la función buscar a mi web
Desarrollo Web
chocola 3 3,009 Último mensaje 23 Noviembre 2011, 05:11 am
por DarK_FirefoX
Ayuda - Buscar una cadena en parametros de funcion
Programación C/C++
Miky Gonzalez 3 2,232 Último mensaje 4 Julio 2012, 14:24 pm
por 0xDani
Función buscar - reemplazar
Programación C/C++
Pool9 1 1,135 Último mensaje 4 Mayo 2018, 20:29 pm
por Serapis
Funcion buscar en archivos
Programación C/C++
silfer_1908 1 1,200 Último mensaje 3 Septiembre 2019, 07:56 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines