Pascal/Turbo Pascal - Ayuda Urgente por favor.

 
Vista:
Imágen de perfil de Francisco Nicolas

Ayuda Urgente por favor.

Publicado por Francisco Nicolas (3 intervenciones) el 25/11/2014 13:46:24
Tengo que hacer este ejercicio.
Introducir las variaciones del precio de todo el mes. El subprograma deberá pedir al operario que introduzca por teclado la variación de cada día del mes y devolverá el array relleno con dichos datos.
 Mostrar las variaciones de todos los días del mes. El subprograma recibirá todas las variaciones y mostrará por pantalla un listado con cada día del mes y la variación del precio de ese día.
Calcular la media. El subprograma recibirá todas las variaciones y devolverá la media de las variaciones, que posteriormente el programa principal mostrará por pantalla.
Mostrar el día que la subida fue máxima. El subprograma recibirá todas las variaciones y devolverá el día en el que la subida fue mayor (el mayor valor de todas las variaciones). Posteriormente el programa mostrará ese día y la variación de ese día.
Mostrar el día que la bajada fue máxima. El subprograma recibirá todas las variaciones y devolverá el día en el que la bajada fue mayor (el día que tiene el menor valor de todas las variaciones). Posteriormente el programa mostrará ese día y la variación de ese día.
Modificar la variación de un día concreto. El subprograma recibirá todas las variaciones, pedirá el día (comprendido entre 1 y 31), mostrará
IP
la variación de ese día y solicitará el nuevo dato para sustituir el anterior. El subprograma devolverá todas las variaciones, con la variación del día concreto modificada.
Calcular el periodo mayor de subida de precio. El subprograma recibirá todas las variaciones y devolverá el mayor número de días seguidos que ha habido subida. Ejemplo: Si tengo 1, 3, 2, -3, 1, 2  Durante tres días consecutivos se ha producido subida, luego bajo, y luego hubo dos días de subida. El programa principal posteriormente mostrará un mensaje parecido a este: “el período máximo de subida ha sido 3 días”.
Calcular el número de cambios entre días consecutivos. El subprograma recibirá las variaciones y deberá devolver cuantos cambios de la variación se han producido. Ejemplo: Si tengo -1, 3, 4, -2, 2  se han producido tres cambios entre días consecutivos (Se han producido cambios entre el día 1 y el 2, el día 3 y 4 y el día 4 y 5). El programa principal posteriormente mostrará un mensaje parecido a este: “el número de cambios entre días consecutivos han sido 3”.
Mostrar si todo el mes ha tenido bajadas. El subprograma recibirá todas las variaciones y devolverá TRUE si todas las variaciones son negativas, FALSE en caso contrario. El programa principal posteriormente mostrará un mensaje parecido a este: “Todo el mes ha tenido bajadas” o “Algún día del mes no se ha producido una bajada”.
Mostrar si cada día ha tenido una variación mayor o igual a la anterior. El subprograma recibirá todas las variaciones y devolverá TRUE si todas las variaciones son mayores o iguales que variaciones anteriores, FALSE en caso contrario. El programa principal posteriormente mostrará un mensaje parecido a este: “Ha sido un buen mes. Todas las variaciones han sido mejores que las anteriores” o “Algún día del mes no se ha producido una variación mayor o igual que la anterior”.
Buscar una variación. El subprograma recibirá todas las variaciones y la variación buscada y devolverá el primer día en el que se produjo dicha variación. Si esa variación no se encuentra, el subprograma devolverá 0. El programa principal posteriormente mostrará un mensaje parecido a este: “El primer día que se produjo esa variación fue el día N” o “Esa variación no se producido este mes”.

Mas o menos llevo cosas, pero no termino de conseguirlo, esto es lo que llevo, agradeceria la ayuda.
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
PROGRAM prac9;
CONST
	MIN=1;
	MAX=7;
TYPE
	tIndice=MIN..MAX;
	tDia=ARRAY [tIndice] OF integer;
VAR
	dias:tDia;
PROCEDURE introVarPrecio (VAR variacion:tDia);
VAR
	i:tIndice;
BEGIN {Introduccion de Variacion del Precio}
	FOR i:=MIN TO MAX DO
	BEGIN
		writeln('Introducir variacion para dia ',i);
		readln(variacion[i]);
	END;
END;{Introduccion de Variacion del precio}
 
PROCEDURE mostrarVarPrecio (dias:tDia);
VAR
	i:tindice;//i:integer;
BEGIN {Mostrar Variacion del precio}
	FOR i:=MIN TO MAX DO
		writeln('La variacion del dia [',i,']= ',dias[i]);
