Vale aclarar que trabajo con C y no con C++ y que el archivo con el que trabajo es de extencion *.cpp. Tambien me da error al compilar con windows o linux en ambos no puedo lograr lo que necesito...
Necesito pasar una estructura local al main, por referencia a otra funcion...
Basicamente yo declaro las cosas de la siguiente manera:
Código:
#include <stdio.h> #include <stdlib.h> #include <conio.h> //==============ESTRUCTURA=================// struct datoscli { int Monto; }; struct datosreg { struct datoscli datos[999]; }; //===============FUNCIONES==================// void Graba_Fact (struct datosreg *v[]); int main()/*PRINCIPAL*/ { struct datosreg inforeg[2], *punterovector; //El puntero creo que debo usarlo para pasar la estructura, pero no se como. . . .//bue aca va el resto del codigo... . //============Pasando Vector a funcion==============// Graba_Fact(&inforeg); }//Fin Main //Aca afuera deberia ir la funcion void Graba_Fact (struct datosreg *v[]) {. ..... ...... }
Dejo el codigo completo para que tengan una mejor idea.
Código:
#include <stdio.h> #include <stdlib.h> #include <conio.h> //==============ESTRUCTURA=================// struct datoscli { int Monto; }; struct datosreg { struct datoscli datos[999]; }; //===============FUNCIONES==================// void Graba_Fact (struct datosreg *v[]); int main()/*PRINCIPAL*/ { //==========Variables===============// struct datosreg inforeg[2], *punterovector; int codreg, numcli; //Variables de Codigo de Region y Numero de Cliente respectivamente. int band0=0,band1=0,band2=0; //Las banderas se usan en los Case del switch. int Maxcli0=0, Maxcli1=0, Maxcli2=0; //Numero de cliente con el MAximo monto. int MaxMonto0=0, MaxMonto1=0, MaxMonto2=0; //Monto Maximo correspondiente a region 1 - 2 y 3. //==========Comienzo================// system("cls"); printf ("Ingrese codigo de region (1 - 2 - 3) 0=SALIR:"); scanf ("%d",&codreg); while(codreg>0 && codreg<4) {//0 Para SALIR printf("\nIngese Numero Cliente:"); scanf ("%d",&numcli); printf("\nIngese Monto:"); scanf("%d",&inforeg[codreg-1].datos[numcli].Monto); switch(codreg)//El switch se encarga de seleccionar el lugar donde guardar el maximo dependiente de la region. { case 1: if(band0=0 || inforeg[0].datos[numcli].Monto > MaxMonto0) { band0=1; Maxcli0=numcli; MaxMonto0=inforeg[0].datos[numcli].Monto; };break; case 2: if(band1=0 || inforeg[1].datos[numcli].Monto > MaxMonto1) { band1=1; Maxcli1=numcli; MaxMonto1=inforeg[1].datos[numcli].Monto; };break; case 3: if(band2=0 || inforeg[2].datos[numcli].Monto > MaxMonto2) { band2=1; Maxcli2=numcli; MaxMonto2=inforeg[2].datos[numcli].Monto; };break; } printf ("\n\nIngrese PROXIMO codigo de region (1 - 2 - 3) 0=SALIR:"); scanf ("%d",&codreg); };//Fin While. //============Pasando Vector a funcion==============// Graba_Fact(&inforeg); //===============Finalizando=================// printf("\n\nLos mayores son:"); printf("\nCod Reg..........Nro.Cli..........Monto\n"); printf("....1..............%d..............%d\n",Maxcli0,MaxMonto0); printf("....2..............%d..............%d\n",Maxcli1,MaxMonto1); printf("....3..............%d..............%d\n",Maxcli2,MaxMonto2); printf("\n\n FIN \n\n\n"); return 0; }/*FIN MAIN*/