Sie sind auf Seite 1von 28

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

(Universidad del Per, DECANA DE AMERICA)

FACULTAD DE INGENIERIA DE SISTEMAS E


INFORMATICA

SOLUCIONARIO PRCTICA N 2

E.P.: Ingeniera de Sistemas


Curso: Estructura de Datos

Docente: Pro Concepcin, Luzmila

Integrantes:

Cortz Escrate, Mario 16200116


De la Torre Tello, Sergio 16200117
Or Palomino, Jack 16200140
Prado Gabriel, Fabricio 16200147
Vargas Rosas, Francescca 13200081
2

1. Realizar un algoritmo para crear un arreglo, recorrer, copiar un arreglo en otro.


Crear un Arreglo
Accin Carga_Arreglo(A, N)

Inicio
Para I desde 1hasta N
Leer dato
A (i) dato
Fin Para
Fin

Recorrer un arreglo
Accin Recorre_Arreglo(A, N)
Inicio
Para I desde 1 hasta N
datoA (i)
Escribir dato
Fin Para

Fin

Copiar un arreglo
Entrada: A vector origen de dimensin N
Salida: B vector origen de dimensin M

Accin Copia_Vector(A, B, M, N)
Inicio
Para I desde 1 hasta N
B (i)=A (i)
Fin Para
M= N
Fin

2. Realizar un algoritmo para realizar la bsqueda de un elemento de un arreglo


unidimensional
Accin Busca (A, N)
Inicio
Leer I
Si (i > N)
Escribir ndice fuera de rango
Sino
Escribir A (I)
FinSi
Fin

2
3

3. Realizar la insercin de elemento en arreglo unidimensional


Entrada: A
Salida: A + elemento

Accin Adicionar_Arreglo(A, N, valor, max)


Inicio
Leer valor
Si (r>max)
Escribir No hay espacio
Sino
A (i) valor
i i +1
Finsi
Fin

4. Realizar la eliminacin de un elemento en un arreglo unidimensional


Accion Eliminar_elemento(entero n, entero posicin)
Inicio
Escribir(Eliminar elemento por posicin)
Si(N>0)
Leer posicin
Si (posicin>=N)
Escribir (No se puede eliminar una posicin que no existe)
Si no
N--
Para i desde posicin hasta N incremento de 1 en 1
A[i]=A[i+1]
Mostrar()
Escribir(Elemento insertado)
FinSi
Sino
Escribir(No hay elementos en el vector)
FinSi
Fin

5. Realizar un algoritmo para realizar el ordenamiento y la bsqueda secuencial de un


elemento en arreglo unidimensional
Accion Ordenamiento Burbuja( enterov[] , entero n)
Inicio
Para I desde 1 hasta n-1
Para J desde 1 hasta n
Si (v[j]>v[j+1])
aux=v[j]
v[j]=v[j+1]
v[j+1]=aux
Fin_si
Fin_para
Fin_para
Fin

3
4

6. Realizar la operacin de rotar dado elemento que se posicione como primer elemento
de un arreglo unidimensional.
Accion RotarElemento (A,N,Valor)
Inicio
entero Posicin
Para i de 1 a N hacer
Si (A[i] = Valor) entonces
Posicin <- i
FinSi
FinPara
Para i de 1 a (Posicin -1) hacer
A[i+1] <- A[i] FinSi
FinPara
A[1] <- Valor
Fin

7. Realizar la bsqueda de un elemento de un arreglo mediante los mtodos de


Bsqueda Secuencial y Bsqueda Binaria.
Bsqueda del Menor Elemento

Accion Entero BuscarMenor (A,N)


Inicio
Menor <- A[ 1 ]
Para i de 1 a N hacer
Si A[ i ] < Menor entonces
Menor <- A[ i ]
Posicion <- i
FinSi
FinPara
Retornar menor
Fin

Bsqueda del Mayor Elemento

Accion Entero Buscar Mayor (A,N)


Inicio
Mayor <- A[ 1 ]
Para i de 1 a N hacer
Si A[ i ] > Mayor entonces
Mayor <- A[ i ]
Posicion <- i
FinSi
FinPara
Retornar menor
Fin

4
5

8. Realizar la bsqueda de un elemento de un arreglo mediante los mtodos de


Bsqueda Secuencial y Bsqueda Binaria

Bsqueda Secuencial

Accion Entero BusquedaSecuencial (A,N,ValorBus)


Inicio
i <- 1
Encontro <- Falso
Posicion <- -1
Mientras ( i < = N y encontr)
Si ( A[ i ] = ValorBus ) entonces
Mayor <- A[ i ]
Posicion <- i
Sino
i = i +1
FinSi
FinMientras
Retornar posicin
Fin