END;{Mostrar Variacion del precio}
 
FUNCTION media (dias:tDia):real;
VAR
	suma,i:integer;
BEGIN{media}
	suma:=0;
 	FOR i:=MIN TO MAX DO
 	suma:=suma+dias[i];
	media:=suma/(MAX-MIN);
END;{media}
 
FUNCTION mostrarDiaSubMax(dias:tDia):integer;
VAR
	i:tindice;
	varSubidaMax:integer;
BEGIN{Mostrar dia de subida maxima}
	varSubidaMax:=MIN;
	FOR i:=MIN+1 TO MAX DO
		IF dias[i]>varSubidaMax THEN
		varSubidaMax:=dias[i];
		mostrarDiaSubMax:=dias[i];
	writeln('El dia [' ,i, '] tuvo la subida maxima que tiene la variacion de: ',varSubidaMax);
END;{Mostrar dia de subida maxima}
 
FUNCTION mostrarDiaSubMin(dias:tDia):integer;
VAR
	i:tindice;
	varBajadaMax:integer;
BEGIN{Mostrar dia de subida maxima}
	varBajadaMax:=MIN;
	FOR i:=MIN+1 TO MAX DO
		IF dias[i]<varBajadaMax THEN
		varBajadaMax:=dias[i];
		mostrarDiaSubMin:=dias[i];
	writeln('El dia [' ,i, '] tuvo la bajada maxima que tiene la variacion de: ',varBajadaMax);
END;{Mostrar dia de subida maxima}
 
PROCEDURE modificarVarDia (dias:tDia);
VAR
	i:tindice;//i:integer;
BEGIN {Modificar Variacion de un dia concreto}
	REPEAT
		writeln('Introduzca el dia a modificar la variacion deseada:');
		readln(i);
	UNTIL (i>=MIN) AND (i<=MAX);
	writeln('La variacion del dia [',i,'] es ',dias[i]);
	writeln('Introduzca un nuevo dato para modificar la variacion');
	readln(dias[i]);
	writeln('Se mostraran los datos con la variacion modificada');
	FOR i:=MIN TO MAX DO
		writeln('La variacion del dia [',i,']= ',dias[i]);
END;{Modificar Variacion de un dia concreto}
 
FUNCTION periodoSubidaMax(dias:tDia):integer;
VAR
	i:tindice;//i:integer;
	diaspos:integer;
BEGIN {Periodo de Subida Maxima}
	dias:=1;
	FOR i:=MIN TO MAX DO
	IF dias[i]>diaspos THEN
		diaspos:=diaspos+1;
		periodoSubidaMax:=dias;
	writeln('El periodo de subida maxima ha sido de ',diaspos,' dias')
END;{Periodo de Subida Maxima}
 
BEGIN{Programa Principal}
	writeln('***********************************************************');
	writeln('	Autor: Francisco Nicolas Gomez');
	writeln('***********************************************************');
	writeln;
	writeln('Introduzca las variaciones del precio de todo el mes:');
	introVarPrecio(dias);
	writeln('Se muestran las variaciones de todos los días del mes:');
	mostrarVarPrecio(dias);
	writeln('La media es ',media(dias):0:2);
	mostrarDiaSubMax(dias);
	mostrarDiaSubMin(dias);
	modificarVarDia(dias);
	periodoSubidaMax(dias);
	readln;
END.{Programa Principal}
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

Ayuda Urgente por favor.

Publicado por ramon (2158 intervenciones) el 27/11/2014 00:37:46
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
{Mira los cambios y comprueva resultados}
 
PROGRAM prac9;
uses
   crt;
CONST
MIN=1;
MAX=7;
TYPE
tdian = record
       dia : integer;
       vari : integer;
     end;
 
tIndice=MIN..MAX;
tDia=ARRAY [tIndice] OF tdian;
VAR
dias:tDia;
 
PROCEDURE introVarPrecio (VAR variacion:tDia);
 VAR
i:tIndice;
 BEGIN {Introduccion de Variacion del Precio}
 FOR i:=MIN TO MAX DO
BEGIN
 writeln('Introducir variacion para dia ',i);
 readln(variacion[i].vari);
 variacion[i].dia := i;
 END;
END;{Introduccion de Variacion del precio}
 
