Dev - C++ - Programa que lea los datos de n trabajadores y que imprima los datos del empleado por salario

   
Vista:

Programa que lea los datos de n trabajadores y que imprima los datos del empleado por salario

Publicado por Kevin (3 intervenciones) el 19/11/2014 23:01:30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*1)	La información de todos los empleados de la empresa DATASYSTEM 
está almacenada en una variable de tipo structura  
llamada "empleado". La información con que se cuenta de 
cada empleado es: nombre, sexo y sueldo. 
Realizar un programa en C lea los  
datos de los N trabajadores de la empresa 
y que imprima los datos del empleado con mayor y menor salario.*/
 
#include<stdio.h>
#include<stdlib.h>
 
struct empleado{
	char nombre[100];
	char sexo[20];
	int sueldo;
};
 
main(){
	int N;
	printf("Ingrese la cantidad de empleados de DATASYSTEM: ");
	scanf("%d",&N);
	struct empleado E[N];
 
	int i;
	for(i=0;i<N;i++){
		printf("Ingrese los datos del empleado %d\n",(i+1));
		printf("Nombre: ");
		gets(E[i].nombre);
		printf("\n");
		printf("Sexo: ");
		gets(E[i].sexo);
		printf("Sueldo: ");
		scanf("%d",&E[i].sueldo);
		printf("\n\n");
	}
}


Hooola... Tengo un problema con este programa y quisiera saber si me pueden ayudar... ah y no se puede utilizar los comandos cin o cout jejejejeje... no nos permiten... Desde ya gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de vangodp

Programa que lea los datos de n trabajadores y que imprima los datos del empleado por salario

Publicado por vangodp (287 intervenciones) el 20/11/2014 07:22:29
Eso es por que enter tambien es un char.

ejemplo... si tienes que hacer 2 scanfs en los cuales 1º vas a leer un int y luego pulsas enter, lo que acontece es que cuando entras con un numero como bien puede ser el 23 y pulsas enter todo eso se va a parar al buffer, pero como 1º pides un numero el 23 se va a parar en la 1º variable y en la 2º que sera nuestro char pues ya se le mete el enter en ella haciendola saltar.
La solucion pasa por limpiar el buffer despues de cada lectura o bien ignorar el enter que es en lo que se base este codigo.
Existe la funcion fflush pero no la recomiendo que la uses con caracteres.
Busque formas de vaciar el buffer sin usar fflush.
Te dejo estos 2 temas para leer (no reinventar la rueda recuerda XDD).
http://foro.noticias3d.com/vbulletin/showthread.php?t=121100
http://foro.elhacker.net/programacion_cc/borrar_buffer_como_funciona_getchar-t375834.0.html

Y mi forma ignorando el enter para que no entre al buffer y asi evitar limpiarlo:

http://codepad.org/YPvVWyen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<stdio.h>
#include<stdlib.h>
 
 
struct empleado {
    char nombre[100];
    char sexo[20];
    int sueldo;
};
 
 
 
main() {
    int N;
    printf ( "Ingrese la cantidad de empleados de DATASYSTEM: " );
    scanf ( "%d%*c", &N );
    struct empleado E[N];
 
    int i;
 
    for ( i = 0; i < N; i++ ) {
        printf ( "Ingrese los datos del empleado %d\n", ( i + 1 ) );
        printf ( "Nombre: " );
        scanf ( "%99[^\n]%*c", E[i].nombre );
        printf ( "\n" );
        printf ( "Sexo: " );
        scanf ( "%19[^\n]%*c", E[i].sexo );
        printf ( "Sueldo: " );
        scanf ( "%d%*c", &E[i].sueldo );
        printf ( "\n\n" );
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

Programa que lea los datos de n trabajadores y que imprima los datos del empleado por salario

Publicado por Kevin (3 intervenciones) el 20/11/2014 21:04:46
Muchas Gracias mann!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar