Arreglo de structs
Publicado por Juan (1 intervención) el 11/04/2014 21:48:11
Hola, les cuento mi problema. Tengo que hacer el siguiente problema con un arreglo de structs:
Desarrolle un programa que lea los datos de un conjunto de alumnos sobre un arreglo de structs y realice los siguientes procesos:
--Nombre del alumno con máximo promedio.
--Listado, nombres,matrículas y promedio de los alumnos con promedio inferior a x (dato).
Como es uno de los primeros programas que escribo, lo que hice en principio es hacer la lectura y la escritura, pero ingreando sólo una nota. Cuando agrego las 2 notas siguientes me devuelve mal los valores, me devuelve caracteres y numeros que parece que son direcciones de memoria. Acá les mando el código con el error que les cuento:
De cualquier manera se me complica con el tema de los punteros, que no se donde usarlos, ya que hasta el momento no hemos visto memoria dinámica, y no se si es necesario usarlo en un programa usando memoria estática.
Tengo ese problema y con los parámetros que hay que pasa dentro de los paréntesis de las funciones. Ahí comente en el código la funcion promedio que creo que está mal.
A ver quien me puede dar una mano.
Desarrolle un programa que lea los datos de un conjunto de alumnos sobre un arreglo de structs y realice los siguientes procesos:
--Nombre del alumno con máximo promedio.
--Listado, nombres,matrículas y promedio de los alumnos con promedio inferior a x (dato).
Como es uno de los primeros programas que escribo, lo que hice en principio es hacer la lectura y la escritura, pero ingreando sólo una nota. Cuando agrego las 2 notas siguientes me devuelve mal los valores, me devuelve caracteres y numeros que parece que son direcciones de memoria. Acá les mando el código con el error que les cuento:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <stdio.h>
#define N 1
typedef struct lista {
char nom[40];
long mat[30];
int nota1[40];
int nota2[40];
int nota3[40];
} ALUM;
void lee_struct();
//float promedio();
void escribe();
void lee_struct(){
int i; ALUM alumnos[N];
for(i=0;i<N;i++){
fflush(stdin);
printf("\nIngrese el nombre del alumno %d: ",i+1);
gets(alumnos[i].nom);
fflush(stdin);
printf("\nIngrese la matricula del alumno %d: ",i+1);
scanf("%d",&alumnos[i].mat);
fflush(stdin);
printf("\nIngrese la nota del alumno %d: ",i+1);
scanf("%d",&alumnos[i].nota1);
fflush(stdin);
printf("\nIngrese la nota2 del alumno %d: ",i+1);
scanf("%d",&alumnos[i].nota2);
fflush(stdin);
printf("\nIngrese la nota3 del alumno %d: ",i+1);
scanf("%d",&alumnos[i].nota3);
fflush(stdin);
}
}
/* float promedio (){
int i,j,suma; float prom,aux; ALUM alumnos[N];
for(i=0;i<N;i++){
suma=alumnos[i].nota1 + alumnos[i].nota2 + alumnos[i].nota3;
prom=suma/3;
aux=prom;
if (prom > aux){
max=prom
else
prom=aux;
}
}
printf("El mayor promedio es: %g , del alumno: %d",prom,i);
} */
int main(){
lee_struct();
//promedio();
escribe();
return 0;
}
void escribe() {
int i; ALUM alumnos[N];
printf("\n\nMOSTRAR DATOS\n");
for(i=0;i<N;i++){
printf("\nNombre del alumno %d =========> ",i+1);
puts(alumnos[i].nom);
printf("\nMatricula del alumno %d =========> %d ",i+1,*alumnos[i].mat);
printf("\nNota1 del alumno %d =========> %d ",i+1,*alumnos[i].nota1);
printf("\nNota2 del alumno %d =========> %d ",i+1,*alumnos[i].nota2);
printf("\nNota3 del alumno %d =========> %d ",i+1,*alumnos[i].nota3);
printf("\n\n");
}
}
De cualquier manera se me complica con el tema de los punteros, que no se donde usarlos, ya que hasta el momento no hemos visto memoria dinámica, y no se si es necesario usarlo en un programa usando memoria estática.
Tengo ese problema y con los parámetros que hay que pasa dentro de los paréntesis de las funciones. Ahí comente en el código la funcion promedio que creo que está mal.
A ver quien me puede dar una mano.
Valora esta pregunta


0