Ayuda con pascal

Hola!
Necesito ayuda con un programa en pascal, apenas dimos cosas en clase, y hay muchas cosas que no entiendo, tengo que hacer esto:
Dadas unas temperaturas medias diarias del mes de abril, determinar la temperatura media del mes, el numero de días con temperatura inferior a 0ºC, numero de días con temperatura superior a 15ºC, numero de días con temperaturas superiores a la media, y numero de días con temperaturas inferiores a la media, tengo que hacerlo con funciones, es decir, con 4 funciones independientes.
Si pudieras orientarme como hacerlo...
Gracias!
Respuesta
1
¿Te llego la consulta?
Esto, ¿lo tienes que hacer con vectores? (Array)
¿Sabes la cantidad de valores a ingresar o son indeterminados?
Hola, al final lo solucioné yo, hice lo siguiente:
program_Temperaturas;
{Se tienen N temperaturas almacenadas en un array. Se desea calcular la media y obtener el número de temperaturas mayores o iguales a la media}
const
{Definición de CONSTANTES}
MaxArray=10;
type
{Definición del TIPO array}
vector=array[1..MaxArray] of real;
var
{Definición de las variables}
temp:vector;
mediatemp:real;
mayores,nt,i:integer;
procedure entrada(n:integer;var v:vector);
{Definición del PROCEDIMIENTO para la lectura de array}
var
i:integer;
begin
for i:=1 to n do
ReadLn(v);
end;
{Definición de la FUNCIÓN que calcula la media de temperaturas}
function media(v:vector;n:integer):real;
var
m:real;
i:integer;
begin
m:=0;
for i:=1 to n do
m:=m+v;
media:=m/n;
end;
{Definicion de la FUNCION que calcula la media de temperaturas}
{Definicion de la FUNCION que caulcula el numero de temperaturas superiores a la media}
function nTmaxM(v:vector;n:integer;tmed:real):integer;
var
i,c:integer;
begin
c:=0;
for i:=1 to n do
if v > tmed then c:=c+1;
nTmaxM:=c
end;
{Aquí empieza el cuerpo del programa}
begin
{Descripcion de los pasos del proceso del programa}
Write('Indique el numero de temperaturas que va a introducir: ');
ReadLn(nt);
WriteLn('Introduzca las ',nt,' temperaturas: ');
entrada(nt,temp);
mediatemp:=media(temp,nt);
mayores:=nTmaxM(temp,nt,mediatemp);
WriteLn('Media ',mediatemp:3:1);
WriteLn('Superiores o iguales a la media: ',mayores);
{Esto sirve para que la pantalla no desaparezca al temrinar}
WriteLn;
Write('Pulse INTRO para continuar...');
ReadLn;
end.

El programa funciona, pero no sé si podría simplificarlo... gracias!
No, esta espectacular. Lo único que te puedo acotar es que te fijes, porque en la linea que dice:
if v > tmed then c:=c+1;

En la funcion nTmaxM, deberia ser:
if v >= tmed then c:=c+1;

Ya que el enunciado dice "cantidad de temperaturas mayores o iguales a la media"
Después hay detalles que hacen a la performance de la ejecución, pero no se si vale la pena ponerlo en este programa pero es intesante que lo sepas. Cuando se hace un c:=c+1 se cunsume más instrucciones de código de maquina que usando por ejemplo inc(c), pero es solo un detalle, el programa esta perfecto.
Cualquier duda, me avisas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas