Pascal/Turbo Pascal - No sé como poner el numero máximo y mínimo de una lista

 
Vista:
sin imagen de perfil
Val: 15
Ha disminuido su posición en 2 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

No sé como poner el numero máximo y mínimo de una lista

Publicado por Adrián (7 intervenciones) el 18/05/2020 18:51:34
El ejercicio es este:
Hacer un programa que pida que introduzcamos 10 números. Al final se mostrará
la suma de estos 10 números, la media, el máximo y el mínimo.

El código que he hecho es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Var
num,suma,i,max,min:integer;
media:real;
Begin
suma:=0;
for i=1 TO 10 DO
 Begin
  writeln('Introduce el número ',i,':');
  readln(num);
  suma:=suma+num;
 End;
writeln('La suma de los 10 números es: ',suma);
media:=suma/10;
writeln('La media es: ',media:2:2);
writeln('El número mayor es: ',max);
writeln('El número menor es: ',min);
End.

No sé como hacer para que me de el numero mayor y el menor, que es lo que entiendo que pide el enunciado. Lo he intentado de varias formas pero o lo hace segun el orden en que se escriben, o el min queda 0...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil
Val: 86
Bronce
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

No sé como poner el numero máximo y mínimo de una lista

Publicado por David (37 intervenciones) el 18/05/2020 19:10:46
Perdona, la he liado con los comentarios, reescribo todo en el siguiente post porque tengo un error.
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
Val: 86
Bronce
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

No sé como poner el numero máximo y mínimo de una lista

Publicado por David (37 intervenciones) el 18/05/2020 19:21:48
Hola Adrián.

Por si te sirve de ayuda, si pegas código en el foro es conveniente seleccionarlo y márcalo como código con el icono que pone </>, es mucho más visible (al menos para mí), así conservarás las tabulaciones que soy muy importantes.

Las variables max y min están sin valor por eso valen 0

No están inicializadas en ningún momento, ni le reemplazas su valor, de hecho el compilador debería darte esta advertencia:
"min does not seem be initialized"
"max does not seem be initialized"
(me disculpo, no recuerdo las palabras exactas)

Primero quiero que veas tu código comentado y después te pongo la solución.

Tienes otro problema, en el for i=1 le faltan los 2 puntos.
El otro problema es que si inicializas min con valor 0, a no ser que introduzcas otro número menor, 0 siempre será el valor más bajo.
¿Cómo se soluciona? inicializando min cuando introduces el primer valor.

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
Var
	num,suma,i,max,min:integer;
	media:real;
 
Begin
	// Empezamos con suma valiendo 0
	suma:=0;
 
	// Hacemos 10 ciclos/bucles/loops
	for i=1 TO 10 DO
	Begin
		//En cada uno pedimos el valor para el indice i
		writeln('Introduce el número ',i,':');
		//Lo guardamos en num
		readln(num);
		//Suma es una variable acumulativa
		//A su valor actual le añadimos el introducido
		suma:=suma+num;
 
	End;
 
	//Mostramos la suma
	writeln('La suma de los 10 números es: ',suma);
 
	//Mostramos la media
	media:=suma/10;
 
	//Mostramos la media con 2 decimales
	writeln('La media es: ',media:2:2);
	//Mostramos el valor de la variable max (que no tiene)
	writeln('El número mayor es: ',max);
	//Mostramos el valor de la variable min (que no tiene)
	writeln('El número menor es: ',min);
 
End.

La solución viene gracias a los condicionales

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
program SMMM;
 
Var
	num,suma,i,max,min:integer;
	media:real;
 
Begin
	// Empezamos con suma valiendo 0
	suma:=0;
 
	// Empezamos con min y max valiendo 0
	min :=0;
	max :=0;
	//también los puedes inicializar
	//escribiendo min,max,suma : integer = 0; en la sección var
 
	// Hacemos 10 ciclos/bucles/loops
	for i:=1 TO 10 DO
	Begin
		//En cada uno pedimos el valor para el indice i
		writeln('Introduce el número ',i,':');
		//Lo guardamos en num
		readln(num);
		//Suma es una variable acumulativa
		//A su valor actual le añadimos el introducido
		suma:=suma+num;
		//Si es el primer numero que introducimos
		if i = 1 then
			min := num; // entonces min valdrá lo que num
 
		//Comprobamos si el valor introducido es menor que el minimo actual
		if (num < min) then
			min := num; // Si es así reemplazamos el valor de min
 
		//Comprobamos si el valor introducido es mayor que el máximo actual
		if (num > max) then
			max := num; // Si es así reemplazamos el valor de max
 
	End;
 
	//Mostramos la suma
	writeln('La suma de los 10 números es: ',suma);
 
	//Mostramos la media
	media:=suma/10;
 
	//Mostramos la media con 2 decimales
	writeln('La media es: ',media:2:2);
	//Mostramos el valor de la variable max
	writeln('El número mayor es: ',max);
	//Mostramos el valor de la variable min
	writeln('El número menor es: ',min);
 
End.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 15
Ha disminuido su posición en 2 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

No sé como poner el numero máximo y mínimo de una lista

Publicado por Adrián (7 intervenciones) el 18/05/2020 19:38:26
Funciona perfectamente. Muchísimas gracias.
Soy muy novato, estoy aprendiendo a programar con Pascal en TIC de Bachillerato, vamos que no sé prácticamente nada.
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
Val: 86
Bronce
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

No sé como poner el numero máximo y mínimo de una lista

Publicado por David (37 intervenciones) el 18/05/2020 19:42:22
No hay problema, yo lo hago por pasatiempo y es un placer ayudar a alguien que quiere aprender.

Pero lo importante es que lo entiendas, yo modifiqué tu código, lo probé y maximo salia bien pero minimo salia 0

Y era porque estaba inicializado a valor 0, para máximo no supone mucho problema (aunque podrías hacer la misma jugada que hice con mínimo, realmente deberías porque imaginate que alguien pone todo numeros negativos, entonces el 0 seria el mayor y nadie introdujo el 0, estaría devolviendo el 0 como valor maximo y no seria real, seria un fallo de programa), lo que sucedía con minimo era que aunque tu metas numeros distintos, ninguno iba a reemplazar al 0 excepto uno negativo.
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
Val: 15
Ha disminuido su posición en 2 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

No sé como poner el numero máximo y mínimo de una lista

Publicado por Adrián (7 intervenciones) el 18/05/2020 19:53:29
Ya lo he corregido, gracias por el consejo :)
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