Foros del Web » Programación para mayores de 30 ;) » Programación General »

lenguaje c

Estas en el tema de lenguaje c en el foro de Programación General en Foros del Web. tengo una duda , me podrian poner este codigo pero cuando necesito mas de un datos digamos cuando son mas perrsonas por favor ayudenme que ...
  #1 (permalink)  
Antiguo 26/06/2003, 10:41
 
Fecha de Ingreso: mayo-2003
Mensajes: 74
Antigüedad: 21 años
Puntos: 0
lenguaje c

tengo una duda , me podrian poner este codigo pero cuando necesito mas de un datos digamos cuando son mas perrsonas por favor ayudenme que es de vida o muerte


#include <stdio.h>

struct trabajador
{
char nombre[20];
char apellidos[40];
int edad;
char puesto[10];
};

void visualizar(struct trabajador *);
main()
{
struct trabajador fijo;
printf("Nombre: ");
scanf("%s",fijo.nombre);
printf("\nApellidos: ");
scanf("%s",fijo.apellidos);
printf("\nEdad: ");
scanf("%d",&fijo.edad);
printf("\nPuesto: ");
scanf("%s",fijo.puesto);
visualizar(&fijo);
}

void visualizar(struct trabajador *datos)
{
printf("Nombre: %s",datos->nombre);
printf("\nApellidos: %s",datos->apellidos);
printf("\nEdad: %d",datos->edad);
printf("\nPuesto: %s",datos->puesto);
}


este codigo sive para ingrese una sola persona , como hago cuando tengo que ingresar mas?'
  #2 (permalink)  
Antiguo 26/06/2003, 11:38
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
que paso con los posts????
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 26/06/2003, 11:42
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
prueba asi:


Código PHP:
#include <stdio.h>

struct trabajador
{
char nombre[20];
char apellidos[40];
int edad;
char puesto[10];
};

void visualizar(struct trabajador *);
main() 
{
  
struct trabajador fijo[20];
  
int i;

  for(
i=0;i<20;i++){
    
printf("Nombre: ");
    
scanf("%s",fijo[i].nombre);
    
printf("\nApellidos: ");
    
scanf("%s",fijo[i].apellidos);
    
printf("\nEdad: ");
    
scanf("%d",&fijo[i].edad);
    
printf("\nPuesto: ");
    
scanf("%s",fijo[i].puesto);
  }
  
visualizar(&fijo);
}

