Está en la página 1de 8
EJERCICIOS RESUELTOS DE ARREGLOS Y MATRICES. 1.- Escribir un programa en Pascal que solicite cinco nimeros, los almacene en un array y luego calcule la media aritmética de esos numeros. PROGRAM EJERET: USES CRT: VAR arr_num:ARRAY [1..5] of REAL: VAR i, num:INTEGER: VAR media: REAL: BEGIN GirSer WAITELN (Escnba $ numeros para hacer su media aritmetica: }; TOsDO READLN(num): art_numfij=num: END. FOR':=1TO $00 media‘= media + am_nurij: mediac= media |; WRITELN (La media aritmetica es: \media-5:2); END. 2.. Escribir un programa en Pascal que tras asignar los nlimeros, 23, 45, 68, 99, 10, 15 y 4-aun array, determine la posicién del array en la que se encuentra el maximo valor. PROGRAM EJERES; USES CRT. CONST arr’ num:ARRAY|1..7] of INTEGER: (23,45,68,99,10, 15,4) VAR i.posi_max,val_max:INTEGER, BEGIN cirSer FOR BEGIN IF ar_numi] > val_max THEN BEGIN val_max:sarr_numj; posi_mar: ENO: END; WRITE (VALOR MAXIMO: ", val_max, POSIGION: ’, posi_max): END. 170 700 3.- Escribir un programa en Pascal que tras asignar los numeros, -2, 5, 8, -9, 10, 15 y .4 a un array calcule, independientemente, la suma de los elementos positivos y negativos. PROGRAM EJER89; USES CRT; CONST art! num:ARRAY [1..7] of INTEGER=(-2,5,8,-9,10,15-4) VAR i:INTEGER; VAR suma_p, suma_n:INTEGER; BEGIN orrser, FOR i:=1 TO 7 DO BEGIN IF arr_rum{i] >= 0 THEN suma_p:= suma_p + arr_numti) ELSE IF art_numil] <0 THEN suma_n:= suma_n + arr_numfi]; END; WRITELN (‘La suma de los numeros posttives es:',suma_p); WRITELN (‘La suma de los numeros negativos es: ',suma_n) END. 4. Escribir un programa en Pascal que tras asignar los numeros, 23, 45, 68, 99, 10, 15 y 4a un array, determine las posiciones del array en las que se encuentran el maximo y el minimo valor. PROGRAM EJER90; USES CRT; CONST art_num:ARRAYI1.7] of INTEGER=(23,45,68,99,10.15,4); VAR i,val_max,val_rrin,pos_max,pos_min:INTEGER; BEGIN CirSer, val_min:=arr_num{t]; val_max:=arr_num[t} FOR i:=1 TO 7 DO BEGIN IF atr_rur{i] > va_max THEN BEGIN val_max:=art_numfij; pos_max:= END; IF anr_num{i < val_min THEN WRITELN(VALOR MAXIMO: ', val_max:3, ' POSICIAN: ', pos_max:3); WRITELN(VALOR MINIMO: ’, val_min:3, ‘ POSICI2N: ', pos_min:3); END. 7.- Escribir un programa en Pascal que sume, independientemente, los elementos positivos y negativos de la siguiente matriz: 12 23 32 45-86-10 25 78 89 PROGRAM EJER92; USES CRT: CONST arr_num:ARRAY[1.3,1..3] of INTEGER=( (-12,23,-32), (45,-56,-10), (25.78.89) ); VARi,j.suma_pos.suma_neg:INTEGER; BEGIN ‘suma_pos:=0; ‘suma_nog:~0; OrSer, FOR i:=1 TO 3D0 BEGIN FOR j:=1 TO 3D0 BEGIN IF art_numfij] < 0 THEN ‘suma_neg:=suma_neg+arr_num[ij ELSE ‘suma_pos:=suma_pos+arr_numfi.j) END: END: WRITELN(SUMAPOSITIVOS: ', suma_pos:5); WRITELN(SUMANEGATIVOS: ", suma_neg'5); END. 8. Escribir un programa en Pascal que almacene en la segunda fila de la siguiente matriz los cuadrados de los datos de la primera fila: 36789 00000 PROGRAM EJER94; USES CRT; CONST art_num:ARRAY [1..2.1..5] of INTEGER=( (3.6,7,8.9) (€.0.0.0.0) j VARi,j,cuad:INTEGER; BEGIN arser; itt; FOR j:=1 TO 5D0 BEGIN FOR i:=1 TO 10 BEGIN cuad:=sar(arr_numfil); arr_rum(2,j;= cuad: WRITELN (arr_numi2): END: END; END. 9.- Escribir un programa en Pascal que sume los datos de cada una de las filas de la siguiente matriz; el resultado se almacenara en la ultima posicion de cada fila: 367890 143270 PROGRAM EJERS5; USES CRT; CONST arr_rumARRAY [1..2,1..6] of INTEGER=( (3.6.9,7.8.0), (1,4,3,2,7,0) ); VAR i,j.sumat, suma2:INTEGER; BEGIN CirSer; FOR i:=1 TO 2 D0 BEGIN FOR j:=1 TO 6 DO BEGIN IF ist THEN sumat:= sumat + art_numft,j) IF i2 THEN suma2= suma? + arr_num[2,j} END; END; WRITELN (‘La suma dela fila 1 es: ‘,sumat); WRITELN (‘La suma dela fila 2 es: “suma2), END. 10.- Escribir un programa en Pascal que sume los datos de cada una de las columnas de la siguiente matriz; el resultado se almacenara en la ultima posicion de cada columna: Noose ocean PROGRAM EJER96; USES CRT; CONST air’ rum:ARRAY [1..4.1..2] of INTEGER=( (9,2),(4,0), (8.9),(0.0)): VAR i,j,sumat,suma2:INTEGER; BEGIN orser, FOR j'=1 70 2D0 BEGIN FOR i:=1 70 4 DO BEGIN IF j-1 THEN sumat:= sumat + ar-_numfij): THEN suma2:= suma2 + art_numfil: END; END; WRITELN ('E! resultado de la suma 1 es: sumat); WRITELN ('El resultado de la suma 2 es: “suma2): END. 11.- Escribir un programa en Pascal que sume los elementos de cada una de las filas y de las columnas de la siguiente matriz; el resultado de cada suma se almacenara en la Ultima posicién de la fila o columna correspondiente. Ademas la suma total de todos los elementos de la matriz se almacenara en el elemento de la esquina inferior derecha de la matriz: 1 7 0 5 6 0 6 4 0 7 3 0 0 0 0 PROGRAM EJERS7; USES CRT; CONST arr_num:ARRAY [1...1..3] of INTEGER=( (1,7.0).(6.6.0). (6.4,0),(73,0), (0,0,0) ); VAR ij,lolakINTEGER; VAR suma_h,suma_v:INTEGER; (Es la suma horzontal y vertical) BEGIN rer, total := 0; FOR i-1 TO 5 DO. BEGIN ‘suma_h:=0; FOR ji=1TO3D0 ‘suma_hi= suma_h + arr_numti; WRITELN (‘La suma de lafila’,i es: ‘suma_h'3); total:-total + suma_h; END; WAITELN ("); FOR j:=1 TO 2D0 BEGIN ‘suma_v:=0; FOR i=1T05D0 ‘suma_y:=suma_v + ar_numi,j]; WRITELN (‘La suma de lacolumna ‘j," es: suma_v:) total:-total + suma_v; END; WAITELN ("); WRITELN (La suma total es: total); END. 12.- Escribir un programa en Pascal que almacene en un array de registros los nombres de los alumnos, sus notas parciales y finales. Hallar la nota media y mostrar un mensaje de APTO si el alumno supera 0 iguala la calificacién de 50 NO APTO si no lo alcanza. Hacerlo para un numero de 5 alumnos. Program EJ000(Input, Output); Uses Crt: Const numalumnos = 5; Type tiponctas = record nombre: Sting, parcial, final: real end; notasclese = array [1.Numaurnnos] of tiponotas Var 18: notasclase; notat, nota2: real alumno: String index: integer; Begin OlrSer, for index := 1 to numalumnos do begin write(Nombre de alumnot’.index,’):); readin(alumno); write('Nota del examen parcial: ); readin(rotat); write('Nota del examen final: ); readin(rote2); writen; with i3findex] do begin nombre := alumno; parcial := notat; final := noted end end; OlrSer, writeln (NOMBRE ':30,'Parcial'10. Final's10,’Media':10,' CALIFICACION): for index := 1 to 75 do write(='); writeln; for index := 1 to numalumnos do with i3findex] oo begin {Escrbir la sta con los resultados.) hotat := (parcial+tinal/2; {Se calcula la media} write(nombre:30, parcial: 10:2,inal:10:2); write(nota1:1 0:2); {Si la nota media es superior a 5, e! alumno est aprobado:) ifnotat >= 5 thon writeln[ *** APTO **') ese writeln(' NO APTO) 13.- Escribir un programa en Pascal que almacene en un array de registros las caracteristicas de cada persona: nombre, sexo, edad, peso, color de pelo, color de piel, color de ojos, nacionalidad y teléfono. PROGRAM EJEROtO: Uses Crt; Const numpersonas = 2; (Cambiando este valor lo podremos hacer para el numero de personas que deseemos} Type caracteristicas = record nombred, nacionaldlad2, soxod: Sting; ‘edad2: Integer; ¢_ojs2: Char; 2: Real {Croamos una fila con diferentes apartados) end; personas = Array['..numpersonas] of caractersticas; {La copiamos tantas veces como personas haya) var persons : personas; nombre. nacionalidad. sexo: String: edad, i: Integer; ops: Char; tf Real; Begin ChrSer, For i:= 1 to numpersonas do Begin WRITELN(‘Introduzca los datos de la persona numero i": 9; WRITELN; WRITE(Nombre: READLN(nombre); WRITE (Edad: '); READLN(edad) WRITE(Nacionalidad: '); READLN(nacionalidad); Repeat WRITE(Sexo (H. M):"): READLN(ex0); Until (sexo = 'H) or (sexo = 'M) or (sexo ='h’) or (Sexo ='m'); WRITE(Teleforo: ); READLN(t); Repeat WRITE(‘Color de ojos (A, V, M): ): READLN(c_ojos); ¢_ojos := UPCASE(c_ojos): Until c_ojos = 'A) or (¢_oj0s = 'V)) or (c_ojos = 'M); WRITELN; With personsfi] do Begin nombre? := nombre; edad? := edad: nacionalidac2 := nacionalidad; If [Sexo = 'H) or (sexo = ‘h) then ‘sexo? = 'S} gracias’; {2 := th © ojos? = ¢ ojos; {Almacenamos los datos dentro del array de registro) End; End: textoolor(1 1); WRITELN(‘Nombre':14,'Edad':6 Nacionalidad’:14 ‘Sexo'1 2, Telefono'1 2, Color ‘oj05212) toxtoolor(7); For i:= 1 to numpersonas do Begin with persons{i} do Bogin WRITELN(nombre2:14,edad2:6,Nacioralidad2:14,sexo2:12,t1212.0,c_ojos2:12} End; End; {Las caracteristicas que se piden al usuario para obtener informacion de las diferentes personas son simpies ‘ejemplos. Si se quieren cambiar, y poner por ejemplo, si esta casado 0 sotero, sus studies, etc., inicamente habré que crear nuevas variables o sustituir las existentes.) End, 14.- Escribir un programa en Pascal que divida todos los elementos de una matriz M (3,4) por el elemento situado en la posicién 2,2. PROGRAM EJER96, USES CRT; CONST an_num:ARRAY(1..3,1..4] of INTEGER=( (28,45,-68,99), (45,65,-76,34) (56,-75,34,98) ); VAR ijINTEGER; VAR divi:REAL; BEGIN CirSer; FOR i:=1 TO3 DO BEGIN FOR j=1 TO4DO BEGIN divis arr_numfi,j)/ arr_num(2,2}; WRITE (Dividido ',arr_num(i’3" por el numero); WRITELN (arr_num)2,2):3," ‘civic5:2); END; END; END.

También podría gustarte