Bsqueda Binaria

Accion Entero BusquedaBinaria (A,N,ValorBus)


Inicio
Izquierda <- 1
Derecha <- N
Mientras ( Derecha >= Izquierda )
Centro = ( Izquierda + Derecha ) / 2
Si (ValorBus = A[centro]) entonces
Posicion = Centro
Sino
Si ValorBus < A [ Centro ]
Derecha = X Izquierda
Sino
Izquierda = X + Izquierda
Finsi
Finsi
FinMientras
Fin

5
6

9. Realizar los algoritmos e implementacin:


Algoritmos

Accion crear_arregloU(A)
Inicio
Leer N
Para I desde 1 hasta N
Leer dato
A[I]dato
Fin Para
Fin

Accion mostrar_arregloU(A)
Inicio
Para I desde 1 hasta N
datoA[I]
escribir dato
Fin Para
Fin

Accion adicionar_arregloU(A)
Inicio
Leer valor
Si (N>=MAX)
Escribir el vector est lleno
SiNo
A[N]valor
N++
FinSi
Fin

Accion insertarV_arregloU(A)
Inicio
Si (N>0)
Leer valor
Leer posicin
Si (posicin>=N)
Escribir no se puede insertar en esa posicin
Sino
N++
Para ndice desde N-1 hasta posicin, disminuye de 1 en 1
A[ndice]A[ndice-1]
Fin Para
A[posicin]valor
Mostrar_arregloU(A)
FinSi
SiNo
Escribir no hay elementos en el vector
FinSi
Fin

6
7

Accion eliminarPos_arregloU(A)
Inicio
Si (N>0)
Leer posicin
Si (posicin>=N)
Escribir no puede eliminar una posicin que no existe
Sino
N- -
Para ndice desde posicin hasta N
A[ndice]A[ndice +1]
Fin Para
Mostrar_arregloU(A)
FinSi
SiNo
Escribir No hay elementos en el vector
Fin Si
Fin

Accion eliminarVal_arregloU(A)
Inicio
Si (N>0)
Leer valor
ndice = 0
Hecho = 0
Mientras (ndice<N) hacer
Si (A[ndice]=valor)
N- -
Hecho1
Para I desde ndice hasta N
A[I]A[I+1]
indice0
Fin Para
FinSi
ndice ++
Fin Mientras
Si (hecho=0)
Escribir No se encontr elemento
SiNo
Mostrar_arregloU(A)
Fin Si
Sino
Escribir No hay elementos en el vector
Fin Si
Fin

Accion orden_asc(A)
Inicio
ndice = 0
Entero menor
Mientras (ndice<N)
Menor A[ndice]
Para I desde ndice hasta N

7
8

Si (A[I]<= menor)
menorA[I]
posicionI
FinSI
Fin Para
TempA[ndice]
A[ndice]menor
A[posicin]temp
ndice++
FinMientras
Mostrar_arregloU(A )
Fin

Accion orden_des(A)
Inicio
ndice = 0
Entero mayor
Mientras (ndice<N)
Mayor 0
Para I desde ndice hasta N
Si (A[I]>=mayor)
mayorA[I]
posicionI
FinSI
Fin Para
TempA[ndice]
A[ndice]mayor
A[posicin]temp
ndice ++
FinMientras
Mostrar_arregloU(A )
Fin

Accion rotar_der(A)
Inicio
Leer posicin
Para I desde 1 hasta posicin
TempA[N-1]
Para ndice desde N-1 hasta 0, disminuye de 1 en 1
A[ndice]A[ndice-1]
Fin Para
A[0]temp
FinPara
Mostrar_arregloU(A)
Fin

8
9

Accion rotar_izq(A)
Inicio
Leer posicin
Para I desde 1 hasta posicin
TempA[0]
Para ndice desde 0 hasta N-1
A[indice]A[ndice+1]
Fin Para
A[N-1]temp
FinPara
Mostrar_arregloU(A)
Fin

Accion salvar(A,N,F)
Inicio
Primer(F)
Para I desde 1 hasta N
VA[I]
Poner(F,V)
Fin Para
Marcar(F,)
Fin

Accion recuperar(F,A,N)
Inicio
Primer(F)
Tomar(F,V)
I=0
Mientras ( Ultimo(F))
I=I+1
A[I]V
Tomar(F,V)
Fin Mientras
N=1
Fin

9
10

Implementacin en c++
#include <iostream>
#include <fstream>
#include <ctype.h>

using namespace std;

