Pascal/Turbo Pascal - memoria dinamica

 
Vista:

memoria dinamica

Publicado por mev (1 intervención) el 17/01/2005 11:34:09
Hola. Tengo un problema con la memoria dinamica. Quiero crear un vector donde el usuario (no el programador) le diga la dimension del vector. Luego quiero que el usuario asigne valores al vector. ¿Cómo se hace con Turbo Pascal? Muchas gracias
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

RE:memoria dinamica

Publicado por Hurricane (73 intervenciones) el 17/01/2005 15:38:40
Prueba lo siguiente:
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
Program MemDyn;
 
Uses
   Crt;
 
Const
    MaxElements = 10000;        {Número máximo de elemntos}
 
Const
        CountElements: Word = 0;    {Número de elementos del array}
 
Type
    MyArray = Array[1..MaxElements] of Integer;    {Array de enteros...}
    PMyArray = ^MyArray;
 
Var
   Buff :PMyArray;
   Count, I :Word;
 
{Tamaño del Array en bytes, de acuerdo a la cantidad de elementos}
Function ArraySize :LongInt;
    Begin
        ArraySize := CountElements*SizeOf(Buff^[1]);
End; {ArraySize}
 
{Vacía el Array}
Procedure FreeArray;
    Begin
        If (Buff<>NIL) then FreeMem(Buff, ArraySize);
    End; {FreeArray}
 
{Crea espacio para el array}
Procedure ReSizeArray(newCount :Word);
    Begin
        FreeArray;
        CountElements := newCount;
        GetMem(Buff, ArraySize);
    End; {ReSizeArray}
 
Begin
    Buff := NIL;
    ClrScr;
    Write('Número de elementos: ');
    ReadLn(Count);
    ReSizeArray(Count);
    For I := 1 to Count do
        Begin
            Write('[', I, ']? ');
            ReadLn(Buff^[I]);
        End; {For}
    ClrScrr;
    WriteLn('Número de elementos ingresados: ', countElements);
    For I := 1 to CountElements do
        WriteLn('[', I, '] ', Buff^[I]);
End. {MemDyn}
Espero te sea de utilidad. 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