Título: ACLARACION EN ACCESO A STRUCT Publicado por: BJM en 10 Octubre 2012, 17:42 pm Este programa no esta terminado solo quiero que me aclaren si al acceder a cada struct en este caso seccion1, seccion2, seccion3, debo declarar un puntero por cada struct o puedo utilizar un puntero general supongamos *pt?
struct { struct seccion1; struct seccion2; struct seccion3; } secciones, *p1=&secciones,*p2=secciones,*p3=secciones; struct { char asignatura1; char asignatura2; char asignatura3; char asignatura4; char asignatura5; } seccion1,seccion2,seccion3, main(){ struct *p1,*p2,*p3,*cat; int opc,n; p1=(secciones*)malloc(sizeof(secciones)); p2=(secciones*)malloc(sizeof(secciones)); p3=(secciones*)malloc(sizeof(secciones)); int menu(){ cout<<"\n MENU \n"; cout<<"1..Ingreso sección 1 (5 materias)\n"; cout<<"2..Ingreso sección 2 (4 materias)\n"; cout<<"3..Ingreso sección 3 (2 materias)\n"; cout<<"4..Volver al menu \n"; cout<<"5..salir\n"; cin>>opc; return(opc); } switch (menu()): case 1: ingreso(p1->secciones.seccion1,&n=5); break; case 2: ingreso(p2->secciones.seccion2,&n=4); break; case 3: ingreso(p3->secciones.seccion3,&n=2); break; case 4: menu(); break; default: break; } void ingreso(struct p1->secciones.seccion1,int *cat){ if(*cat>0){ cout<<"\n Ingrese asignatura 1: "; cin>>p1->secciones.seccion1.asignatura1; cout<<"\n Ingrese asignatura 2: "; cin>>p1->secciones.seccion1.asignatura2; if(*cat<=2){ cout<<"\n Ingrese asignatura 3: "; cin>>p1->secciones.seccion2.asignatura3; cout<<"\n Ingrese asignatura 4: "; cin>>p1->secciones.seccion2.asignatura4; } if(*cat<=5){ cout<<"\n Ingrese asignatura 5: "; cin>>p1->secciones.seccion1.asignatura5; } } Título: Re: ACLARACION EN ACCESO A STRUCT Publicado por: avesudra en 10 Octubre 2012, 17:57 pm Hola Mari2012 , no, no tienes porqué declarar un puntero por cada struct , accedes directamente con el operador '.' sin las comillas y un apunte las estructuras seccion1 , sección2 y seccion3 tienes que declararlas antes de la estructura secciones ya que las utiliza.
Otra aclaración , las funciones no se declaran dentro de las llaves del main normalmente, es decir : Código
PD : No escribas en mayúsculas, dá mala impresión antes de leer el mensaje, por lo menos a mí , y cuando vayas a postear un código , lo seleccionas y te vas donde pone GeSHi , abres el menú desplegable y seleccionas el lenguaje que sea para que se vea coloreado como el de arriba. ¡Un saludo! ;D Título: Re: ACLARACION EN ACCESO A STRUCT Publicado por: BJM en 10 Octubre 2012, 20:45 pm Gracias avesudra, tenia en cuenta que faltaba los prototipos de funciones, el codigo no lo he terminado, tambien para la proxima omitire las mayusculas, la mayoria no lo utiliza, ahora tengo una nueva duda en la linea 20, el compilador indica :
variable or field `ingreso' declared void Código
Título: Re: ACLARACION EN ACCESO A STRUCT Publicado por: avesudra en 10 Octubre 2012, 22:25 pm Mmmm pues es porque no indicas cual es la estructura a pasar es decir , tu para poner un puntero a una estructura tienes que poner cual es la estructura:
Código Aunque en tu código veo innecesario el paso de la estructura pues después siempre asignas el mismo campo, no sé si notas que la estructura secciones es global. Otra cosa a corregir , en C: Código En C++ : Código Tienes un poco de lio con los punteros y las estructuras.Para declarar una estructura puedes hacer esto: Código Si lo hacemos como tu haces tenemos: Código
Yo que tú le pegaba un buen repaso a las estructuras , haría algo con ellas un poco complejo y después pasas al manejo de punteros con ellas , si no te puedes volver loco/a. Título: Re: ACLARACION EN ACCESO A STRUCT Publicado por: BJM en 11 Octubre 2012, 17:18 pm Si tendre que reforzar la base, ahora estoy probando otra manera de manipular los punteros en este caso, si tengo:
Código
Código
Es decir: Código
;D Título: Re: ACLARACION EN ACCESO A STRUCT Publicado por: avesudra en 11 Octubre 2012, 21:25 pm Pero es que no tienes nada claro porque date cuenta que ahí en ese pedazo de código , el puntero pt termina apuntando SOLO a variable n , que por cierto un nombre de una variable no puede llevar espacios. Y no hace falta asignarle un puntero a una variable global , que ya es accesible en todo el programa.
|