const int MAX = 4;


int B[MAX];
int N;
int valor;
int posicion;
int indice;
int temp;
fstream F;

void menu();
void crear_arregloU(int A[]);
void recorrer_arregloU(int A[]);
void mostrar_arregloU(int A[]);
void adicionar_arregloU(int A[]);
void insertarV_arregloU(int A[]);
void eliminarPos_arregloU(int A[]);
void insertarP_arregloU(int A[]);
void eliminarVal_arregloU(int A[]);
void ordenar_asc(int A[]);
void ordenar_des(int A[]);
void rotar_der(int A[]);
void rotar_izq(int A[]);
void salvar(int A[]);
void recuperar();

int main(){
int A[MAX];
char n;
menu();
do{
cout<<endl<<"Respuesta----";
cin>>n;
n=toupper(n);
switch(n){
case 'A': crear_arregloU(A);
break;
case 'B': recorrer_arregloU(A);
break;
case 'C': mostrar_arregloU(A);
break;
case 'D': adicionar_arregloU(A);
break;
case 'E': insertarV_arregloU(A);
break;
case 'F': eliminarPos_arregloU(A);
break;
case 'G': insertarP_arregloU(A);

10
11

break;
case 'H': eliminarVal_arregloU(A);
break;
case 'I': ordenar_asc(A);
break;
case 'J': ordenar_des(A);
break;
case 'K': rotar_der(A);
break;
case 'L': rotar_izq(A);
break;
case 'M': salvar(A);
break;
case 'N': recuperar();
break;
}
system("pause");
system("cls");
menu();
}while(n!='X');
cout<<endl;
system("pause");
return 0;
}

void menu(){
cout<<"##Administrar Arreglo Unidimensional##"<<endl<<endl;
cout<<"Elija una de las opciones..."<<endl<<endl;
cout<<"Crear Arreglo....................................[A]"<<endl;
cout<<"Recorrer Arreglo.................................[B]"<<endl;
cout<<"Mostrar Arreglo..................................[C]"<<endl;
cout<<"Adicionar Arreglo................................[D]"<<endl;
cout<<"Insertar por valor al Arreglo....................[E]"<<endl;
cout<<"Eliminar por posicion del Arreglo................[F]"<<endl;
cout<<"Insertar por posicion al Arreglo.................[G]"<<endl;
cout<<"Eliminar por Valor del Arreglo...................[H]"<<endl;
cout<<"Odernar en forma ascendente el Arreglo...........[I]"<<endl;
cout<<"Ordenar en forma descendente el Arreglo..........[J]"<<endl;
cout<<"Rotar el Arreglo 'k' posiciones a la derecha.....[K]"<<endl;
cout<<"Rotar el Arreglo 'k' posiciones a la izquierda...[L]"<<endl;
cout<<"Salvar el Arreglo................................[M]"<<endl;
cout<<"Recuperar el Arreglo.............................[N]"<<endl;
cout<<"Finalizar programa...............................[X]"<<endl;
}

void crear_arregloU(int A[]){


cout<<"Ingrese numero de elementos que desea agregar----";
cin>>N;
for(int i=0;i<N;i++){
cout<<"Posicion A["<<i<<"] = ";
cin>>A[i];
}
cout<<endl;
}

11
12

void recorrer_arregloU(int A[]){


cout<<"El arreglo es:"<<endl;
for(int i=0; i<N;i++){
cout<<"A["<<i<<"] = "<<A[i]<<endl;
}
}
void mostrar_arregloU(int A[]){
cout<<"El arreglo es:"<<endl;
for(int i=0; i<N;i++){
cout<<"A["<<i<<"] = "<<A[i]<<endl;
}
}
void adicionar_arregloU(int A[]){
cout<<"Adicionar Elemento al Arreglo....";
cin>>valor;
if(N>=MAX){
cout<<"El vector esta lleno"<<endl;
}else{
A[N]=valor;
N++;
}
}
void insertarV_arregloU(int A[]){
cout<<"Insertar por Valor al arreglo.... "<<endl<<endl;
if(N>0){
cout<<"Ingrese el valor--- ";
cin>>valor;
cout<<"Ingrese la posicion--[0-"<<N-1<<"] = ";
cin>>posicion;
if(posicion>=N){
cout<<"No se puede insertar en esa posicion"<<endl;
}else{
N++;
for(indice=N-1;indice>posicion;indice--){
A[indice]=A[indice-1];
}
A[posicion]=valor;
mostrar_arregloU(A);
cout<<"elemento insertado..."<<endl;
}
}else{
cout<<"No hay elementos en el vector"<<endl<<endl;
}
}

