Pascal/Turbo Pascal - Matriz con Pascal

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

Matriz con Pascal

Publicado por hocine (2 intervenciones) el 11/02/2021 19:19:45
Hola,

Estoy intentando realizar una matriz dinámica (donde los elementos i,j se calculan automaticamente). He inteentado construirla con un dynamic array pero no he podido. Alguien me podría ayudar?

Un saludo!
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

Matriz con Pascal

Publicado por David (224 intervenciones) el 12/02/2021 12:31:55
Pon aquí la parte del código que tengas avanzada para intenter ayudarte.

Saludos.
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

Matriz con Pascal

Publicado por Armando Fuenmayor (6 intervenciones) el 12/02/2021 21:53:21
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
/* Hola, Estoy intentando realizar una matriz dinámica (donde los elementos i,j se calculan automaticamente). He inteentado construirla con un dynamic array pero no he podido. Alguien me podría ayudar?
Un saludo!
creo que es esto lo
que quieres
*/
 
program lawebpro;
uses crt;
  const
     maxi = 9;
     type
       matri = array  [1..maxi,1..maxi] of integer ;
 
var
  sa, i, j , tempi , tempj : integer ;
  xx : matri ;
 
  function loteria(nu:integer):integer ;
begin
  randomize;
  loteria := random(nu) + 1;
end;
 
begin
 clrscr;
 i := 0 ;
 j := 0 ;
 
 repeat
  i := loteria(maxi);
 until (i >= 3) and (i <= maxi);
 
  repeat
    j := loteria(maxi);
   until (j <> i);
 
 
 writeln(' Estas una matriz con ', i, ' filas y ',j,' columnas ');
 
  writeln;
 
 
 for tempi := 1 to i do
begin
  for tempj := 1 to j do
  begin
  xx[tempi,tempj] := random(random(300));
  end;
  writeln;
end;
 
 
 
 
 
 
 
 
 
for tempi := 1 to i do
begin
  for tempj := 1 to j do
  begin
 write(' ',xx[tempi,tempj]:6);
  end;
  writeln;
end;
 
  readln;
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

Matriz con Pascal

Publicado por David (224 intervenciones) el 13/02/2021 14:59:30
Si usas freepascal, creo que esto te puede servir.

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
program DinArray;
 
uses classes;
 
var
    lista: TStringList;
    dato: string;
    i: integer;
 
begin
    lista := TStringList.Create;
    repeat
        write('Introduce un dato (Intro para acabar): ');
        readLn(dato);
        if dato <> '' then
            lista.Add(dato);
    until dato = '';
 
    for i:= lista.Count-1 downto 0 do
        writeLn(lista[i]);
 
    writeLn('Ordenando alfabéticamente...');
    lista.Sort;
 
    writeLn('Y guardando en "lista.txt"...');
    lista.SaveToFile('lista.txt');
end.

Otra forma de hacerlo sería usando punteros, o, sin utiliarlos, en la declaracióin de tipos acotar el máximo de filas que puede introducir el usuario.
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: 6
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Matriz con Pascal

Publicado por hocine (2 intervenciones) el 14/02/2021 19:34:47
Muchísimas gracias por tu proposición. Estoy usando Pascal, y he visto en muchos manuales un comando llamado dynArray pero me estaba dando muchos problemas
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

Matriz con Pascal

Publicado por David (224 intervenciones) el 15/02/2021 17:32:44
Te dejo un ejemplo básico de como es la declaración de un array dinámico y su redimensión. Está probado para FreePascal y va bien.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Uses CRT;
 
Type
  TbyteArray = Array of Byte;
 
var
  VArray : TbyteArray;
  I      : integer;
 
begin
  setlength(Varray,11);
  for i:=1 to 10 do
    varray[i] := i*(i+2);
  for i :=1 to 10 do
    writeln(varray[i]);
    readkey;
 
end.
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