void visualizar(struct trabajador *datos)
{
  
int i;

  for(
i=0;i<20;i++){
    
printf("Nombre: %s",datos[i]->nombre);
    
printf("\nApellidos: %s",datos[i]->apellidos);
    
printf("\nEdad: %d",datos[i]->edad);
    
printf("\nPuesto: %s",datos[i]->puesto);
  }

eso solo te permite 20 empleados, si lo quieres variar mete una variable dentro de los for en lugar del 20, pero no deberás pasar de 20 usuarios (o de la cantidad que hayas declarado en la estructura).

Saludos
  #4 (permalink)  
Antiguo 26/06/2003, 12:15
 
Fecha de Ingreso: mayo-2003
Mensajes: 74
Antigüedad: 21 años
Puntos: 0
ayuda 1

si deseo ponele una funcion de que me ordene de mayor a menor y alfabeticamente
  #5 (permalink)  
Antiguo 26/06/2003, 13:04
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Mayor a menor que?

alfabeticamente solo necesitas una función de ordenación (el metodo de la burbuja es el mas sencillo).

Inviestuga cual es y desarrollala tu, es muy sencilla, si tienes problemas aqui estamos.

Saludos
  #6 (permalink)  
Antiguo 26/06/2003, 18:40
 
Fecha de Ingreso: mayo-2003
Mensajes: 74
Antigüedad: 21 años
Puntos: 0
ayuda2

Cita:
Mensaje Original por Mithrandir
prueba asi:


Código PHP:
#include <stdio.h>

struct trabajador
{
char nombre[20];
char apellidos[40];
int edad;
char puesto[10];
};

void visualizar(struct trabajador *);
main() 
{
  
struct trabajador fijo[20];
  
int i;

  for(
i=0;i<20;i++){
    
printf("Nombre: ");
    
scanf("%s",fijo[i].nombre);
    
printf("\nApellidos: ");
    
scanf("%s",fijo[i].apellidos);
    
printf("\nEdad: ");
    
scanf("%d",&fijo[i].edad);
    
printf("\nPuesto: ");
    
scanf("%s",fijo[i].puesto);
  }
  
visualizar(&fijo);
}

void visualizar(struct trabajador *datos)
{
  
int i;

  for(
i=0;i<20;i++){
    
printf("Nombre: %s",datos[i]->nombre);
    
printf("\nApellidos: %s",datos[i]->apellidos);
    
printf("\nEdad: %d",datos[i]->edad);
    
printf("\nPuesto: %s",datos[i]->puesto);
  }

eso solo te permite 20 empleados, si lo quieres variar mete una variable dentro de los for en lugar del 20, pero no deberás pasar de 20 usuarios (o de la cantidad que hayas declarado en la estructura).

Saludos
lo probe pero el compilador salta fijate donde te equivoscaste
  #7 (permalink)  
Antiguo 26/06/2003, 19:36
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Si quiere ordenar alfabeticamente pues creo que hay una funcion en string.h o en ctype.h donde hace eso... norecuerdo cual es...

Y si quieres ingresar empleados ilimitados pues utiliza la famosa lista enlazada que mithrandir una vez sugirio ...

Es asi..

Código PHP:

struct lista 
{
char nombre[20];
char apellidos[40];
int edad;
char puesto[10];
struct lista *siguiente

luego cada vez que nesesites agregar una haz esto:
haz un typedef de las estructura para que no tengamos que poner todo el nombresote.... vamos a usar DOT
typedef struct lista DOT;
define un apuntador del dipo de la estructura osea DOT ahora

DOT *inicio=NULL;

contendra el inicio de la listaNO OLVIDES PONERLE NULL
luego haz esto para crear un espacio en la memoria que contendra los nuevos datos:

Código PHP:
DOT *crear_espacio()
{

DOT *espacio;

if((
espacio=(DOT *)malloc(sizeof(DOT)))==NULL)
{
printf("No se pudo crear espacio\n");
return 
1;
}
else {

espacio->edad=0;
espacio->siguiente=NULL;
return 
espacio;
}

Luego para agregar una persiona se usa esto:
Código PHP:
struct lista *nuevo, *contador;

if(
nuevo=crear_espacio())
{
printf("No se pudo....\n");
}else
{

printf("Escriba los datos\n");
scanf("%d%s%s%s"nuevo->edadnuevo->nombrenuevo->apellidosnuevo->puesto)
if(
inicio==NULL)
{
nuevo=inicio
}
else{
for(
contador=iniciocontador->siguiente!=NULLcontador=contador->siguiente)
{
;
}

contador->siguiente=nuevo;
}

Ya esta....Despues tu las ordenas......

Espero te haya ayudado...
saludos
  #8 (permalink)  
Antiguo 27/06/2003, 09:42
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Puedes intentar lo que te dice Instru, ese codigo es para listas enlazadas, que en el mundo real es lo más optimo, pero se ve que estas empezando, lo más facil es usar un vector.

Respecto a esto:
Cita:
lo probe pero el compilador salta fijate donde te equivoscaste
Otra cosita?? además de que en esta maquina no tengo el compilador.

Se me ocurre que pueda ser:

void visualizar(struct trabajador *datos)

cambialo a:

void visualizar(struct trabajador datos[])

o:

void visualizar(struct trabajador datos)

A ver que sucede, por que no indicas ni donde es el problema ni cual es.

Saludos
  #9 (permalink)  
Antiguo 27/06/2003, 09:50
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Tambien puede ser que en la funcion visualizar de Mithrandir tengas que usar . en lugar de -> . Estoy un poco oxidado, pero creo recordar que -> es para punteros a la estructura y . para la estructura. Si datos[i] es una estructura, deberia ser . (creo). Asi:
Código:
void visualizar(struct trabajador *datos)
{
  int i;

  for(i=0;i<20;i++){
    printf("Nombre: %s",datos[i].nombre);
    printf("\nApellidos: %s",datos[i].apellidos);
    printf("\nEdad: %d",datos[i].edad);
    printf("\nPuesto: %s",datos[i].puesto);
  }
}
Por cierto, siempre que te de un mensaje de error, ponlo en el mensaje e indica la linea en la que te lo da.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 01:54.