void eliminarPos_arregloU(int A[]){


cout<<"Eliminar por Posicion en el Arreglo..."<<endl<<endl;
if(N>0){
cout<<"Ingrese la posicion:[0-"<<N-1<<"] = ";
cin>>posicion;
if(posicion>=N){
cout<<"No puede eliminar una posicion que no existe"<<endl;
}else{

12
13

N--;
for(indice=posicion;indice<N;indice++){
A[indice]=A[indice+1];
}
mostrar_arregloU(A);
cout<<"Elemento eliminado..."<<endl;
}
}else{
cout<<"No hay elementos en el vector"<<endl<<endl;
}
}

void insertarP_arregloU(int A[]){


cout<<"Insertar por Posicion al arreglo.... "<<endl<<endl;
if(N>0){
cout<<"Ingrese el valor--- ";
cin>>valor;
cout<<"Ingrese la posicion--[0-"<<N-1<<"] = ";
cin>>posicion;
if(posicion>=N){
cout<<"No se puede insertar en esa posicion"<<endl;
}else{
N++;
for(indice=N-1;indice>posicion;indice--){
A[indice]=A[indice-1];
}
A[posicion]=valor;
mostrar_arregloU(A);
cout<<"elemento insertado..."<<endl;
}
}else{
cout<<"No hay elementos en el vector"<<endl<<endl;
}
}

void eliminarVal_arregloU(int A[]){


cout<<"Eliminar por Valor en el Arreglo..."<<endl<<endl;
if(N>0){
cout<<"Ingrese el valor a eliminar--- ";
cin>>valor;
indice=0;
int hecho=0;
while(indice<N){
if(A[indice]==valor){
N--;
hecho=1;
for(int i=indice;i<N;i++){
A[i]=A[i+1];
indice=0;
cout<<"Elemento eliminado..."<<endl;
}
}
indice++;
}

13
14

if(hecho==0){
cout<<"No se encontro el elemento..."<<endl;
}else{
mostrar_arregloU(A);
cout<<"Elementos elimnados..."<<endl;
}
}else{
cout<<"No hay elementos en el vector"<<endl<<endl;
}
}

void ordenar_asc(int A[]){


cout<<"ORDEN ASCENDENTE"<<endl;
indice=0;
int menor;
while(indice<N){
menor=A[indice];
for(int i=indice;i<N;i++){
if(A[i]<=menor){
menor=A[i];
posicion=i;
}
}
temp = A[indice];
A[indice]=menor;
A[posicion]=temp;
indice++;
}
cout<<"Vector ordenado..."<<endl;
mostrar_arregloU(A);
}

void ordenar_des(int A[]){


cout<<"ORDEN DESCENDENTE"<<endl;
indice=0;
int mayor;
while(indice<N){
mayor=0;
for(int i=indice;i<N;i++){
if(A[i]>=mayor){
mayor=A[i];
posicion=i;
}
}
temp = A[indice];
A[indice]=mayor;
A[posicion]=temp;
indice++;
}
cout<<"Vector ordenado..."<<endl;
mostrar_arregloU(A);
}

14
15

void rotar_der(int A[]){


cout<<"Rotar 'K' posiciones hacia la derecha"<<endl<<endl;
cout<<"Ingrese las posiciones que desea rotar--- ";
cin>>posicion;
for(int i=0;i<posicion;i++){
temp=A[N-1];
for(indice=N-1;indice>0;indice--){
A[indice]=A[indice-1];
}
A[0]=temp;
}
mostrar_arregloU(A);
cout<<"Vector rotado "<<posicion<<" posiciones"<<endl<<endl;
}

void rotar_izq(int A[]){


cout<<"Rotar 'K' posiciones hacia la izquierda"<<endl<<endl;
cout<<"Ingrese las posiciones que desea rotar--- ";
cin>>posicion;
for(int i=0;i<posicion;i++){
temp=A[0];
for(indice=0;indice<N-1;indice++){
A[indice]=A[indice+1];
}
A[N-1]=temp;
}
mostrar_arregloU(A);
cout<<"Vector rotado "<<posicion<<" posiciones"<<endl<<endl;
}

void salvar(int A[]){


cout<<"Guardar vector: "<<endl;
F.open("arregloUni.txt", ios::out);
for(indice=0;indice<N;indice++){
F<<A[indice];
B[indice]=A[indice];
}
cout<<"Vector guardado..."<<endl<<endl;
F.close();
}

