Pascal/Turbo Pascal - Problema con promedio de notas

 
Vista:
sin imagen de perfil

Problema con promedio de notas

Publicado por Juan (8 intervenciones) el 17/09/2016 04:04:14
Buenas! Tengo que calcular y mostrar los mejores dos centros con su correspondiente promedio de notas. Ya hice todo pero no puedo encontrar el error..a veces me muestra bien el promedio, otras me pone 11.3, etc (imposible). Si alguien me puede dar una mano le agradeceria.

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
program tp1;
uses
	crt,dos;
const
	ncentros = 4;
	ncursos = 8;
	nalumnos = 30;
type
	centros = array[1..ncentros] of string;
	cursos = array[1..ncursos] of string;
	tabla = array[1..ncentros,1..ncursos,1..nalumnos] of integer;
var
	V:tabla;
	centro:centros =('Lujan','Campana','Chivilcoy','Capital Federal');
	curso:cursos =('Ingles','Frances','Aleman','Computacion','Algebra','Logica','Estadistica','Programacion');
 
procedure cargar_notas (var v:tabla);
var
	i,j,k:byte;
	begin
		randomize;
		for i:=1 to ncentros do
			for j:=1 to ncursos do
				for k:=1 to nalumnos do
					v[i,j,k] := random(10)+1;
		writeln('Notas cargadas aleatoriamente. Pulse cualquier tecla para volver al menu:');
	end;
 
procedure mejores_centros (var v:tabla; var centro:centros; var curso:cursos);
var
	suma:integer;
	i,j,k,centro1,centro2:byte;
	prom,mayor,mayor1:real;
	begin
		suma:=0;
		mayor:=0;
		mayor1:=0;
		centro1:=0;
		centro2:=0;
		for i:=1 to ncentros do begin
			for j:=1 to ncursos do
				for k:=1 to nalumnos do
					suma:=suma + v[i,j,k];
			prom:=suma/nalumnos/ncursos;
			if (prom>mayor) then begin
				if (mayor>mayor1) then begin
					mayor1:=mayor;
				end;
				mayor:=prom;
				centro1:=i;
				suma:=0;
			end
			else begin
				if (prom>mayor1) then begin
					mayor1:=prom;
					centro2:=i;
					suma:=0;
				end;
			end;
		end;
 
		writeln('Los dos mejores centros y sus notas (media) son:');
		writeln;
		writeln(centro1,'- ',centro[centro1],' (promedio = ',mayor:0:1,')');
		writeln(centro2,'- ',centro[centro2],' (promedio = ',mayor1:0:1,')');
	end;
 
begin
cargar_notas(V);
mejores_cursos(V,centro,curso);
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con promedio de notas

Publicado por ramon (2158 intervenciones) el 17/09/2016 19:07:54
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
{Mira tu código corregido a ver si sirve}
 
program tp1;
uses
crt,dos;
const
ncentros = 4;
ncursos = 8;
nalumnos = 30;
type
centros = array[1..ncentros] of string;
cursos = array[1..ncursos] of string;
tabla = array[1..ncentros,1..ncursos,1..nalumnos] of integer;
const
centro:centros =('Lujan','Campana','Chivilcoy','Capital Federal');
curso:cursos =('Ingles','Frances','Aleman','Computacion','Algebra',
'Logica','Estadistica','Programacion');
var
V:tabla;
 
 
procedure cargar_notas (var g:tabla);
var
i,j,k:byte;
begin
randomize;
for i:=1 to ncentros do
for j:=1 to ncursos do
for k:=1 to nalumnos do
g[i,j,k] := random(10)+1;
writeln('Notas cargadas aleatoriamente. Pulse cualquier tecla para volver al menu:');
end;
 
procedure mejores_centros (var g:tabla; var centro:centros; var curso:cursos);
var
suma:integer;
i,j,k,centro1,centro2:byte;
prom,mayor,mayor1:real;
begin
suma:=0;
mayor:=0;
mayor1:=0;
centro1:=0;
centro2:=0;
for i:=1 to ncentros do begin
for j:=1 to ncursos do
for k:=1 to nalumnos do
suma:=suma + g[i,j,k];
prom:=suma/nalumnos/ncursos;
if (prom>mayor) then begin
if (mayor>mayor1) then begin
mayor1:=mayor;
end;
mayor:=prom;
centro1:=i;
suma:=0;
end
else begin
if (prom>mayor1) then begin
mayor1:=prom;
centro2:=i;
suma:=0;
end;
end;
end;
 
writeln('Los dos mejores centros y sus notas (media) son:');
writeln;
writeln(centro1,'- ',centro[centro1],' (promedio = ',mayor:0:1,')');
writeln(centro2,'- ',centro[centro2],' (promedio = ',mayor1:0:1,')');
end;
 
begin
clrscr;
cargar_notas(V);
mejores_centros(V,centro,curso);
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con promedio de notas

Publicado por Juan (8 intervenciones) el 18/09/2016 02:54:40
Gracias por tu ayuda! pero el problema sigue persistiendo, muchas veces aparece correcto pero otras aparece el segundo centro en 0 sin nombre y otras el promedio es 10.2, etc. No se que onda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con promedio de notas

Publicado por ramon (2158 intervenciones) el 18/09/2016 21:40:05
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
{Mira esto ami no me sale mal ninguna míralo}
 
