Pascal/Turbo Pascal - Como borro los datos de un Array

 
Vista:
sin imagen de perfil

Como borro los datos de un Array

Publicado por Máximo Alberto (6 intervenciones) el 25/09/2003 06:27:47
Cómo borro el dato que yo desee de un array. Por ejemplo guarde 5 nombres de artículos en un Array y quiero borrar el tercer artículo como le hago.
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:Como borro los datos de un Array

Publicado por Mar (10 intervenciones) el 25/09/2003 11:45:51
Tienes dos opciones:
*Opcion 1. (La mas chapucera), coger el último elemento del array y colocarlo en la posicion del elemento que quieres borrar.

writeln('Introduce el elemento que quieres borrar');
readln(x);
i:=1;
While (i<n)AND(a[i]<>x) DO
i:=i+1;
If i=n+1 then
Writeln('El elemento no esta en el array')
else
Begin
a[i]:=a[n];
n:=n-1
End;

* opcion 2. Desplazar todos los elementos.
(*al principio igual que el anterior*)
else
Begin
For j:=i to n-1 do
a[j]:=a[j+1];
n:=n-1;
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

RE:Como borro los datos de un Array

Publicado por Diego Romero (786 intervenciones) el 25/09/2003 15:37:14
Mar, en ambas de tus soluciones no tienes en cuenta que es posible que el array no esté completamente lleno o asumes que el array está siendo llenado con un elemento al lado del otro lo cual no necesariamente es así.
Máximo, no tiene mucho sentido "borrar" una posición del array a menos que tengas un mecanismo que te indique cual posición está ocupada y cual vacia pues como no puedes redimensionar un array dinamicamente tienes que implementar tal mecanismo (un array de booleans paralelo tal vez?)
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

RE:Como borro los datos de un Array

Publicado por mar (10 intervenciones) el 26/09/2003 10:06:24
Tienes toda la razón pero por el tipo de preguntas que hace este chico parece que esta empezando a usar el Pascal, sino hubiera especificado algo mas en la pregunta.
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

RE:Como borro los datos de un Array

Publicado por Diego Romero (786 intervenciones) el 27/09/2003 02:56:55
Tú también tienes razón. Partamos de una base, no tiene sentido "borrar" un elemento de un Array...
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
Val: 12
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

RE:Como borro los datos de un Array

Publicado por Marcelo (7 intervenciones) el 25/10/2016 21:33:06
Yo hice así. Se pide eliminar un numero de un vector de enteros. Si [1,4,6,7,8] , y por ej. el numero elegido es 6, el nuevo vector sería [1,4,7,8]. El {unico inconveniente q todavía no pude solucionar es cuando el random me elije un 0 (cero).

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
program p0018k; //ej 6. Eliminar todas las apariciones de un numero de una lista
uses crt;
 
type vector = array[1..5] of integer;
 
 var      p,s1: vector;
                  i: integer;
 
 procedure eliminar ( var s,s1: vector);
 var
    a,b,c,x: integer;
  begin
   Writeln (' Ingrese el numero a eliminar ');
   Readln (a);
   Writeln;
    c:= 5;
    For x:= 1 to c do
     If s[x] = a then      // Si el vector es igual al número elegido
      begin
       s[x]:= s[x] - a;  // Al vector le resto ese numero
       b:= c-1;           // ...y resto una posición
      end;
    For x:= 1 to b + 1 do    // desde 1 hasta esa nueva posición + 1
    begin
     s1[x]:= s[x];       // le asigno al nuevo vector, el vector modificado
      If s1[x] <> 0 then   // para que no imprima las posiciones borradas con ceros. Pero si el random me tira un 0, esa posición se borra
       Write (' ',s1[x]);        //   y lo muestro
    end;
  end;
 
 Begin
 clrscr;
 randomize;
           Writeln(' Ingrese datos ');
           Writeln;
           For i:= 1 to 5 do
            begin
            p[i]:= random (10);
            Write (' ', p[i]);
            end;
           Writeln;
           Writeln;
            eliminar (p,s1);
            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

RE:Como borro los datos de un Array

Publicado por ramon (2158 intervenciones) el 25/10/2016 22:00:06
mira pon esto así

p[i]:= random (9) + 1;

así evitas el cero
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
Val: 12
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

RE:Como borro los datos de un Array

Publicado por Marcelo (7 intervenciones) el 01/11/2016 12:24:39
Gracias capo. De todas maneras lo hice de nuevo, con algunas modificaciones y funciona mejor. Lo hice así:

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
program p0018k; //ej 6. Eliminar todas las apariciones de un numero de una lista
uses crt;
 
type vector = array[1..5] of integer;
 
 var p,s1: vector;
     i: integer;
 procedure eliminar ( s: vector);
 var
    a,c,x: integer;
  begin
   Writeln (' Ingrese el numero a eliminar ');
   Readln (a);
   Writeln;
    c:= 1; // utilizo un contador que me sirve de indice
    For x:= 1 to 5 do
     If s[x]<> a then // Si el vector es distinto al nø elegido...
      begin
       s1[c]:= s[x];  //...se lo asigno a uno nuevo (s1[c]) con indice c
       c:= c+1; // ...y le voy sumando una posicion
      end;
    For x:= 1 to c-1 do  // desde 1 hasta esa nueva posicion - 1...
     Write (' ',s1[x]);  // ... lo muestro
  end;
 
 Begin
 clrscr;
 randomize;
           Writeln(' Ingrese datos ');
           Writeln;
           For i:= 1 to 5 do
            begin
            p[i]:= random (10);
            Write (' ', p[i]);
            end;
           Writeln;
           Writeln;
            eliminar (p);
            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