void recuperar(){
cout<<"Recuperar vector: "<<endl;
posicion=0;
int buffer;
F.open("arregloUni.txt", ios::in);
while(!F.eof()){
F>>buffer;
posicion++;
}
mostrar_arregloU(B);
cout<<"Vector Recuperado..."<<endl<<endl;
F.close();
}

15
16

10. Realizar un algoritmo para almacenar y recorrer una matriz por columnas y por filas
Almacenamiento y recorrido por filas
Accin AlmacenarPorFilas(A, n, m)

Inicio
Para i desde 1 hasta n
Para j desde 1 hasta m
Leer dato
A(i,j) dato
FinPara
FinPara
FinAccin

Accin RecorridoPorFilas(A, n, m)

Inicio
Para i desde 1 hasta n
Para j desde 1 hasta m
Dato A(i,j)
Escribir dato
FinPara
FinPara
FinAccin

Almacenamiento y recorrido por columnas


Accin AlmacenaPorColumn(A, m, n)

Inicio
Para j desde 1 hasta m
Para i desde 1 hasta n
Leer dato
A(i,j) dato
FinPara
FinPara
FinAccin

Accin RecorridoPorColumn(A, m, n)

Inicio
Para j desde 1 hasta m
Para i desde 1 hasta n
Dato A(i,j)
Escribir dato
FinPara
FinPara
FinAccin

16
17

11. Realizar un algoritmo para calcular la suma de las columnas y las filas de los
elementos de una matriz
Suma de filas
Accin SumaPorFilas(A, n, m)

Arreglo bidimensional A //Entrada


Entero n, m //Entrada
Real Suma // Salida

Incio
Para i desde 1 hasta n
Suma 0
Para j desde 1 hasta m
Suma Suma + A(i,j)
FinPara
Escribir Suma de la fila, i, Suma
FinPara
FinAccin

Suma de columnas
Accin SumaPorColumn(A, n, m)

Arreglo bidimensional A //Entrada


Entero n, m //Entrada
Real Suma // Salida

Incio
Para j desde 1 hasta m
Suma 0
Para i desde 1 hasta n
Suma Suma + A(i,j)
FinPara
Escribir Suma de la columna, i, Suma
FinPara
FinAccin

12. Realizar un algoritmo para calcular la suma de dos arreglos y dar el resultado en un
tercer arreglo unidimensional

Accin SumaArreglos(A, n, B, m)

Arreglo unidimensionale A, B //Entrada


Entero n, m //Entrada
Arreglo unidimensional C // Salida

Inicio
Si n<=m entonces
Para i desde 1 hasta n
C(i) A(i) + B(i)
FinPara

17
18

Para j desde n+1 hasta m


C(j) B(j)
FinPara

Para k desde 1 hasta m


Escribir C(k)
FinPara

Sino
Para i desde 1 hasta m
C(i) A(i) + B(i)
FinPara

Para j desde m+1 hasta n


C(j) A(j)
FinPara

Para k desde 1 hasta n


Escribir C(k)
FinPara
FinSi
FinAccin

13. Realizar un algoritmo para calcular la mediana de los nmeros de un arreglo.

Accin HallarMediana(A, n)

Arreglo unidimensional A //Entrada


Entero n, indice // Entrada
Real Mediana //Salida

Inicio
Si (n mod 2 <> 0) entonces
indice (n + 1) div 2
Mediana A(ndice)
Sino
indice n div 2
Mediana [A(indice) + A(indice+1)] div 2
FinSi
Escribir La mediana del arreglo es, Mediana
FinAccin

18
19

14. Sea el siguiente problema: La moda del arreglo es el numero m que se repite con
ms frecuencia. Si varios nmeros estn repetidos con igual frecuencia mxima, no
existe moda. Realizar un algoritmo que acepte un arreglo de nmeros y retorne la moda
o una indicacin de que la moda no existe

Accion Crear_Arreglo()
Inicio
Leer cantidad;
Para i desde 0 hasta cantidad hacer
Num[i]=valor
Fin para
Fin

Accion frecuencia(entero cantidad, entero num[], entero frec[])


Inicio
Para i desde 0 hasta cantidad hacer
Contador=0
Para j desde 0 hasta cantidad hacer
Si (num[a]==num[b])
Contador++
Fin_si
Fin_para
Frec[i]=cont
Fin_para
Fin

Accion moda(entero cantidad, entero num[], entero frec[])


Inicio
Moda=0;
Para i desde 0 hasta cantidad hacer
Si(frec[i]>moda)
Moda=frec[i]
Numero=num[i]
Fin_si
Fin_para
Para i desde 0 hasta cantidad hacer
Si(moda=frec[i] num[i]!=numero)
Estado =falso;
Fin_si
Fin_para
Si (estado)
Escribir(la moda es: , moda,\n)
Si no
Escribir(no existe moda , moda,\n)
Fin_Si
Fin