program tp1;
uses
crt,dos;
const
ncentros = 4;
ncursos = 8;
nalumnos = 30;
type
centros = array[1..ncentros] of string;
cursos = array[1..ncursos] of string;
tabla = array[1..ncentros,1..ncursos,1..nalumnos] of integer;
const
centro:centros =('Lujan','Campana','Chivilcoy','Capital Federal');
curso:cursos =('Ingles','Frances','Aleman','Computacion','Algebra',
'Logica','Estadistica','Programacion');
var
V:tabla;
 
 
procedure cargar_notas (var g:tabla);
var
i,j,k:byte;
begin
randomize;
for i:=1 to ncentros do
for j:=1 to ncursos do
for k:=1 to nalumnos do
g[i,j,k] := random(10)+1;
writeln('Notas cargadas aleatoriamente. Pulse cualquier tecla para volver al menu:');
end;
 
procedure mejores_centros (var g:tabla; var centro:centros; var curso:cursos);
var
suma:integer;
i,j,k,centro1,centro2:byte;
prom,mayor,mayor1:real;
begin
suma:=0;
mayor:=0.0;
mayor1:=0.0;
centro1:=0;
centro2:=0;
for i:=1 to ncentros do
begin
for j:=1 to ncursos do
for k:=1 to nalumnos do
suma:=suma + g[i,j,k];
prom:=suma/nalumnos/ncursos;
if (prom>mayor) then
begin
if (mayor>mayor1) then
begin
mayor1:=mayor;
end;
mayor:=prom;
centro1:=i;
suma:=0;
end
else
 begin
if (prom>mayor1) then
begin
mayor1:=prom;
centro2:=i;
suma:=0;
 end;
end;
end;
 
writeln('Los dos mejores centros y sus notas (media) son:');
writeln;
if centro1 > 0 then
writeln(centro1,'- ',centro[centro1],' (promedio = ',mayor:0:1,')');
if centro2 > 0 then
writeln(centro2,'- ',centro[centro2],' (promedio = ',mayor1:0:1,')');
end;
 
begin
clrscr;
cargar_notas(V);
mejores_centros(V,centro,curso);
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con promedio de notas

Publicado por Juan (8 intervenciones) el 19/09/2016 01:13:13
Ahi ejecute el corregido tuyo, compile y ejecute el programa hasta ver si daba ese error que te digo y si, pero esta vez ademas de mostrarme un promedo mayor a 10, me mostro el segundo centro en blanco total. Esta endemoniado este programita
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con promedio de notas

Publicado por ramon (2158 intervenciones) el 19/09/2016 13:32:03
Mirare a presentarte un ejemplo desde mi punto de vista y luego tu lo pasas a tu manera
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con promedio de notas

Publicado por ramon (2158 intervenciones) el 19/09/2016 17:36:30
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
{Mira esto}
 
program pruevas;
uses
crt,dos;
const
ncentros = 4;
ncursos = 8;
nalumnos = 30;
type
centros = array[1..ncentros] of string;
cursos = array[1..ncursos] of string;
tabla = array[1..ncentros,1..ncursos,1..nalumnos] of integer;
const
centro:centros =('Lujan','Campana','Chivilcoy','Capital Federal');
curso:cursos =('Ingles','Frances','Aleman','Computacion','Algebra',
'Logica','Estadistica','Programacion');
var
V:tabla;
modo: Integer;
elce1, elce2 : string;
nota1, nota2 : real;
 
 
procedure cargar_notas (var g : tabla);
var
i,j,k:byte;
begin
 
for i:=1 to ncentros do
begin
for j:=1 to ncursos do
begin
for k:=1 to nalumnos do
begin
g[i,j,k] := random(9)+1;
end;
end;
end;
  writeln;
  writeln('     ***** Notas De Los 4 Centros *****');
  writeln;
  for i := 1 to ncentros do
  begin
     for j := 1 to ncursos do
     begin
       for k := 1 to nalumnos do
       begin
         write(' ',g[i,j,k]);
       end;
       writeln;
     end;
       writeln;
    end;
    writeln('   Pulse Una Tecla');
    readkey;
end;
 
 procedure mejores_centros_y_nota_media(g : tabla);
 type
    notas = record
        centro : string;
        nota : real;
       end;
 var
    temp1, temp2 : word;
    i, j, k : integer;
    me2, me1 : real;
    centro1 : string;
    resul : array[1..ncentros] of notas;
    mome : notas;
  begin
     temp1 := 0;
     temp2 := 0;
     me1 := 0.0;
     me2 := 0.0;
     for i := 1 to ncentros do
     begin
        for j := 1 to ncursos do
        begin
           for k := 1 to nalumnos do
           begin
              temp1 := temp1 + g[i,j,k];
           end;
        end;
        centro1 := centro[i];
        me1 := ((temp1 / ncursos) / nalumnos);
        resul[i].centro := centro1;
        resul[i].nota := me1;
        temp1 := 0;
        me1 := 0.0;
     end;
    for i := 1 to ncentros do
    begin
       for k := ncentros downto i + 1 do
       if resul[i].nota < resul[k].nota then
       begin
          mome := resul[i];
          resul[i] := resul[k];
          resul[k] := mome;
       end;
    end;
      writeln('    <<<< Resultados Son >>>>');
      writeln;
      writeln('  ',resul[1].centro,' = ',resul[1].nota:0:1);
      writeln('  ',resul[2].centro,' = ',resul[2].nota:0:1);
      writeln;
      writeln('   Pulse Una Tecla');
      readkey;
  end;
 
 
 
 
begin
clrscr;
randomize;
modo := lastmode;
textmode(c80 + font8x8);
cargar_notas(V);
mejores_centros_y_nota_media(V);
textmode(modo);
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar