Pascal/Turbo Pascal - array como parámetro - error de sintaxis

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

array como parámetro - error de sintaxis

Publicado por Anibal (1 intervención) el 27/05/2021 02:28:54
Hola, estoy dando los primeros pasos en la facultad con pascal y estamos viendo funciones y procedimientos con parametros, tengo un codigo que me da un erro de sintaxis pero no entiendo porque... cualquier explicacion me viene bien

el programa en si lo que hace es pedir un entero por cada dia y deberia dar como resultado la suma de esas cantidades y luego el promedio

el error me lo indica en la linea donde defino el procedure

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
Program calcular;
 
Const
  cantDias = 30;
 
Var
  A, B: array[1..cantDias] Of integer;
  suma: integer;
  promedio: real;
 
Procedure CalculaSuma(Var F: Array[1..cantDias] Of integer);
 
Var
  i: integer;
Begin
  suma := 0;
  For i:= 1 To cantDias Do
    Begin
      writeln('Escriba nro', i, ' : ');
      readln(F[i]);
      writeln(F[i-1]);
      suma := suma + F[i];
    End;
End;
 
Begin
  CalculaSuma(A);
  writeln('Suma A:');
  writeln(suma);
  CalculaSuma(B);
  promedio := suma / cantDias;
  writeln('Promedio B: ');
  writeln(promedio);
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
sin imagen de perfil
Val: 112
Bronce
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Crear un Tipo de Array

Publicado por juanba (40 intervenciones) el 07/06/2021 22:34:10
EL problema es que para pasar el array como parametro var en un procedimiento, tienes que tenerlo declarado como un type.
Por ejemplo:

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
Program calcular;
 
Const
  cantDias = 30;
 
type
  TArrayMensual = array[1..cantDias] of integer;
 
Var
  A, B: TArrayMensual;
  suma: integer;
  promedio: real;
 
Procedure CalculaSuma(Var F: TArrayMensual);
Var
  i: integer;
Begin
  suma := 0;
  For i:= 1 To cantDias Do
    Begin
      writeln('Escriba nro', i, ' : ');
      readln(F[i]);
      writeln(F[i-1]);
      suma := suma + F[i];
    End;
End;
 
Begin
  CalculaSuma(A);
  writeln('Suma A:');
  writeln(suma);
  CalculaSuma(B);
  promedio := suma / cantDias;
  writeln('Promedio B: ');
  writeln(promedio);
End.

El resto del programa me parece algo confuso, pero entiendo que lo que necesitaba aclaración era el error al compilar la linea de cabecera del procedimiento.
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