19
20

15. Realizar un algoritmo para crear una matriz, salvar la matriz y copiar la matriz.
Accion crearM_fila(A,M,N)
Inicio
Para I desde 1 hasta M
Para J desde 1 hasta N
Leer dato
A[I,J]dato
Fin Para
Fin Para
Fin

Accion salvarM_fila(A,M,N,F)
Inicio
Primer(F)
Poner(F,N)
Para I desde 1 hasta M
Para J desde 1 hasta N
VA[I,J]
Poner(F,V)
Fin Para
Fin Para
Marcar (F,)
Fin

Accion copiar_matriz(A,B,M,N,M1,N1)
Inicio
Para I desde 1 hasta M
Para J desde 1 hasta N
B[I,J]A[I,J]
Fin Para
FinPara
M1=M
N1=N
Fin

16. Realizar un algoritmo para calcular el promedio de cada columna de una matriz.
Por ingreso de datos.
Por declaracin de los elementos de la matriz como una constante.

Por ingreso de datos


Accin ingresar_matriz(A,M,N)
Inicio
Filas = M
Para I desde 1 hasta M
Para J desde 1 hasta N
Leer dato
Fin Para
Fin Para
Para J desde 1 hasta N
Suma = 0
20
21

Para I desde 1 hasta M


Suma = Suma + A[I,J]
Fin Para
Promedio = suma / Filas
Escribir el promedio de la columna,J,es,Promedio
Fin Para
Fin

Por datos como una constante


Accin ingresar_matriz(A,M,N)
Inicio
Real A[M,N]={{15,16},{9,8},{7,9}}
Para J desde 1 hasta N
Suma = 0
Para I desde 1 hasta M
Suma = Suma + A[I,J]
Fin Para
Promedio = suma / Filas
Escribir el promedio de la columna,J,es,Promedio
Fin Para
Fin

17. Realizar algoritmo e implementar


Implementacin en c++:

#include <iostream>
#include <fstream>
#define MAX_FIL 10
#define MAX_COL 10
using namespace std;

int M,N;

void menu();
void crear_arregloB(int A[MAX_FIL][MAX_COL]);
void recorrer_arregloB(int A[MAX_FIL][MAX_COL]);
void mostrar_arregloB(int A[MAX_FIL][MAX_COL]);
void adicionar_fil(int A[MAX_FIL][MAX_COL]);
void borrar_fil(int A[MAX_FIL][MAX_COL]);
void adicionar_col(int A[MAX_FIL][MAX_COL]);
void borrar_col(int A[MAX_FIL][MAX_COL]);
void insertarV_pos(int A[MAX_FIL][MAX_COL]);
void eliminarV_pos(int A[MAX_FIL][MAX_COL]);
void ordenarM_asc_fila(int A[MAX_FIL][MAX_COL]);
void ordenarM_asc_col(int A[MAX_FIL][MAX_COL]);

21
22

int main(){
int A[MAX_FIL][MAX_COL];
int n;
menu();
do{
cout<<endl<<"Respuesta----";
cin>>n;
n=toupper(n);
switch(n){
case 1: crear_arregloB(A);
break;
case 2: recorrer_arregloB(A);
break;
case 3: mostrar_arregloB(A);
break;
case 4: adicionar_fil(A);
break;
case 5: borrar_fil(A);
break;
case 6: adicionar_col(A);
break;
case 7: borrar_col(A);
break;
case 8: insertarV_pos(A);
break;
case 9: eliminarV_pos(A);
break;
case 10: ordenarM_asc_fila(A);
break;
case 11: ordenarM_asc_col(A);
break;
}
system("pause");
system("cls");
menu();
}while(n!='X');
cout<<endl;
system("pause");
return 0;
}

void menu(){
cout<<"##Administrar Matriz##"<<endl<<endl;
cout<<"Elija una de las opciones..."<<endl<<endl;
cout<<"1. Crear Matriz"<<endl;
cout<<"2. recorrer matriz"<<endl;
cout<<"3. mostrar matriz"<<endl;
cout<<"4. Adicionar fila a la matriz"<<endl;
cout<<"5. borrar fila de la matriz"<<endl;
cout<<"6. Adicionar columna a la matriz"<<endl;
cout<<"7. borrar columna de la matriz"<<endl;
cout<<"8. Insertar por posicion"<<endl;
cout<<"9. eliminar por posicion"<<endl;
cout<<"10. Ordenar en forma ascendente por filas"<<endl;

22
23

cout<<"11. Ordenar en forma ascendente por columnass"<<endl;

cout<<"X. Finalizar programa"<<endl;


}

