Fecha y hora actual: Sab 31 Jul, 2010 05:53 am
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

paso de estructuras por ref.

Responder al Tema

Índice del Foro > C, C#, Visual C++ > paso de estructuras por ref.

Autor Mensaje
Eamanesan
Usuario Iniciado


Registrado: 11 Feb 2010
Mensajes: 18

Mensaje Publicado: Vie 05 Mar, 2010 22:26 pm

Título del mensaje: paso de estructuras por ref.

Responder citando

hola a tods! esoty haciend un programa d clase con estructuras y ficheros entiendo el paos d una estructura por ref pero el problema se m ha presentado al querer usar esa estructura dentr d un procedimiento que esta a su vez dentro de otro, es una estruct de contadores os pongo el procedimiento para q lo veais xq el programa es larguillo para ponerlo tdo:
void imprimirsueldo(FILE *flistsu,contadores *cont,registro re)
{
if(cont->cl1>6)
{
if(cont->cp1!=1)
fprintf(flistsu,"\f");
cabecero1(&cont,flistsu);
}
fprintf(flistsu,"%10d %15s %15d\n",re.cod_empleado,re.nombre,re.sueldo+re.extra);
cont->cl1=cont->cl1+1;
}


como veis en la acbecera del procedmiento le pase la estructura cont por referencia pero la pase proque la necesito en el procedimiento de dentro "cabecero1" y creo q m da error poner ahi & cuando en el procedimiento grande tiene *, no se como pasarsela a ese procedimiento mas pequeño :s llevo ya un buen rato y m voya volver loca Llorón ... si alguien puede ayudarme lo agradeceria Guiño Guiño

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 890
Ubicación: y*width+x

Mensaje Publicado: Vie 05 Mar, 2010 22:39 pm

Título del mensaje: Re: paso de estructuras por ref.

Responder citando

muéstrame esas estructuras, cómo tienes declaradas los registros que le pasas a la función y por favor usar [code]... nos vemos


http://www.youtube.com/watch?v=DzLKIW86hmM
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Eamanesan
Usuario Iniciado


Registrado: 11 Feb 2010
Mensajes: 18

Mensaje Publicado: Vie 05 Mar, 2010 22:45 pm

Título del mensaje: Re: paso de estructuras por ref.

Responder citando

//listado empleados: creamos dos listados: listado empleados y listado sueldos(imprimimos en esos dos ficheros)
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#include"ficheros.h"
typedef struct
{
int cod_empleado;
char nombre[25];
char localidad[20];
int sueldo;
char sexo;
int extra;
}registro;
typedef struct
{
int cl1;
int cp1;
int cl2;
int cp2;
int ts;
int th;
int tm;
}contadores;
void rellenardatosempleados(FILE *femple,registro *re);
void inicializarcont(contadores *cont);
void rellenarfichero(FILE *femple);
void generarlistados(FILE *femple);
void imprimirsueldo(FILE *flistsu,contadores *cont,registro re);
void cabecero1(contadores *cont,FILE *flistsu);
main()
{
FILE *femple;
FILE *flistem;
rellenarfichero(femple);
generarlistados(femple);
getch();
}






