Hola podrían ayudarme con este ejercicio de Vectores.
Publicado por Belen (1 intervención) el 09/06/2020 05:12:10
1. A pedido del usuario:
1. Cargar un vector A con una cantidad Fil de valores aleatorios enteros, que estén en el intervalo
[0,Max]. Validar que Max sea mayor o igual que 0 y menor o igual a 100, también validar que Fil
sea mayor que cero y menor o igual a Max.
2. Cargar un vector B con valores enteros hasta que el operador no quiera ingresar mas valores. La
cantidad de valores debe estar en la variable entera Col. El intervalo de los valores y validaciones son
idénticas que para el ítem 1.
3. Insertar todos los valores de B en A en una posición Pos elegida por el usuario, validar que Pos esté
en el intervalo [1,Fil]. Validar que la nueva cantidad de valores del vector A sea mayor que cero y
menor o igual a Max.
4. Mostrar el vector A modificado.
5. Salir.
Hice todos los puntos mencionados, pero en el punto 3 necesito que no se borren las ultimas posiciones y valores del vector A.
En el módulo 3 al ingresar los elementos del vector B en una posición seleccionada por el usuario en el vector A, entra el vector B completo en la posición, pero me borra los valores del vector A que estaban a partir de esa posición.
Necesito que funcione de la misma forma como en la siguiente imagen.
Por ejemplo cargo el Vector A (1,0,3,18,5) y el Vector B (43,12,23,9,55), elijo la posición 4 del Vector A para insertar el Vector B y debería quedar el Vector A (1,0,3,43,12,23,9,55,18,5).
Pero con el módulo que hice me queda el Vector A (1,0,3,43,12,23,9,55) y esto está mal.

Este es el programa que hice:
1. Cargar un vector A con una cantidad Fil de valores aleatorios enteros, que estén en el intervalo
[0,Max]. Validar que Max sea mayor o igual que 0 y menor o igual a 100, también validar que Fil
sea mayor que cero y menor o igual a Max.
2. Cargar un vector B con valores enteros hasta que el operador no quiera ingresar mas valores. La
cantidad de valores debe estar en la variable entera Col. El intervalo de los valores y validaciones son
idénticas que para el ítem 1.
3. Insertar todos los valores de B en A en una posición Pos elegida por el usuario, validar que Pos esté
en el intervalo [1,Fil]. Validar que la nueva cantidad de valores del vector A sea mayor que cero y
menor o igual a Max.
4. Mostrar el vector A modificado.
5. Salir.
Hice todos los puntos mencionados, pero en el punto 3 necesito que no se borren las ultimas posiciones y valores del vector A.
En el módulo 3 al ingresar los elementos del vector B en una posición seleccionada por el usuario en el vector A, entra el vector B completo en la posición, pero me borra los valores del vector A que estaban a partir de esa posición.
Necesito que funcione de la misma forma como en la siguiente imagen.
Por ejemplo cargo el Vector A (1,0,3,18,5) y el Vector B (43,12,23,9,55), elijo la posición 4 del Vector A para insertar el Vector B y debería quedar el Vector A (1,0,3,43,12,23,9,55,18,5).
Pero con el módulo que hice me queda el Vector A (1,0,3,43,12,23,9,55) y esto está mal.

Este es el programa que hice:
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
program Vectores;
uses
crt;
const
Max= 100;
type
TVector= array[1..Max] of integer;
var
A, B: TVector;
Fil, Col, S, Posicion: integer;
resp1: char;
Procedure CargarVectorA(var A: TVector; var Fil: integer);
var
Max, i:integer;
begin
repeat
writeln('Ingrese la cantidad maxima del intervalo [1,Max]');
readln(Max);
until (Max >= 0) and ( Max <= 100);
begin
repeat
writeln('Ingrese la cantidad de valores a generar:');
readln(Fil);
until (Fil > 0) and (Fil <= Max);
randomize;
for i := 1 to Fil do
A[i] := 1 + Random(Max);
for i := Fil+1 to Max do
A[i] := 0;
end;
end;
Procedure CargarVectorB(var B: TVector; var Col: integer);
var
Max, i, numero:integer;
begin
i:= 0;
resp1:= 'n';
repeat
writeln('Ingrese la cantidad maxima del intervalo [1,Max]');
readln(Max);
until (Max >= 0) and ( Max <= 100);
repeat
repeat
write('Ingrese un numero: ');
readln(numero);
until (numero >= 0) and (numero <= Max);
begin
i := i + 1;
B[i] := numero;
end;
writeln('Quiere ingresar mas valores? (s/n)');
readln(resp1);
until resp1='n';
Col := i;
end;
procedure insertar(var A: TVector; var B: TVector; var Fil: integer; var Col: integer; Pos: integer);
var
i: Integer;
begin
if (Fil > 0) and (Col > 0) then
begin
if (Pos > 0) then
for i := 1 to Col do
A[i + Pos - 1] := B[i];
Fil := Pos + Col - 1;
end;
end;
procedure mostrarVector1(A: TVector; Fil: integer);
var
i: integer;
begin
writeln('Elementos del Vector A:');
for i := 1 to Fil do
writeln('Valor[',i,']=', A[i]);
end;
procedure menu(var Opc: integer);
begin
writeln('1) - Cargar Vector A');
writeln('2) - Cargar Vector B');
writeln('3) - Insertar los valores del Vector B en el Vector A');
writeln('4) - Mostrar Vector A');
writeln('5) - Salir');
writeln('Elija una opcion');
readln(Opc);
end;
begin
S:= 5;
repeat
clrscr;
menu(S);
case S of
1: begin
cargarVectorA(A, Fil);
end;
2: begin
cargarVectorB(B, Col);
end;
3: begin
//fixme validar la posición
repeat
writeln('Ingrese la posicion: ');
readln(Posicion);
until (Posicion <= Max);
insertar(A, B, Fil, Col, Posicion);
end;
4: mostrarVector1(A, Fil);
5: begin
writeln('Hasta luego!');
end
else
writeln('Error en la opcion...');
end;
readln;
until (S=5);
end.
Valora esta pregunta


1