Beruflich Dokumente
Kultur Dokumente
SOLUCIONARIO PRCTICA N 2
Integrantes:
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
3
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
4
5
Bsqueda Secuencial
Bsqueda Binaria
5
6
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>
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;
}
11
12
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;
}
}
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;
}
}
14
15
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
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)
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)
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)
Inicio
Si n<=m entonces
Para i desde 1 hasta n
C(i) A(i) + B(i)
FinPara
17
18
Sino
Para i desde 1 hasta m
C(i) A(i) + B(i)
FinPara
Accin HallarMediana(A, n)
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
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.
#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
23
24
24
25
25
26
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
27
28
28