void crear_arregloB(int A[MAX_FIL][MAX_COL]){


cout<<"Los datos de la matriz es..."<<endl<<endl;
cout<<"Ingrese el numero de filas------ ";
cin>>M;
cout<<"Ingrese el numero de columnas--- ";
cin>>N;
cout<<"Ingrese datos"<<endl;
for(int i=0;i<M;i++){
for(int j=0;j<N;j++){
cout<<"Dato A["<<i<<"]["<<j<<"] = ";
cin>>A[i][j];
}
}
}

void recorrer_arregloB(int A[MAX_FIL][MAX_COL]){


cout<<"Los datos de la matriz son..."<<endl<<endl;
for(int i=0;i<M;i++){
for(int j=0;j<N;j++){
cout<<"Dato A["<<i+1<<"]["<<j+1<<"] = "<<A[i][j]<<endl;
}
cout<<endl;
}
}

void mostrar_arregloB(int A[MAX_FIL][MAX_COL]){


cout<<"Los datos de la matriz son..."<<endl<<endl;
for(int i=0;i<M;i++){
cout<<"| ";
for(int j=0;j<N;j++){
cout<<A[i][j]<<" ";
}
cout<<" |"<<endl;
}
}

void adicionar_fil(int A[MAX_FIL][MAX_COL]){


cout<<endl<<"ADICIONAR FILA"<<endl<<endl;
int k,v;
cout<<"Ingrese la posicion de la fila [0-"<<M-1<<"]= ";
cin>>k;
for(v=0;v<N;v++){
cout<<"Dato A["<<k<<"]["<<v<<"] = ";
cin>>A[k][v];
}
}

23
24

void adicionar_col(int A[MAX_FIL][MAX_COL]){


cout<<endl<<"ADICIONAR COLUMNA"<<endl<<endl;
int k,v;
cout<<"Ingrese la posicion de la columna [0-"<<N-1<<"]= ";
cin>>k;
for(v=0;v<M;v++){
cout<<"Dato A["<<v<<"]["<<k<<"] = ";
cin>>A[v][k];
}
}

void borrar_fil(int A[MAX_FIL][MAX_COL]){


cout<<endl<<"BORRAR FILA"<<endl<<endl;
int k,v;
cout<<"Ingrese la posicion de la fila [0-"<<M-1<<"]= ";
cin>>k;
for(v=0;v<N;v++){
A[k][v]=0;
}
}

void borrar_col(int A[MAX_FIL][MAX_COL]){


cout<<endl<<"BORRAR COLUMNA"<<endl<<endl;
int k,v;
cout<<"Ingrese la posicion de la columna [0-"<<N-1<<"]= ";
cin>>k;
for(v=0;v<M;v++){
A[v][k]=0;
}
}

