Título: ayuda funcion buscar
Publicado por: silfer_1908 en 22 Mayo 2019, 05:53 am
Cuando uso la funcion buscar en mi codigo, esta no busca. Me podrian ayudar? #include <stdio.h> #include <string.h> #define TAM 1000 struct Ferreteria{ int sueldoH; char nombre[20], ap[30], direccion[20], telefono[10]; char edad[2], contrato[30], hrsextras[5]; }p[TAM]; struct Ferreteria capturar(struct Ferreteria x){ printf("\nTIPO DE CONTRATO: "); scanf("%s", &x. contrato); return x; } void mostrar(struct Ferreteria x){ "\nNOMBRE: %s \nAPELLIDO: %s" "\nDIRECCION: %s" "\nTELEFONO: %s\n" "TIPO DE CONTRATO: %s", x.nombre,x.ap, x.direccion, x.telefono, x.contrato,x.hrsextras); if(strcmp(x. contrato, "obrero")==0) { x.sueldoH=x.sueldoH+70; printf("\nSUELDO POR HORA: %i", x. sueldoH); } if(strcmp(x. contrato, "administrativo")==0) { x.sueldoH=x.sueldoH+80; printf("\nSUELDO POR HORA: %i", x. sueldoH); } if(strcmp(x. contrato, "jefe de area")==0) { x.sueldoH=x.sueldoH+90; printf("\nSUELDO POR HORA: %i", x. sueldoH); } } int buscar(struct Ferreteria x[], int n, char nom[]){ int i;{ for(i=0; i<n; i++) if (!(strcmp(x [i ]. nombre, nom ))){ return i; } } return 0; } int localizar(struct Ferreteria x[], int n, char nom){ int i;{ for(i=0; i<n; i++) if (nom == x[i].nombre){ return 1; } } return 0; } int eliminar(struct Ferreteria x[], int n, int index){ int i; for(i= index; i < n; i++) x[i] = x[i+1]; n--; return n; } main(){ int n,i; char c[20]; printf("CUANTOS EMPLEADOS QUIERES REGISTAR: "); for(i = 0; i<n; i++) p[i] = capturar(p[i]); for(i=0; i<n; i++) mostrar(p[i]); printf("\nNOMBRE DEL EMPLEADO: "); if(buscar(p,n,c)) printf("si existe el empledado\n"); else printf("no existe el empleado\n"); int a= localizar(p,n,c); if(a >=0){ n = eliminar(p,n,a); for(i = 0; i <n; i++) mostrar(p[i]); } else }
Título: Re: ayuda funcion buscar
Publicado por: K-YreX 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:
|