Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/01/2015, 15:02
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Estructuras y funciones

vale vamos a ver ...
tienes unos cuantos errores y chungos, preste atencion.

se crea una estructura asi:
Código C:
Ver original
  1. struct Estructura{
  2. //aqui mis cosas
  3. };
...¿no?

pues bien... CUando vas a crear una variable(tambien llamado objeto) lo hacemos asi:

int main(){

struct Estructura miEstructura

}

y no asi: Estructura miEstructura

Para poder hacer Estructura miEstructura debes hacer el typedef que se traduce en hacer una nueva definición de tipo, con esto nos ahoramos poner el struct delante de las variables que criamos.

Entonces tienes 2 caminos. Uno es ir en todos los lugares donde hayas creado una estructura y poner struct delante de todo lo que este asi: Estructura miEstructura a modo que quede asi struct Estructura miEstructura.

La otra forma es hacer el typedef que se hace cambiando tus estructuras por estas :

Código C:
Ver original
  1. typedef struct{
  2.     char nom_materias[25];
  3.     int n[3];
  4.     float prom;
  5.    
  6. }materias;
  7.  
  8. typedef struct  {
  9.     char codigo[8];
  10.     char nombre[25];
  11.     char apellido[25];
  12.     char direccion[25];
  13.     int telefono[12];
  14.     int edad[3];
  15. }estudiante;

El otro error es que en funciones como :
int ingresar_estudiantes ( estudiante *A, materias *B )
...creas 2 punteros entre los (), luego sigues tratando como si de estructuras normales fuera, pero SON PUNTEROS.

Aqui la prueba: scanf ( " %[^\n]", A[i].codigo );

A no es un un arreglo por que le pones el [] ?? te falla la teoría.

suponiendo que haces el typedef anteriormente mencionado.

si quieres hacer un arreglo de estructuras se hace asi:
estudianteA[100] y luego se accede como has echo, A[numeroDel estudiante].codigo, pero no veo ninguna declaración de arreglos de estudiantes para que uses eso: A[i].codigo.

es mas... en todo el programa solo has creado un solo juego de variables del tipo estudiante y materias, esta al principio de main.

ademas para acceder a un objeto apuntado por un puntero debes poner el operador de indirección antes a modo que si tienes:
//puntero a estudiante
estudiantes * pEstudiante;
estudiante unEstudiante;

pEstudiante = &unEstudiante;

luego accedes como:

*pEstudiante.codigo = 10; //10 es un ejemplo, ni se si es int XD

Para crear un arreglo de estructuras estudiante seria:
estudiante unEstudiante[10];

luego entonces ya lo accedes por el indice ([]) a cada estudiante. Algo asi:
unEstudiante[0].codigo = 10;


Debes reforzar muchos conceptos por que tienes carencias. Y son muchas para hablar en pocas lineas.

Intente arreglar y si ves que no puedes vuelves a preguntar.
has el typedef y con eso ya el programa arranca. Luego ya puedes ir apañando esos A[i].codigo y cosas asi.

suerte