Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Separata de Arreglos
Separata de Arreglos
Los arreglos son tipos de datos que permiten almacenar varios valores en una sola
variable, estas pueden ser de varias dimensiones (multidimensionales).
• Arreglos de una dimensión
• Arreglos de 2 dimensiones
• Arreglos de 3 dimensiones
Ejemplo de una Ejemplo de dos dimensiones:
dimensión:
y=8; 8 y m(3,4)=1; m 1 2 3 4
x(5)=7; m(3,2)=5; 1 0 9 0 0
x(3)=9; m(2,3)=7; 2 0 0 7 0
x(9)+1; =>error m(1,2)=m(3,2)+4; 3 0 5 0 1
x(1)=x(5)-3;
4 0 9 0 7 x
1 2 3 4 5
E1: Desarrolle un programa que calcule la suma de 2 números de n cifras. En este caso cada
número será generado aleatoriamente en un vector, donde cada elemento será cada digito.
Solución:
Sin funciones Con funciones
clc;clear;nd=4; %Programa principal
A(1)=0;A(2)=round(rand*8)+1; nd=4;
for i=3:nd N1=Genera(nd); mostrar(N1,nd);
A(i)=round(rand*9); N2=Genera(nd); mostrar(N2,nd);
end C=sumar(N1,N2,nd); mostrar(C,nd);
disp(A)
B(1)=0;B(2)=round(rand*8)+1; function N=Genera(nd)
for i=3:nd N(1)=0;
B(i)=round(rand*9); N(2)=round(rand*8)+1;
end for i=3:nd
disp(B) N(i)=round(rand*9);
C(nd)=0; end
for i=nd:-1:2
C(i-1)=floor((A(i)+B(i)+C(i))/10); function mostrar(N,nd)
C(i)=mod(A(i)+B(i)+C(i),10); for i=1:nd
end if i==1&& N(1)==0
disp(C) fprintf(' ');
else
fprintf('%d',N(i));
end
end
fprintf('\n');
function C=sumar(A,B,nd)
C(nd)=0;
for i=nd:-1:2
C(i-1)=floor((A(i)+B(i)+C(i))/10);
C(i)=mod(A(i)+B(i)+C(i),10);
end
E2: Desarrolle un programa que genere n E3: Simule el proceso de una rifa,
elementos en un arreglo p, m elementos en otro considerando que ingresa en la bolsa 100
arreglo q, los valores de los 2 arreglos serán números correspondientes a 100 personas, el
enteros entre 1 y 20, n debe ser par, luego programa deberá mostrar quien sale primero,
deberá insertar el arreglo q en medio del arreglo segundo, tercero,…..n-vo.
p generando un nuevo arreglo r, al final deberá Solución:
mostrar el arreglo r. clc;clear;
p= 5 7 8 9 q=1 4 2 r= 5 7 1 4 2 8 9 ne=20;
Solución:
rif=genera(ne);disp(rif);
clc;clear;
rif=desordenar(rif,ne);
n=4; m=5;
mostrar(rif);
p=generar(n);mostrar('p',p);
function rif=genera(ne)
q=generar(m); mostrar('q',q);
for i=1:ne
r=insertar(p,n,q,m);
rif(i)=i;
mostrar('r',r);
for i=1:n/2
r(n/2+m+i)=p(n/2+i);
end
function mostrar(nom,v)
fprintf('El vector %s es ',nom);
disp(v);
function mostrartrab(cod,sue,n)
fprintf(' No Codigo Sueldo\n');
for i=1:n
fprintf('\t%2d\t%d\t%d\n',i,cod(i),sue(i));
end
E4: Generar dos vectores V1 y V2 con valores E5: Desarrolle un programa que genere n
aleatorios, donde el número de elementos del valores al azar y realice una estadística de la
primero es mayor que el segundo y verificar si un cantidad de veces que se repite cada valor:
vector está contenido en otro vector. Ejemplo: n=6
4 3 4 -2 -2 4
Ejemplo 1: Reporte:
V1=4 5 7 8 3 4 4 =>3 veces
V2=7 8 3 3 =>1 vez
V2 está contenido en V1 -2 =>2 veces
Solución:
Ejemplo 2: clc;clear;nV=6;
V1=4 5 7 8 3 4 V=genera(nV);mostrar(V,nV);
V2=7 8 5
[U,C,nU]=calcula(V,nV);
V2 no está contenido en V1
mostrareporte(U,C,nU);
Solución:
clc;clear; function V=genera(n)
n1=10;n2=4; for i=1:n
V1=genera(n1);mostrar('V1',V1,n1); V(i)=round(rand()*9);
end
Autor: Ing. Máximo Obregón R. (+51) 951629294 / maximo@uni.edu.pe 62
V2=genera(n2);mostrar('V2',V2,n2); function mostrareporte(U,C,nU)
reportar(V1,n1,V2,n2); fprintf('Reporte:\n');
for i=1:nU
function V=genera(n) if C(i)>1
for i=1:n cad='veces';
V(i)=round(rand()*9); else
end cad='vez';
end
function reportar(V1,n1,V2,n2) fprintf('%d=>%d
if estacontenido(V1,n1, V2,n2) %s\n',U(i),C(i),cad);
fprintf('V2 esta contenido en V1\n'); end
else
fprintf('V2 no esta contenido en V1\n'); function mostrar(V,n)
end fprintf('V=')
for i=1:n
function c=estacontenido(V1,n1, V2,n2) fprintf('%d ',V(i));
c=false; end
for i=1:(n1-n2+1) fprintf('\n');
if V2(1)==V1(i) function [U,C,nU]=calcula(V,nV)
con=1; nU=0;
for j=2:n2 for i=1:nV
if V2(j)==V1(i+j-1) esta=false;
con=con+1; for j=1:nU
end if V(i)==U(j)
end esta=true;
if con==n2 C(j)=C(j)+1;
c=true; end
end end
end if ~esta
end nU=nU+1;
U(nU)=V(i);
function mostrar(nom,V,n)
C(nU)=1;
fprintf('%s=',nom)
end
for i=1:n
end
fprintf('%d ',V(i));
end
fprintf('\n');
function mostrar(V,n)
fprintf('V=')
for i=1:n
fprintf('%d ',V(i));
end
fprintf('\n');
function V=genera(n)
for i=1:n
V(i)=round(rand()*9);
end
function C=descifrar(V,n)
for i=1:n
if mod(i,2)==1
C(i)=V(i)-1;
else
C(i)=V(i)+1;
end
end
function C=cifrar(V,n)
for i=1:n
if mod(i,2)==1
C(i)=V(i)+1;
else
C(i)=V(i)-1;
end
end
4 3 4 6 4 1 6 3 V
1 2 3 4 5 6 7 8
Esta debería modificarse de tal manera que quede ordenado de la siguiente manera:
1 3 3 4 4 4 6 6 V
1 2 3 4 5 6 7 8
Existen varios algoritmos, estos están bien documentados y están disponibles en diferentes fuentes,
por ejemplo, en la siguiente URL, se presentan varias estrategias, inclusive con explicaciones
animadas:
http://lwh.free.fr/pages/algo/tri/tri_es.htm
function mostrar(cad,V,n)
fprintf('%s',cad);
for i=1:n
fprintf('%4d',V(i));
end
fprintf('\n');
function
mostrartabla(cad,cod,not,n)
fprintf('%s\n',cad);
mostrar('Codigo:',cod,n);
mostrar('Nota: ',not,n);
function mostrar(cad,V,n)
fprintf('%s',cad);
for i=1:n
fprintf('%4d',V(i));
end
fprintf('\n');
function V=generanot(n)
for i=1:n
V(i)=round(rand*20);
end
Ejemplos básicos
E1: Leer una matriz de m x n de dos E2: Generar una matriz aleatoriamente de nxn
dimensiones de varias maneras. y mostrar todos los valores impares.
Solución: Solución:
FORMA 1:
%Forma1: Leer cada elemento de la matriz clc;clear;
clc;clear; %Generando una matriz al azar
m=input('Ingrese numero de filas:'); n=3;
n=input('Ingrese numero de columnas:'); M=round(rand(n)*99)
for i=1:m %Generando los reportes
for j=1:n fprintf('Reporte:');
fprintf('\tIngrese M(%d,%d):',i,j); for i=1:n
M(i,j)=input(''); for j=1:n
end if mod(M(i,j),2)==1
end fprintf('%d ',M(i,j));
disp(M) end
end
%Forma 2: Leer la matriz directamente end
clc;clear; fprintf('\n');
M=input('Ingrese matriz:'); %[3 2;4 5]
disp(M) FORMA 2:
clc;clear;
%Forma 3: Generar una matriz aleatoriamente %Generando una matriz al azar
clc;clear; n=3;
m=input('Ingrese número de filas:'); k=0;
n=input('Ingrese número de columnas:'); M=round(rand(n)*99)
for i=1:m %Generando los reportes
for j=1:n fprintf('Reporte:');
M(i,j)=round((rand()*5))+1; for i=1:n
end for j=1:n
end if mod(M(i,j),2)==1
disp(M) k=k+1;
V(k)=M(i,j);
%Forma 4: Generar una matriz aleatoriamente end
clc;clear; end
m=input('Ingrese número de filas:'); end
n=input('Ingrese número de columnas:'); disp(V)
M=round((rand(m,n)*5))+1;
disp(M)
Solución
classdef CCirculo
properties
r
x
y
end
methods
function obj = CCirculo(r,x,y)
obj.r=r;
obj.x=x;
obj.y=y;
end
function A = area(obj)
A=pi*obj.r^2;
end
end
end
CARACTERES ESPECIALES
Carácter especial Representación
Comilla simple ''
Carácter de porcentaje %%
Barra invertida \\
Alarma \a
Retroceso \b
Salto de impresión \f
Nueva línea \n
Retorno de carro \r
Tabulación horizontal \t
Tabulación vertical \v