void insertarV_pos(int A[MAX_FIL][MAX_COL]){


cout<<endl<<"INSERTAR VALOR POR POSICION"<<endl<<endl;
int k,v;
cout<<"Ingrese la posicion de la fila [0-"<<M-1<<"]= ";
cin>>k;
cout<<"Ingrese la posicion de la columna [0-"<<N-1<<"]= ";
cin>>v;
cout<<endl<<"Dato A["<<k<<"]["<<v<<"] = ";
cin>>A[k][v];

void eliminarV_pos(int A[MAX_FIL][MAX_COL]){


cout<<endl<<"ELIMINAR VALOR POR POSICION"<<endl<<endl;
int k,v;
cout<<"Ingrese la posicion de la fila [0-"<<M-1<<"]= ";
cin>>k;
cout<<"Ingrese la posicion de la columna [0-"<<N-1<<"]= ";
cin>>v;
cout<<endl<<"Dato A["<<k<<"]["<<v<<"] = ";
A[k][v]=0;

24
25

void ordenarM_asc_fila(int A[MAX_FIL][MAX_COL]){


int posicion;
int temp;
int menor;
cout<<"ORDEN ASCENDENTE FILA"<<endl;
for(int i=0;i<M;i++){
menor=A[i][0];
for(int j=0;j<N;j++){
if(A[i][j]<=menor){
menor=A[i][j];
posicion=j;
}
temp=A[i][j];
A[i][j]=menor;
A[i][posicion]=temp;
}
}
cout<<"Matriz ordenada..."<<endl;
mostrar_arregloB(A);
}

void ordenarM_asc_col(int A[MAX_FIL][MAX_COL]){


int posicion;
int temp;
int menor;
cout<<"ORDEN ASCENDENTE COLUMNA"<<endl;
for(int j=0;j<N;j++){
for(int i=0;i<M;i++){
menor=A[0][j];
if(A[i][j]<=menor){
menor=A[i][j];
posicion=i;
}
temp=A[i][j];
A[i][j]=menor;
A[posicion][j]=temp;
}
}
cout<<"Matriz ordenada..."<<endl;
mostrar_arregloB(A);
}

25
26

18. Realizar un algoritmo para realizar la suma y la multiplicacin de dos matrices


Accion suma( entero a[][] , entero b[][], entero c[][])
Inicio
Para i desde 0 hasta m
Para j desde 0 hasta n
C[i][j]=A[i][j]+B[i][j]
Fin_para
Fin para
Fin

Accion multiplicacin(entero a[][] , entero b[][], entero d[][])


Inicio
Para i desde 0 hasta m
Para j desde 0 hasta n
D[i][j]=A[i][j]*B[i][j]
Fin_para
Fin para
Fin

19. Realizar el algoritmo para ordenar una matriz por QuickSort


Accion QuickSort(entero inferior, entero superior, entero m[] )
Incio
Entero x
Entero Izquierda=inferior
Entero Derecha=superior
Mitad=m[izquierda+derecha]/2

Hacer
Mientras (m[izquierda]!=mitad izquierda<superior)
Izquierda++
Fin_mientras
Mientras (m[derecha]!=mitad derecha>inferior)
Derecha--
Fin_mientras
Si(izquierda<=derecha)
X=m[izquierda]
M[izquierda]=m[derecha]
M[derecha]=x
Izquierda++
Derecha
Fin_Si
Mientras (izquierda<=derecha)
Si (inferior<derecha)
Quicksort(m, inferior , derecha)
Fin_si
Si (izquierda<superior)
Quicksort(m, izquierda , superior)
Fin_si
Fin

26
27

20. Realizar un algoritmo para realizar el ordenamiento de una matriz por:


a) Mtodo de insercin
Accin ORD_INSERCIN(A, N)
Inicio
Para k desde 2 hasta N
T=A[k]
N= k-1
Mientras T < A[n]
A [n-1]=A[n]
FinMientras
A [n-1]=T
FinPara
Fin

b) Mtodo de Seleccin del menor


Accin seleccin_menor (entero v [], entero n)
Inicio
Para I desde 1 hasta n-1
k=i
min = v[i]
Para j desde I+1 hasta n
Si (v[j] <min)
k=j
min=v[j]
FinSi
V[k] = v[i]
v [i]= min
FinPara
FinPara
Fin

c) Mtodo de seleccin al mayor


Accin seleccin_mayor (entero v [], entero n)
Inicio
Para I desde n hasta 2 incremento -1
k =i
max = v[i]
Para j desde I-1 hasta 1 incremento -1
Si (v [j] > max)
k=j
max = v [j]
FinSI
v[k] = v[i]
v[i]= max
Fin Para
FinPara
Fin

27
28

21. Realizar un algoritmo para realizar la bsqueda en una matriz, por;

a) Mtodo de Bsqueda Secuencial


Accion BusquedaSecuencial (A,F,C,ValorBus,&Posi_Fila,&Posi_Colu)
Inicio
Encontro <- falso
Para i de 1 a F hacer
Para j de 1 a C hacer
Si (A[ i ][ j ] = ValorBus) entonces
Posi_Fila = i
Posi_Colu = j
FinSi
FinPara
FinPara
Fin

b) Mtodo de Bsqueda Binaria


Accion Entero BusquedaBinaria (A,N,ValorBus)
Inicio
Izquierda <- 1
Derecha <- N
Mientras ( Derecha >= Izquierda )
Centro = ( Izquierda + Derecha ) / 2
Si (ValorBus = A[centro]) entonces
Posicion = Centro
Sino
Si ValorBus < A [ Centro ]
Derecha = X Izquierda
Sino
Izquierda = X + Izquierda
Finsi
Finsi
FinMientras
Fin

c) Mtodo de Bsqueda Binaria Recursiva


Accion BusquedaBinariaRecursiva (A,I,D,Val)
Inicio
Si ( I=D ) entonces
Retornar I
Sino
T = (I + D)/2
Si Val < A[T] entonces
Retornar BusquedaBinariaRecursiva(A,I,T,Val)
Sino
Retornar BusquedaBinariaRecursiva(A,D+1,T,Val)
FinSi
FinSi
Fin

28

Das könnte Ihnen auch gefallen