Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas con rellenar un array pasando como parametro de una funcion

Estas en el tema de Problemas con rellenar un array pasando como parametro de una funcion en el foro de C/C++ en Foros del Web. Buenas gente, tengo un problemilla que aún no consigo entender,seguro que es una tonteria,pero he llegado a un punto que me he quedado bloquedo y ...
  #1 (permalink)  
Antiguo 17/12/2008, 11:56
 
Fecha de Ingreso: diciembre-2008
Mensajes: 1
Antigüedad: 15 años, 4 meses
Puntos: 0
Problemas con rellenar un array pasando como parametro de una funcion

Buenas gente, tengo un problemilla que aún no consigo entender,seguro que es una tonteria,pero he llegado a un punto que me he quedado bloquedo y no consigo avanzar. El tema es el siguiente,tengo que tener un programa que me permita introducir datos en un array de estructuras mediante una funcion rellenar_datos la cual recibe como parametros el array de estructuras,y un limite superior. Después tengo que presentar en pantalla el array de estructuras ya rellenado,mediante una funcion presentar_array que reciba como parametro el array de estructuras. Yo lo que he hecho ha sido lo siguiente.

#include<stdio.h>
#include<stdlib.h>

typedef struct
{
char nombre[20];
char NIF[10];
}tpersona;

void leer_clientes(tcliente[],int,int);
void escribir_clientes(tcliente[],int);

void main()
{
tcliente cliente[5];
leer_clientes(cliente,0,5);
escribir_clientes(cliente);
}

void leer_clientes(tcliente client[],int n1,int n2)
{
int i;
for(i=n1;i<n2;i++)
{
printf("\nIntroduzca nombre del cliente numero %d: ",i+1);
gets(cliente[i].nombre);
printf("\nIntroduzca el NIF del cliente numero %d: ",i+1);
gets(clienet[i].NIF);
}
}

void escribir_clientes(tcliente client[])
{
int i;
tcliente *p=NULL;
p=client;
while(p!=NULL);
{
printf("\nEl cliente numero %d es: \n",i+1);
printf("Nombre: %s\n",client[i].nombre);
printf("NIF: %s\n",client[i].NIF);
p++;
}
}

Esto es de ejemplo, la estructura q tngo yo tiene mas campos,pero no se porque al imprimir uno de los campos también me sale el nombre a continuación. Quisiera también aprender hacerlo mdiante punteros y reservando memoria con la funcion malloc,es decir,crear una matriz dinámica,pero no me sale. Espero que puedan ayudarme.Saludos
  #2 (permalink)  
Antiguo 18/12/2008, 07:03
 
Fecha de Ingreso: febrero-2006
Mensajes: 49
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Problemas con rellenar un array pasando como parametro de una funcion

Buenasss

Hace las siguientes modificaciones y despues decime

Código HTML:
#include<stdio.h>
#include<stdlib.h>

typedef struct
{
char nombre[20];
char NIF[10];
}tpersona;

void leer_clientes(tcliente[],int,int);
void escribir_clientes(tcliente[],int);

void main()
{
tcliente cliente[5];
leer_clientes(cliente,0,5);
escribir_clientes(cliente);
}

void leer_clientes(tcliente client[],int n1,int n2)
{
int i;
for(i=n1;i<n2;i++)
{
printf("\nIntroduzca nombre del cliente numero %d: ",i+1);
gets(cliente[i].nombre);
printf("\nIntroduzca el NIF del cliente numero %d: ",i+1);
gets(clienet[i].NIF);
}
}

void escribir_clientes(tcliente client[], int n)
{
int i;

for (i = 0; i < n; i++);
{
printf("\nEl cliente numero %d es: \n",i+1);
printf("Nombre: %s\n",client[i].nombre);
printf("NIF: %s\n",client[i].NIF);
}
}
Para hacerlo con memoria dinamica solo tendrias que reservar memoria para el vector de estructuras, en tu caso seria

Código HTML:
tPersona * vecPersonas;

vecPersonas = malloc (6 * sizeof(tPersona));
Tenes alguna duda mas?
Cualquier cosa aca estamos
Saludos
  #3 (permalink)  
Antiguo 03/03/2009, 23:01
 
Fecha de Ingreso: marzo-2009
Mensajes: 1
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problemas con rellenar un array pasando como parametro de una funcion

un problema, necesito un programa tengo que hallar una matriz de 3*3 y tengo que reyenar los array en c++
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 16:47.