
Como realizo el sig ordenamiento en C?
Publicado por Gabriel (10 intervenciones) el 01/11/2016 06:42:33
Hola a todos.Mi pregunta es como hago para imprimir la lista de las 10 mejores alumnas(no alumnos), sin usar qsort() ni punteros. qsort() ?
Aca les dejo las preguntas para que puedan entender mejor mi codigo. La pregunta que no entiendo es solo la N°2, los otros ya estan echos.
N1° : Ingresar los datos de los alumnos de un establecimiento consistentes en NOMBRE(string de30 caracteres) ; Sexo (char) ; Y NOTAS de 10 materias codificadas de 0 a 9 (int).El ingreso terminara cuando se ingrese el nombre "FIN".Se sabe que el establecimiento no tiene mas de 1000 Alumnos.
N2° : IMPRIMIR LA LISTA DE LAS 10 MEJORES ALUMNAS. (ESTE ES EL QUE NO EINTIENDO)
N°3: Indicar cuantos alumnos hay en el establecimiento cuyo promedio sea mayor o igual que 4 y menor que 7.
N°4: Permitir el ingreso de un nombre y mostrar la totalidad de sus datos, o bien si no pertenece al establecimiento.
Mi codigo:
Aca les dejo las preguntas para que puedan entender mejor mi codigo. La pregunta que no entiendo es solo la N°2, los otros ya estan echos.
N1° : Ingresar los datos de los alumnos de un establecimiento consistentes en NOMBRE(string de30 caracteres) ; Sexo (char) ; Y NOTAS de 10 materias codificadas de 0 a 9 (int).El ingreso terminara cuando se ingrese el nombre "FIN".Se sabe que el establecimiento no tiene mas de 1000 Alumnos.
N2° : IMPRIMIR LA LISTA DE LAS 10 MEJORES ALUMNAS. (ESTE ES EL QUE NO EINTIENDO)
N°3: Indicar cuantos alumnos hay en el establecimiento cuyo promedio sea mayor o igual que 4 y menor que 7.
N°4: Permitir el ingreso de un nombre y mostrar la totalidad de sus datos, o bien si no pertenece al establecimiento.
Mi codigo:
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
93
94
95
96
97
98
99
100
101
102
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<ncurses.h>
#define MAX_ALUMNOS 3
#define MAX_NOTAS 3
struct alumno
{
char nombre[20];
char sexo;
int notas[MAX_NOTAS];
float promedio_final;
};
char nombre_a_buscar[20];
int main()
{
struct alumno alumnos[MAX_ALUMNOS];
int num_alumnos;
for(num_alumnos=0; num_alumnos<MAX_ALUMNOS; num_alumnos++)
{
printf("Nombre del alumno (para terminar teclee FIN): ");
scanf("%s",alumnos[num_alumnos].nombre);
if( strcmp(alumnos[num_alumnos].nombre,"FIN") == 0 )
break;
// else ....
// nota que como el if tiene un break no es necesario el else
do
{
char sexo;
printf("Sexo: M o F: ");
scanf("%s",&sexo);
alumnos[num_alumnos].sexo = toupper(sexo);
}
while(alumnos[num_alumnos].sexo != 'M' && alumnos[num_alumnos].sexo !='F');
float prom = 0.0;
int sum = 0;
for (int j=0; j<MAX_NOTAS; j++)
{
printf("Ingrese nota #%d: ",j+1);
scanf("%d",&alumnos[num_alumnos].notas[j]);
sum += alumnos[num_alumnos].notas[j];
}
prom = (float) sum / MAX_NOTAS;
printf("Promedio de este alumno: %.2f \n", prom);
}
int total = 0;
for (int i=0; i<num_alumnos; i++)
{
int suma = 0;
float promedio = 0.0;
for (int j=0; j<MAX_NOTAS; j++)
suma += alumnos[i].notas[j];
promedio = (float) suma / MAX_NOTAS;
alumnos[i].promedio_final = promedio;
if (promedio >= 4.0 && promedio < 7.0 )
total++;
}
printf("Total de alumnos con promedio >= 4 y promedio < 7 = ");
printf("%d \n", total);
do
{
printf("Ingrese un nombre para mostrar datos: ");
scanf("%s", nombre_a_buscar);
bool hay_coincidencia = false;
for(int i=0;i<MAX_ALUMNOS;i++){
if(strcmp(alumnos[i].nombre, nombre_a_buscar) == 0) {
hay_coincidencia = true;
printf("Nombre: %s \nSexo: %c \n", alumnos[i].nombre, alumnos[i].sexo);
for(int j=0;j<MAX_NOTAS;j++)
printf("Nota: #%d: %d \n", j+1, alumnos[i].notas[j]);
printf("Promedio: %.2f \n", alumnos[i].promedio_final);
}
}
if(!hay_coincidencia)
printf("El nombre ingresado no se encuentra en la lista\n");
}
while(true);
return 0;
}
Valora esta pregunta


0