Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   C/C++ (http://www.forosdelweb.com/f96/)
-   -   ayuda con esto porfis (http://www.forosdelweb.com/f96/ayuda-con-esto-porfis-578132/)

laelie 21/04/2008 02:03

ayuda con esto porfis
 
olaa... Bueno solo qeria saber si alguien me puede ayudar con un apartado de este ejercicio que no lo entiendo muy bien
**el apartado es:
introducir el numero de horas extras para akellos trabajadores que las allan echo, para ello introducir la categoria, y el nombre del trabajador y si esta en la lista intoducir su numero de horas extras

Lo ke llevo hasta ahora es:


# include <stdio.h>
# include <conio.h>
#define TAM 3

struct categorias{
float precio_cat;
};
struct empleados{
struct categorias categ[4];
char nombre[40];
int categoria;
int num_extras;
float p_extras;
float ganado;
}emple[TAM],aux[TAM];
int menu (void);
void lee_extra(void);
void extra(void);
void nombre(void);
void main (void)
{
int opc;
opc=menu();
switch (opc){
case 1:
extra();
case 2:
nombre();

case 3:
lee_extra();

case 4:

break;
}
}
int menu (void)
{
int opc;
do{
printf("1.incertar precio de la hora extra para la categoria profecional ");
printf("\n2.incertar nombre y categoria profecional del trabajador ");
printf("\n3.introducir el numero de horas extras de un trabajador ");
printf("\n4.calcular y visualizar el dinero ganado y los datos de cada trabajador ");
printf("\n5.visualizar el total que debe pagar la empresa a los trabajadores ");
scanf("%d",&opc);
clrscr();
}while(opc<1||opc>5);
return(opc);
}


void extra(void)
{
int i;
for(i=0;i<4;i++){
printf("\nCATEGORIA %d\n",i+1);
printf("introduce el valor de la hora extra de la categoria: ");
scanf("%d",&emple[i].categ[i].precio_cat);
}
}

void nombre(void)
{
int i;
for(i=0;i<TAM;i++){
printf("Introduce el nombre del trabajador: ");
fflush(stdin);
gets(emple[i].nombre);
printf("Introduce la categoria a la que pertenece 1 - 2 - 3 o 4: ");
scanf("%d",&emple[i].categoria);
printf("\n");
}
}
//esta es la parte del ejercicio en donde kisiera ke me ayudasen
void lee_extra(void)
{
int i=0,cat;
char nom[40];
printf("INTRODUCIR HORAS EXTRAS TRABAJADAS: \n");
printf("introduce el nombre del trabajador: ");
fflush(stdin);
gets(nom);
while(nom[0]!='*'){
printf("introduce la categoria: ");
scanf("%d",&cat);
for(i=0;i<TAM;i++){
printf("nombre: %s",emple[i].nombre);
printf("\n%s",nom);
if(emple[i].nombre==nom){
printf("introduce el numeor de horas extras trabajadas: ");
scanf("%d",&emple[i].num_extras);
}
}
printf("\npulse FIN para terminar\n");
fflush(stdin);
printf("introduce el nombre del trabajador: ");
gets(nom);
}
}

un besito y poz les agradeceria muchisisimo su ayudaa!!

Mephisto 21/04/2008 16:45

Re: ayuda con esto porfis
 
Yo pudiera aportarte lo siguiente, numero las lineas para tener una mejor referencia

Código:

1  void lee_extra(void)
2  {
3      int i=0,cat;
4      char nom[40];
5      printf("INTRODUCIR HORAS EXTRAS TRABAJADAS: \n");
6      printf("introduce el nombre del trabajador: ");
7      fflush(stdin);
8      gets(nom);
9      while(nom[0]!='*'){
10        printf("introduce la categoria: ");
11        scanf("%d",&cat);
12        for(i=0;i<TAM;i++){
13          printf("nombre: %s",emple[i].nombre);
14          printf("\n%s",nom);
15          if(emple[i].nombre==nom){
16            printf("introduce el numeor de horas extras trabajadas: ");
17            scanf("%d",&emple[i].num_extras);
18          }
19        }
20        printf("\npulse FIN para terminar\n");
21        fflush(stdin);
22        printf("introduce el nombre del trabajador: ");
23        gets(nom);
24    }
25 }

De acuerdo al sistema que emplees hay ocasiones en las que al definir un array de tipo char te arroja basura, por eso conviene inicializar el array. Yo utilizo memset. Sería memset(nom,'\0',sizeof(nom)); antes de la linea 8 y 23. Tambien como reutilizas el array, si un primer nombre es mayor a un segundo nombre te dejará los caracteres extras del tamaño de los arrays, tambien por eso es conveniente limpiar el array antes de cargarlo.

En la linea 15 al realizar la comparacion de dos cadenas requieres de emplear strcmp de la librearia string.h. En esa linea creo que tendrias que comparar tambien la categoria, bueno eso es lo que entiendo del enunciado de arriba.

No se si sea necesario para tu prog que muestres el nombre de todos los trabajadores como lo haces en laa lineas 13 y 14, igual lo ocupas para validar lo que se esta comparando...

Es lo que yo le veo...


La zona horaria es GMT -6. Ahora son las 08:08.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.