PROCEDURE mostrarVarPrecio (dias:tDia);
 VAR
  i:integer;
  BEGIN {Mostrar Variacion del precio}
   FOR i:=MIN TO MAX DO
    writeln('La variacion del dia [',i,']= ',dias[i].vari);
 END;{Mostrar Variacion del precio}
 
 FUNCTION media (dias:tDia):real;
 VAR
   suma,i:integer;
   BEGIN{media}
   suma:=0;
    FOR i:=MIN TO MAX DO
    suma:=suma+dias[i].vari;
    media:=suma/(MAX-MIN);
 END;{media}
 
 FUNCTION mostrarDiaSubMax(dias:tDia):integer;
 VAR
   t, i:integer;
   varSubidaMax:integer;
   temp : tdian;
   BEGIN{Mostrar dia de subida maxima}
    {varSubidaMax:=MIN;
    FOR i:=MIN+1 TO MAX DO
    IF dias[i]>varSubidaMax THEN
    varSubidaMax:=dias[i];
    mostrarDiaSubMax:=dias[i];}
    for i := min to max do
     for t := max downto i + 1 do
     if dias[i].vari > dias[t].vari then
     begin
        temp := dias[i];
        dias[i] := dias[t];
        dias[t] := temp;
     end;
    writeln('El dia [' ,dias[max].dia, '] tuvo la subida maxima que tiene la variacion de: ',dias[max].vari);
  END;{Mostrar dia de subida maxima}
 
 FUNCTION mostrarDiaSubMin(dias:tDia):integer;
 VAR i,t:integer;
      varBajadaMax:integer;
      temp : tdian;
BEGIN{Mostrar dia de subida maxima}
{varBajadaMax:=MIN;
FOR i:=MIN+1 TO MAX DO
IF dias[i]<varBajadaMax THEN
varBajadaMax:=dias[i];
mostrarDiaSubMin:=dias[i];}
    for i := min to max do
     for t := max downto i + 1 do
     if dias[i].vari > dias[t].vari then
     begin
        temp := dias[i];
        dias[i] := dias[t];
        dias[t] := temp;
     end;
writeln('El dia [' ,dias[min].dia, '] tuvo la bajada maxima que tiene la variacion de: ',dias[min].vari);
END;{Mostrar dia de subida maxima}
 
PROCEDURE modificarVarDia (dias:tDia);
 VAR
i:integer;
BEGIN {Modificar Variacion de un dia concreto}
REPEAT
writeln('Introduzca el dia a modificar la variacion deseada:');
 readln(i);
UNTIL (i>=MIN) AND (i<=MAX);
 writeln('La variacion del dia [',i,'] es ',dias[i].vari);
writeln('Introduzca un nuevo dato para modificar la variacion');
readln(dias[i].vari);
 writeln('Se mostraran los datos con la variacion modificada');
FOR i:=MIN TO MAX DO
writeln('La variacion del dia [',dias[i].dia,']= ',dias[i].vari);
END;{Modificar Variacion de un dia concreto}
 
FUNCTION periodoSubidaMax(dias:tDia):integer;
 VAR
i:integer;
diaspos:integer;
BEGIN {Periodo de Subida Maxima}
 diaspos := 0;
 dias[1].vari:=1;
 FOR i:=MIN TO MAX DO
IF dias[i].vari > diaspos THEN
diaspos:=diaspos+1;
 periodoSubidaMax:=dias[i].vari;
writeln('El periodo de subida maxima ha sido de ',diaspos,' dias')
END;{Periodo de Subida Maxima}
 
 BEGIN{Programa Principal}
 clrscr;
 writeln('***********************************************************');
writeln(' Autor: Francisco Nicolas Gomez');
writeln('***********************************************************');
writeln;
 writeln('Introduzca las variaciones del precio de todo el mes:');
introVarPrecio(dias);
 writeln('Se muestran las variaciones de todos los días del mes:');
mostrarVarPrecio(dias);
writeln('La media es ',media(dias):0:2);
mostrarDiaSubMax(dias);
 mostrarDiaSubMin(dias);
modificarVarDia(dias);
 periodoSubidaMax(dias);
readln;
 END.{Programa Principal}
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
Imágen de perfil de Francisco Nicolas

Ayuda Urgente por favor.

Publicado por Francisco Nicolas (3 intervenciones) el 01/12/2014 20:56:48
Ramon, me podrias dar tu correo, para pedirte otra ayudita, muchas gracias.
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

Ayuda Urgente por favor.

Publicado por ramon (2158 intervenciones) el 03/12/2014 00:46:32
Como e comentado en varias otras solo contesto aqui a todas las preguntas que me pongais logica mente si
puedo si necesitas algo pon lo aqui y te respondere lo antes que pueda.
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

Ayuda Urgente por favor.

Publicado por Sincerebroninah (1 intervención) el 20/11/2015 11:29:08
¿Por qué en la media restas MAX-MIN?
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