• Domingo 16 de Junio de 2019, 08:51

Autor Tema:  error de compilacion  (Leído 557 veces)

matias52

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
error de compilacion
« en: Miércoles 2 de Septiembre de 2009, 07:15 »
0
hola nesesito hacer para la facultad un algoritmo que rellene un vector A de 40 elementos con numeros consecutivos a partir de un numero M ingresado por teclado y luego mostrar cada posicion del vector con su valor y me da un error en la compilacion pero no entiendo cual es. si alguien encuentra el error le agradeceria que me lo diga.
esto fue lo que hice.





program vector;

uses wincrt;

var
   vector_a:array[1..40] of integer;
   m:integer;
   i:integer;
begin
     clrscr;
     writeln ('ingrese el valor: ');
     readln(m);
     i:=1;
     vector_a[1]:=m;
     for i:= 2 to 40 do    
     m:=m+1;
     vector_a:=m;
     end
     for i:=1 to 40 do                                                     {es en esta linea donde me da el error}
     writeln('la posicion es: ' i ' el valor es: ' vector );
     end
end.

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: error de compilacion
« Respuesta #1 en: Miércoles 2 de Septiembre de 2009, 14:31 »
0
Cita de: "matias52"
hola nesesito hacer para la facultad un algoritmo que rellene un vector A de 40 elementos con numeros consecutivos a partir de un numero M ingresado por teclado y luego mostrar cada posicion del vector con su valor y me da un error en la compilacion pero no entiendo cual es. si alguien encuentra el error le agradeceria que me lo diga.
esto fue lo que hice.

  Bien, no dices qué compilador estás usando, asumiré que es Turbo Pascal, entonces...

[pascal:6ja68gjt]
  1. program vector;
  2.  
  3. uses wincrt; { <--- wincrt no existe en Turbo Pascal, has querido usar crt }
  4.  
[/pascal:6ja68gjt]

[pascal:6ja68gjt]
  1.     for i:= 2 to 40 do    
  2.      m:=m+1; { <--- este for solo ejecuta hasta acá }
  3.      vector_a[i]:=m;
  4.      end { <--- por lo tanto este end está de más }
  5.  
[/pascal:6ja68gjt]

Has olvidado poner un begin inmediatamente después del for. Recuerda que si un ciclo for debe ejecutar más de una sentencia entonces todas las sentencias tienen que estar dentro de un bloque begin... end; así:
[pascal:6ja68gjt]
  1.  
  2. for i:= 2 to 40 do
  3. begin
  4.      m:=m+1;
  5.      vector_a[i]:=m;
  6. end;
  7.  
[/pascal:6ja68gjt]
También recuerda que las sentencias terminan con punto y coma.

[pascal:6ja68gjt]
  1.     for i:=1 to 40 do                                                     {es en esta linea donde me da el error}
  2.      writeln('la posicion es: ' i ' el valor es: ' vector[i] );
  3.      end { <--- este end está de más }
  4.  
[/pascal:6ja68gjt]
Tal como dije recién, si el for solo ejecutará una sentencia no es necesario encerrar esa sentencia con begin... end.
La regla es "para cada begin debe corresponderle un end" excepto en la sentencia case, que lleva end pero no begin.

Un saludo.