OBJETIVO 6.3. MANEJO DE ARREGLOS LLENADO DE UN VECTOR Un arreglo se puede llenar de dos formas una de manera aleatoria en donde el compilador llena el arreglo y otra forma es darle la oportunidad al usuario de indicar los valores que tendrá el vector Ejemplo de la implementación del llenado de un arreglo de forma aleatoria Código en Turbo Pascal PROGRAM llenado_vec; USES crt; CONST n = 4; VAR v1 : array [1..n] of Integer; i : integer; BEGIN clrscr; randomize; FOR i:=1 TO n DO BEGIN v1[i]:= random(100); {random(100), genera valores aleatorios de 0…99} END; readkey; END. Ejemplo de implementación del llenado de un arreglo mediante el uso del teclado PROGRAM llenado_vec; USES crt; CONST n = 4; VAR v1 : array [1..n] of Integer; i : integer; BEGIN clrscr; writeln('LLenando Arreglo'); writeln; FOR i:=1 TO n DO BEGIN write('[',i,']: '); readln(v1[i]); END; readkey; END. Ing. Nahiby Castillo 1 IMPRIMIR UN VECTOR Existen muchas formas de imprimir los elementos de un vector por la pantalla, en esta sección se presenta un método práctico para imprimir los valores de un vector. Código de Turbo Pascal PROGRAM llenado_vec; USES crt; CONST n = 4; VAR v1 : array [1..n] of Integer; i : integer; BEGIN clrscr; writeln('Valores Arreglo'); writeln; FOR i:=1 TO n DO BEGIN write('[',v1[i],'] '); END; readkey; END. Ejercicios resueltos para tratamiento de vectores. 1) Escribir un programa que permita llenar e imprimir los valores de un arreglo El programa utilizara dos ciclos importantes, uno para llenar un vector y luego otro para imprimir todo el vector. Estos dos ciclos siempre serán los mismos sin importar el tamaño de un vector {programa para llenar e imprimir un conjunto de números } PROGRAM ejer1; USES crt; CONST n = 4; VAR v1 : array [1..n] of Integer; i : integer; BEGIN clrscr; writeln('Llenando el Arreglo'); writeln; FOR i:=1 TO n DO BEGIN write('[',i,']: '); Ing. Nahiby Castillo 2 readln(v1[i]); END; writeln; writeln('Valores del Arreglo'); writeln; FOR i:=1 TO n DO BEGIN write('[',v1[i],'] '); END; readkey; END. 2) Escribir un programa que permita calcular el porcentaje de números pares existentes en el vector Es importante acotar que la variable “cont”, cuenta la cantidad de números pares en el vector es inicializado en 0(cero), fuera del ciclo (for), donde será utilizado { Programa para calcular porcentaje de pares } PROGRAM ejer2; USES crt; CONST n = 4; VAR v1 : array [1..n] of Integer; i : integer; cont,por : real; BEGIN clrscr; writeln('Llenando el Arreglo'); writeln; cont:=0; FOR i:=1 TO n DO BEGIN write('[',i,']: '); readln(v1[i]); IF (v1[i] mod 2) = 0 THEN cont:=cont+1 END; por := (cont*100)/N; writeln('El % de pares es: ',por:4:2); readkey; END. Ing. Nahiby Castillo 3 3) Escribir un Programa que permita imprimir los valores que estén en las posiciones pares del vector Se podrá observar que lo único que se debe realizar es imprimir en otro ciclo los elementos del arreglo pero incrementando el índice del arreglo de dos en dos { Programa para imprimir valores en posiciones pares } PROGRAM ejer3; USES crt; CONST n = 4; VAR v1 : array [1..n] of Integer; i : integer; BEGIN clrscr; writeln('Llenando el Arreglo'); writeln; FOR i:=1 TO n DO BEGIN write('[',i,']: '); readln(v1[i]); END; writeln('Valores en posiciones pares'); writeln; i:=2; WHILE i<=n DO BEGIN write('[',v1[i],'] '); i:=i+2; END; readkey; END. 4) Escribir un Programa que permita imprimir los valores del vector al revés Es importante señalar que en lenguaje C nunca se llega a la posición n por eso el índice en el código de C, se comienza en n-1 y se llega hasta la posición 0 { Programa para imprimir un arreglo al revés } PROGRAM ejer4; USES crt; CONST n = 4; VAR v1 : array [1..N] of Integer; Ing. Nahiby Castillo 4 i : integer; BEGIN clrscr; writeln('LLenando Arreglo'); writeln; FOR i:=1 TO n DO BEGIN write('[',i,']: '); readln(v1[i]); END; writeln; writeln('Valores al reves son:'); writeln; FOR i:=n DOWNTO 1 DO BEGIN writeln('[',v1[i],'] '); END; readkey END. 5) Escribir un Programa que permita calcular el promedio del vector Es importante observar que la variable “S” es un acumulador y se debe recordar que todo acumulador debe inicializarse fuera del ciclo donde se esta utilizado. { Programa para imprimir el promedio de un vector } PROGRAM ejer5; USES crt; CONST n = 4; VAR v1 : array [1..n] of Integer; i : integer; s : real; BEGIN clrscr; writeln('LLenando Arreglo'); writeln; s:=0; FOR i:=1 TO n DO BEGIN write('[',i,']: '); readln(v1[i]); s:=s+v1[i]; END; writeln; writeln('El promedio del arreglo es:',s/N:4:2); readkey END. Ing. Nahiby Castillo 5 MÁXIMOS Y MÍNIMOS DE UN ARREGLO Para buscar el máximo entre un conjunto de números se debe tomar en cuanta varias cosas. Para ello se crea una variable llamada max para el valor máximo o min para el valor mínimo, a la que se da inicialmente el valor de ARREGLO[primera posicion]. Luego se recorren paso a paso todas las posiciones del vector, comparando el valor almacenado en la posición considerada del vector con el valor de la variable max o min según sea el caso . Si el valor de la posición considerada del vector es mayor que max o en el caso mínimo menor que min entonces se copia (se sustituye el valor) en la variable max o min este valor. De esta forma, una vez recorrido todo el vector, la variable max contendrá el máximo valor o la variable min tendrá el mínimo valor. 6) Escribir un Programa que permita obtener el máximo valor de un arreglo Este Programa es muy sencillo, si se entiende el algoritmo. La variable max acabará siendo igual al elemento mayor del conjunto. {Programa para buscar el máximo de un conjunto de números } PROGRAM ejer6; USES crt; CONST n = 4; VAR v1 : array [1..n] of Integer; i,max : integer; BEGIN clrscr; writeln('Llenando el vector'); writeln; FOR i:=1 TO n DO BEGIN write('[',i,']: '); readln(v1[i]); END; max:=v1[1]; {Se asigna como máximo valor al primer elemento del vector} FOR i:=2 TO n DO BEGIN IF max < v1[i] THEN max:=v1[i] END; writeln; writeln('El valor maximo del arreglo es:',max); readkey END. Ing. Nahiby Castillo 6 7) Escribir un Programa que permita obtener la posición del máximo valor de un arreglo Este Programa es similar al anterior pero se trabaja además con el índice para identificar la posición del máximo. {Programa para buscar la posición del máximo de un conjunto de números} PROGRAM ejer7; USES crt; CONST n = 4; VAR v1 : array [1..n] of Integer; i,max,imax : integer; BEGIN clrscr; writeln('LLenando Arreglo'); writeln; FOR i:=1 TO n DO BEGIN write('[',i,']: '); readln(v1[i]); END; max:=v1[1]; imax:=1; FOR i:=2 TO n DO BEGIN if max < v1[i] then BEGIN max:=v1[i]; imax:=i END END; writeln; writeln('El valor maximo del arreglo es: ',max); writeln('Y esta en la posicion: ',imax); readkey END. 8) Escribir un Programa que permita visualizar la cantidad de apariciones del minimo En el algoritmo se puede identificar que primero se busca el mínimo, y luego se verifica en otro ciclo cuantas veces aparece {Cantidad de apariciones del mínimo} PROGRAM ejer8; USES Ing. Nahiby Castillo 7 crt; CONST n=4; VAR min,i,cont:integer; v1: array [1..n] of integer; BEGIN clrscr; writeln('Llenado del Arreglo...'); FOR i:=1 TO n DO BEGIN write('[',i,']'); readln(v1[i]) END; cont:=0; min := v1[1]; FOR i:=1 TO n DO BEGIN IF v1[i] > min THEN min := v1[i] {Se asigna el valor del vector de la posición i al mínimo} END; cont:=0; FOR i:=1 TO n DO {se cuanta los valores que son igual al mínimo} IF(v1[i]=min) THEN cont:=cont+1; writeln('El minimo aparece ',cont,' veces'); readkey; END. 9) Escribir un Programa que permita visualizar el porcentaje de apariciones del mínimo Este ejercicio es muy parecido al anterior salvo que al final se utiliza una regla de 3 para obtener el porcentaje de apariciones del mínimo { Porcentaje de apariciones del mínimo} PROGRAM ejer9; USES crt; CONST n=4; VAR min,i,cont:integer; v1: array [1..n] of integer; BEGIN clrscr; writeln('Llenado el Arreglo...'); Ing. Nahiby Castillo 8 FOR i:=1 TO n DO BEGIN write('[',i,']'); readln(v1[i]) END; min := v1[1]; FOR i:=1 TO n DO IF(v1[i]<min) THEN min := v1[i]; cont:=0; FOR i:=1 TO n DO IF(v1[i]=min)THEN cont:=cont+1; writeln('El % del minimo es: ', ((cont)*100)/(n):4:2); readkey; END. 10) Escriba un Programa que muestro el porcentaje de valores múltiplos de 3 Este ejercicio es muy parecido al anterior salvo que se busca los múltiplos de 3 para calcular el porcentaje { Porcentaje de múltiplos de 3} PROGRAM ejer10; USES crt; CONST n=4; VAR i,cont:integer; v1: array [1..n] of integer; BEGIN clrscr; writeln('Llenado el Arreglo...'); FOR i:=1 TO n DO BEGIN write('[',i,']'); readln(v1[i]) END; cont:=0; FOR i:=1 TO n DO IF((v1[i] mod 3)=0) THEN cont:=cont+1; write('El % de multiplos de 3 es: ', (cont)*100 div (n)); readkey; END. Ing. Nahiby Castillo 9 Ejercicios Propuestos. 1. Leer 10 enteros, almacenarlos en un vector y determinar en qué posición del vector está el mayor número leído. 2. Leer 10 enteros, almacenarlos en un vector y determinar en qué posición del vector está el mayor número par leído. 3. Leer 10 enteros, almacenarlos en un vector y determinar en qué posición del vector está el mayor número primo leído. 4. Cargar un vector de 10 posiciones con los 10 primeros elementos de la serie de Fibonacci y mostrarlo en pantalla. 5. Almacenar en un vector de 10 posiciones los 10 números primos comprendidos entre 100 y 300. Luego mostrarlos en pantalla. 6. Leer dos números enteros y almacenar en un vector los 10 primeros números primos Comprendidos entre el menor y el mayor. Luego mostrarlos en pantalla. 7. Leer 10 números enteros, almacenarlos en un vector y determinar en qué posiciones se encuentra el número mayor. 8. Leer 10 números enteros, almacenarlos en un vector y determinar en qué posiciones se encuentran los números terminados en 4. 9. Leer 10 números enteros, almacenarlos en un vector y determinar cuántas veces está repetido el mayor. 10. Leer 10 números enteros, almacenarlos en un vector y determinar en qué posiciones se encuentran los números con mas de 3 dígitos. 11. Leer 10 números enteros, almacenarlos en un vector y determinar cuántos números tienen, de los almacenados allí, tienen menos de 3 dígitos. 12. Leer 10 números enteros, almacenarlos en un vector y determinar a cuánto es igual el promedio entero de los datos del vector. 13. Leer 10 números enteros, almacenarlos en un vector y determinar si el promedio entero de estos datos está almacenado en el vector. 14. Leer 10 números enteros, almacenarlos en un vector y determinar cuántas veces se repite el promedio entero de los datos dentro del vector. 15. Leer 10 números enteros, almacenarlos en un vector y determinar cuántos datos almacenados son múltiplos de 3. Ing. Nahiby Castillo 10