//******************************************************************************
void rellenardatosempleados(registro *re)
{

printf("cod_empleado: ");
fflush(stdin);
scanf("%d",&re->cod_empleado);
printf("nombre: ");
fflush(stdin);
gets(re->nombre);
printf("localidad: ");
gets(re->localidad);
printf("sueldo: ");
fflush(stdin);
scanf("%d",&re->sueldo);
printf("sexo: ");
fflush(stdin);
scanf("%c",&re->sexo);
printf("extra: ");
fflush(stdin);
scanf("%d",&re->extra);
}
//******************************************************************************
void inicializarcont(contadores *cont)
{
cont->cl1=8;
cont->cp1=1;
cont->cl2=8;
cont->cp2=1;
cont->ts=0;
cont->th=0;
cont->tm=0;
}
//******************************************************************************
void rellenarfichero(FILE *femple)
{
char resp;
registro re;
femple=abrirfichero("femple","wb");
do
{
rellenardatosempleados(&re);
fwrite(&re,sizeof(re),1,femple);
printf("quieres otro empleado?\n");
fflush(stdin);
scanf("%c",&resp);
while(resp!='s' && resp!='S' && resp!='N' && resp!='n')
{
printf("respuesta no valida s/n\n");
fflush(stdin);
scanf("%c",&resp);
}
}
while(resp=='s' || resp=='S');
cerrarfichero(femple);
}
//******************************************************************************
void generarlistados(FILE *femple)
{
FILE *flistsu;
registro re;
contadores cont;
inicializarcont(&cont);
femple=abrirfichero("femple","rb");
flistsu=abrirfichero("listadosueldos.doc","w");
//flistem=abrirfichero("listadoempleados.doc","w");
fread(&re,sizeof(re),1,femple);
while(!feof(femple))
{
imprimirsueldo(flistsu,&cont,re);
//imprimirlineasempleados(femple,&cont,flistem);
fread(&re,sizeof(re),1,femple);
}
fcloseall();
}
//******************************************************************************
void imprimirsueldo(FILE *flistsu,contadores *cont,registro re)
{
if(cont->cl1>6)
{
if(cont->cp1!=1)
fprintf(flistsu,"\f");
cabecero1(&cont,flistsu);
}
fprintf(flistsu,"%10d %15s %15d\n",re.cod_empleado,re.nombre,re.sueldo+re.extra);
cont->cl1=cont->cl1+1;
}
//******************************************************************************
void cabecero1(contadores *cont,FILE *flistsu)
{
fprintf(flistsu," pag %d\n",cont.cp1);
fprintf(flistsu," listado sueldos \n");
fprintf(flistsu," _______________ \n");
fprintf(flistsu," cod_empleado nombre sueldo total \n");
fprintf(flistsu," ________________________________ \n");
cont.cl1=5;
cont.cp1=cont.cp1+1;
}
//******************************************************************************

aqui va el programa entero realmnte tngo q crear otro fichero para listar la otra mitad d los datos pero primero probe solo con uno precisamente pro si m pasa esto no tener tanto q mirar... :s no se si entenderas lo q hace: cree estructura "registro re"donde guardo las estructuras rellenadas ya y lgo tngo q escribir una parte d ls datos en un fichero y la otra parte en otro, yo hice el primero el d los sueldos, m lo escribe bien si quito el procedimiento"cabecero1"y meto lo q hay en ese proc en el otro am sgrande pero esq no entiend xq no funciona asi. gracias por adelantado
Código:

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Eamanesan
Usuario Iniciado


Registrado: 11 Feb 2010
Mensajes: 18

Mensaje Publicado: Vie 05 Mar, 2010 22:54 pm

Título del mensaje: Re: paso de estructuras por ref.

Responder citando

por cierto en el procedimiento "cabecero1" no use puntos use -> pero lo cambie para probar y se m paso quitarlo

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Eamanesan
Usuario Iniciado


Registrado: 11 Feb 2010
Mensajes: 18

Mensaje Publicado: Vie 05 Mar, 2010 23:13 pm

Título del mensaje: Re: paso de estructuras por ref.

Responder citando

ya encontre la slucion! claro tenia q poner cabecero1(*&cont,flistsu);
tngo q poner *& juntos porq es ambas cosa s ala vez jaja anda q vaya tela .... probe y sono la flauta XD cmo no cai antes.... gracias igual! Guiño

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 890
Ubicación: y*width+x

Mensaje Publicado: Sab 06 Mar, 2010 02:05 am

Título del mensaje: Re: paso de estructuras por ref.

Responder citando

de nada.. y por favor, que no están difícil usar el [code]


ejemplo:
[code]
Hola esto es una prueba
[/code]

de la otra forma no se hace legible, y me da dolor de cabeza leerlo...

me alegro que dieras con la solución...ya luego te miro el código...


http://www.youtube.com/watch?v=DzLKIW86hmM
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Eamanesan
Usuario Iniciado


Registrado: 11 Feb 2010
Mensajes: 18

Mensaje Publicado: Sab 06 Mar, 2010 12:44 pm

Título del mensaje: Re: paso de estructuras por ref.

Responder citando

sorry esq no sabia lo de code pero ahora entiendo q sino es un jaleo...gracias ^^

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Paso de estructura a thread

WhiteSkull C, C#, Visual C++ 5 Vie 23 Abr, 2010 22:34 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Problema con estructuras(Registros) y archivos ...

Kevin62 C, C#, Visual C++ 2 Mar 20 Abr, 2010 16:23 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Una ayuda (cadenas y estructuras).

Litnoiz C, C#, Visual C++ 15 Sab 20 Feb, 2010 18:46 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ejercicio "definición de estructuras"

KRM_76 Pseudocódigo o notación pseudocodificada 2 Mar 17 Nov, 2009 18:17 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Paso a presentarme

iniversal Preséntate a la comunidad 4 Sab 05 Sep, 2009 17:10 pm Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,