Anda di halaman 1dari 17

UNIVERSIDAD NACIONAL

MAYOR DE SAN MARCOS


Facultad de ingeniera de sistema e informtica
Escuela acadmica profesional de ingeniera de sistemas

Asignatura:

Estructura de Datos

Tema:

Resolucin Prctica N 03

Docente:

Luzmila Pr Concepcin

Ciclo:

2011-II

Alumna:

Tania Y. Lpez Ramos

Grupo:

10200113

PROB 1: Realizar un algoritmo para realizar la copia de un vector en otro vector.


PSEUDOCODIGO:

CODIGO:

ACCION_CopiarVector()

int main(){

VARIABLES:

int A(N),B(M),i;

ENTERO A(N), B(M),i

for(i=0;i<N;i++){

ALGORITMO:

B(i)=A(i);

INICIO

}
PARA i DESDE 0 HASTA N-1

M=N;

B(i)A(i)

getch();

ii+1

return 0;

FIN_PARA

MN
FIN_ACCION

PROB 2: Realizar un algoritmo para realizar el ordenamiento de un arreglo y la bsqueda


secuencial de un elemento.
ACCION_Ordenar()
ACCION_BuscarValor()
ACCION_BuscarPos()
ALGORITMO:
ALGORITMO:
ALGORITMO:
INICIO
INICIO
INICIO
PARA i DESDE 0 HASTA
LEER (dato)
LEER (pos)
N-1
PARA i DESDE 0
SI (pos>=N)
PARA j DESDE i+1
HASTA N-1
HASTA N-1
SI
ESCRIBIR
SI (A(i)>A(j))
(A(i)=dato)
(FUERA DE RANGO)
SINO
tempA(i)
ESCRIBIR (A(i))
FIN_SI
ESCRIBIR
A(i)A(j)
ii+1
(A(pos-1))
FIN_PARA
FIN_SI
A(j)temp
FIN_ACCION
FIN_ACCION
FIN_SI
jj+1
FIN_PARA
ii+1
FIN_PARA
FIN_ACCION

PROB 3: Realizar un algoritmo para realizar la operacin de rotar dado un elemento que se
posicione como primer elemento de un arreglo unidimensional.
void rotarvector(int x[MAX],int dimx,int pos){
int i=0,val;
if(pos<dimx){
val=x[pos];
x[pos]=x[0];
x[0]=val;
}
}

ACCION rotarvector(ENETRO : x[MAX], dimx,


pos)
ENTERO i0,val
SI(pos<dimx)
valx[pos]
x[pos]x[0]
x[0]val
FIN_SI
FIN_ACCION

PROB 4: Realizar la codificacin o implementacin en lenguaje de Programacin C++ para calcular


el promedio de un arreglo unidimensional que tenga como mximo 30 elementos.
a) Que permita el ingreso de datos mediante lectura
b) Que permita la declaracin de los elementos de arreglo como una constante
void leervector(int x[MAX],int *dimx);
void mostrarvector(int x[MAX],int dimx);
void declararconst(int x[MAX],int *dimx);
int menu();
int main()
{
int a[MAX],na,opc;
opc=menu();
switch(opc){
case 1:
system("cls");
leervector(a,&na);
break;
case 2:
system("cls");
declararconst(a,&na);
break;
default:
printf("Opcion no valida");
exit(0);
}
mostrarvector(a,na);
system("pause");
return(0);
}
void leervector(int x[MAX],int *dimx){
int n,i,val;
printf("Ingrese la dimension del vector: ");

void declararconst(int x[MAX],int *dimx){


int n,val,i;
printf("Ingrese la dimension del vector: ");
scanf("%d",&n);
if(n<MAX){
printf("Ingrese el valor de la constante: ");
scanf("%d",&val);
for(i=0;i<n;i++){
x[i]=val;
}
*dimx=n;
}
else{
printf("Dimension fuera de rango");
}
}
void mostrarvector(int x[MAX],int dimx){
int i,val;
printf("El vector es:\n\t");
for(i=0;i<dimx;i++){
val=x[i];
printf("%d ",val);
}
printf("\n");
}
int menu(){
int op;

scanf("%d",&n);
if(n<MAX){
for(i=0;i<n;i++){
printf("Ingrese el valor de la posicion
%d: ",i+1);
scanf("%d",&val);
x[i]=val;
}
*dimx=n;
}
else{
printf("Dimension fuera de rango");
}
}

printf("\n\t\t\t\t<<MENU>>\n\n");
printf("\t\t Leer elementos...............(1)\n");
printf("\t\t Elementos
constantes.........(2)\n\n");
printf("Elija su opcion: ");
scanf("%d",&op);
return(op);
}

PROB 5: Realizar la codificacin o implementacin en lenguaje de programacionC++ para realizar


la bsqueda:
ACCION_MayorValor()
VARIABLES:
ENTERO mayor,i
ALGORITMO:
INICIO
i0
mayorA(i)
PARA i DESDE 1 HASTA N-1
SI (A(i)>mayor)
mayorA(i)
FIN_SI
ii+1
FIN_PARA
ESCRIBIR (mayor)
FIN_ACCION

ACCION_MenorValor()
VARIABLES:
ENTERO menor,i
ALGORITMO:
INICIO
i0
menorA(i)
PARA i DESDE 1 HASTA N-1
SI (A(i)<menor)
menorA(i)
FIN_SI
ii+1
FIN_PARA
ESCRIBIR (menor)
FIN_ACCION

PROB 6: Realizar la codificacin o implementacin en lenguaje de programacin C++ para realizar


la bsqueda de un elemento en el arreglo unidimensional mediante los mtodos de:

a) BUSQUEDA LINEAL
void buscardato(int x[MAX],int dimx,int
dato){
int i,val;
bool hallado;
hallado=false;
for(i=0;i<dimx;i++){
if(x[i]==dato){
printf("%d se encuentra en la posicion
%d\n",dato,i+1);
hallado=true;
}
}
if(hallado==false){
printf("%d no se encuentra en el
vector\n",dato);
}
}

b) BUSQUEDA BINARIA
void busquedabinaria(int vect[MAX],int
dimx){
int izq,drcha,valor,centro,i=0;
izq=0;
drcha=dimx-1;
printf("Introducir el valor a buscar en el
vector:\n");
scanf("%d",&valor);
while(drcha<=izq){
centro=(drcha+izq)/2;
if(vect[centro]==valor){
printf("Se encuentra en la posicion
%d",centro);
}
else{
if(valor<vect[centro]){
izq=centro-1;
}
else{
drcha=centro+1;
}
}
}
if(vect[i]==valor){
printf("El valor %d indicado se encontro
en la posicion %d\n",valor,i);
}
else{
printf("El valor %d no se encontro en el
vector\n",valor);
}
i=i+1;
}

PROB 7: Realizar la codificacin o implementacin en Lenguaje de Programacin C++ para realizar


la actualizacin de un arreglo unidimensional. La actualizacin consiste en realizar las siguientes
operaciones:

a) Adicionar un elemento al arreglo


ACCION insertarxPos (ENTERO x[max],
ENTERO *dimx, ENTERO pos, ENTERO
dato)
ENTERO i,n
n*dimx
nn+1;
in;
Si(i<max y pos<n)
MIENTRAS (i>pos)
x[i]x[i-1]
ii-1
FIN_MIENTRAS
x[pos]dato;
*dimxn;
SINO
ESCRIBIR ("FUERA DE
RANGO!!!");
FIN_SI
FIN_ACCION

b) Eliminar por posicin un elemento en


el arreglo
ACCION eliminarxPos( ENTERO
x[max], ENTERO *dimx, ENTERO pos)
ENTERO i
Ipos-1
MIENTRAS (i<*dimx)
x[i]x[i+1]
ii+1
FIN_MIENTRAS
*dimx*dimx-1
FIN_ACION

c) Insertar por valor un elemento en el


arreglo

d) Eliminar por valor un elemento del


arreglo

ACCION buscardatointelig (ENTERO


x[max],ENTERO dimx,ENTERO dato,
ENTERO *pos)
ENTERO i0,jdimx-1,n0,a,b
Adato
MIENTRAS (i<dimx y n==0)
bx[i]
SI (a=b)
*posi
n1
FIN_SI
ii+1
FIN_MIENTRAS
SI(n=0)
MIENTRAS (j>=0 y n=0)
bx[j]
SI (a>b)
n1
*posj+1
FIN_SI
jj-1
FIN_MIENTRAS
FIN_SI
FIN_ACCION

ACCION buscardatointelig (ENTERO


x[max],ENTERO dimx,ENTERO dato,
ENTERO *pos)
ENTERO i0,jdimx-1,n0,a,b
Adato
MIENTRAS (i<dimx y n==0)
bx[i]
SI (a=b)
*posi
n1
FIN_SI
ii+1
FIN_MIENTRAS
SI(n=0)
MIENTRAS (j>=0 y n=0)
bx[j]
SI (a>b)
n1
*posj+1
FIN_SI
jj-1
FIN_MIENTRAS
FIN_SI
FIN_ACCION

ACCION insertarxvalor( ENTERO x[max],


ENTERO *dimx, ENTERO dato)
ENTERO num1, pos, nx*dimx
ESCRIBIR ("Ingrese el nmero que
desea mover: ")
LEER (num1)
buscardatointelig
(x,nx,num1,&pos)
insertarxPos(x,&nx,pos,dato)
*dimxnx
FIN_ACCION

ACCION eliminarxvalor(ENTERO x[max],


ENTERO *dimx)
ENTERO dat, nx*dimx,numx,lg
ESCRIBIR ("Ingrese el nmero que
desea eliminar: ")
LEER(numx)
buscardatointelig (x,nx,numx,&lg)
eliminarxPos(x,&nx,lg+1)
*dimxnx
FIN_ACCION

e) Ordenar en orden ascendente


ACCION ordenarcreciente (ENTERO
x[max],ENTERO dimx)
ENTERO aux
PARA i0 HASTA dimx-2
PARA ji+1 HASTA
dimx-1
SI(x[i]>x[j])
auxx[j]
x[j]x[i]
x[i]aux
FIN_SI
FIN_PARA
FIN_PARA
FIN_ACCION
g) Rotar el arreglo
ACCION rotararreglo (ENTERO
x[max], ENTERO dimx)
ENTERO i, j, aux
SI (dimx>0)
jdimx-1
PARA i0 HASTA
dimx/2-1
auxx[i]
x[i]x[j]
x[j]aux
jj-1
FIN_PARA
SINO
ESCRIBIR ("EL VECTOR
ESTA VACIO ...")
FIN_SI
FIN_ACCION

f)

Ordenar en orden descendente

ACCION ordenarcreciente (ENTERO


x[max],ENTERO dimx)
ENTERO aux
PARA i0 HASTA dimx-2
PARA ji+1 HASTA
dimx-1
SI(x[i]<x[j])
auxx[j]
x[j]x[i]
x[i]aux
FIN_SI
FIN_PARA
FIN_PARA
FIN_ACCION

h) Salvar el arreglo
ACCION salvararreglo(ENTERO
x[max], ENTERO dimx)
ENTERO val, i
FILE *F
SI (dimx>0)
PRIME(F)
valdimx
PONER(F,val)
PARA i0 HASTA dimx-1
valx[i]
PONER(F,val)
FIN_PARA
MARCAR(F)
SINO
ESCRIBIR("VECTOR
VACIO...")
FIN_SI
FIN_ACCION

i)

Recuperar el arreglo
ACCION recuperararreglo(ENTERO x[max], ENTERO *dimx)
ENTERO val, i0, n
FILE *F
PONER(F)
TOMAR(F,val)
SI(NOULTIMO(F))
nval
FIN_SI
TOMAR(F,val)
MIENTRAS(NOULTIMO(F))
x[i]val
ii+1
TOMAR(F,val)
FIN_MIENTRAS
*dimxn
FIN_ACCION

PROB 8: Realizar un algoritmo y codificacin para realizar el almacn y recorrido de una matriz por
columnas y por filas.

ACCION_Almacenar()
VARIABLES:
ENTERO i,j,A(N)(M),dato
ALGORITMO:
INICIO
LEER(N,M)
PARA i DESDE 0 HASTA N1
PARA j DESDE 0 HASTA
M
LEER (dato)
A(i)(j)dato
jj+1
FIN_PARA
ii+1
FIN_PARA
FIN_ACCION

ACCION_RecorrerColumnas()
VARIABLES:
ENTERO i,j,A(N)(M),dato
ALGORITMO:
INICIO
PARA j DESDE 0 HASTA M1
PARA i DESDE 0 HASTA
N-1
dato A(i)(j)
ESCRIBIR (dato)
ii+1
FIN_PARA
jj+1
FIN_PARA
FIN_ACCION

ACCION_RecorrerFilas()
VARIABLES:
ENTERO i,j,A(N)(M),dato
ALGORITMO:
INICIO
PARA i DESDE 0 HASTA N-1
PARA j DESDE 0 HASTA
M-1
dato A(i)(j)
ESCRIBIR (dato)
jj+1
FIN_PARA
ii+1
FIN_PARA
FIN_ACCION

PROB 9: Realizar un algoritmo y codificacin para calcular la suma de los elementos de dos
vectores y dar el resultado en un tercer vector.

PSEUDOCODIGO:

CODIGO:
int main(){
ACCION_CalcularSuma()
int A(N),B(M),C(L),suma,i;
VARIABLES:
if(N>M){
ENTERO A(N),B(M),C(L),suma,i
for(i=0;i<=M-1;i++){
ALGORITMO:
suma=A(i)+B(i);
INICIO
C(i)=suma;
SI (N>M)
}
PARA i DESDE 0 HASTA M-1
for(i=M;i<=N-1;i++){
sumaA(i)+B(i)
C(i)=A(i);
C(i) suma
}
ii+1
}else{
FIN_PARA
if(N<M){
PARA i DESDE M HASTA N-1
for(i=0;i<=N-1;i++){
C(i) A(i)
suma=A(i)+B(i);
ii+1
C(i)=suma;
FIN_PARA
}
SINO
for(i=N;i<=M-1;i++){
SI (N<M)
C(i)=B(i);
PARA i DESDE 0 HASTA N-1
}
sumaA(i)+B(i)
}else{
C(i) suma
for(i=0;i<N;i++){
ii+1
suma=A(i)+B(i);
FIN_PARA
C(i)=suma;
PARA i DESDE N HASTA M-1
}
C(i) B(i)
}
ii+1
}
FIN_PARA
}
SINO
PARA i DESDE 0 HASTA N
sumaA(i)+B(i)
C(i) suma
ii+1
FIN_PARA
FIN_SI
FIN_SI
FIN_ACCION

PROB 10: Realizar el algoritmo y codificacin para calcular la mediana de los nmeros de un
arreglo: la mediana es una medida estadstica que se calcula del siguiente modo:
La mediana de un arreglo de nmeros es el elemento m del arreglo tal que la mitad de los
nmeros en el arreglo son mayores que o igual a m y la mitad son menores o igual a m; si el
nmero de elementos es impar.
Si el nmero de elementos es par la mediana es el promedio de los dos elementos de m1 y m2, tal
que la mitad de los elementos restantes son mayores que o iguales a m1 y m2, y la mitad de los
elementos son menores o iguales que m1 y m2.
CODIGO:

PSEUDOCODIGO:

void ordenar(int X[max],int dimX)


{
int i,j,aux;
if(dimX>0)
{
for(i=0;i<dimX-1;i++)
{
for(j=i+1;j<dimX;j++)
{
if(X[i]>X[j])
{
aux=X[i];
X[i]=X[j];
X[j]=aux;
}
}
}
}
}

ACCION ordenar (ENTERO X[max], ENTERO


dimX)
ENTERO i, j, aux
SI (dimX>0)
PARA i0 HASTA dimX-2
PARA ji+1 HASTA
dimX-1
SI (X[i]>X[j])
auxX[i]

float media(int X[max],int dimX)


{
float med;
ordenar(X,dimX);
if(dimX%2==0)
{
med=(float)(X[dimX/2-1]+X[dimX/2])/2;
}
else
{
med=X[dimX/2];
}
return med;
}

X[i]X[j]
X[j]aux
FIN_SI
FIN_PARA
FIN_PARA
FIN_SI
FIN_ACCION
ACCION media (ENTERO X[max],ENTERO
dimX)
REAL med
ordenar(X,dimX)
SI (dimX MOD 2 = 0)
med(REAL)(X[dimX/21]+X[dimX/2])/2
SINO
medX[dimX/2]
FIN_SI
RETORNAR med
FIN_ACCION

PROB 11: el modo de un arreglo de un numero es el numero m en el arreglo que se repite con ms
frecuencia. Si varios nmeros estn repetidos con igual frecuencia mxima, no existe modo.
Realizar un algoritmo que acepte un arreglo de nmeros y retorne el modo o una indicacin de
que no existe.
void hallarmodo(int x[MAX],int dimx){
int i,j,m,mayor,y[dimx];
m=1;
mayor=0;
for(i=0;i<dimx;i++){
y[i]=0;
}
for(i=0;i<dimx;i++){
for(j=0;j<dimx;j++){
if(i!=j && x[i]==x[j]){
m=m+1;
y[i]=m;
}
}
m=1;
}
for(i=0;i<dimx;i++){
if(y[i]!=mayor && y[i]>mayor){
mayor=y[i];
}
}
return mayor;
}

ACCION hallarmodo(ENTERO : x[MAX],dimx)


ENTERO i,j,m,mayor,y[dimx]
m1
mayor0
PARA i0HASTA dimx-1
y[i]0
FIN_PARA
PARA i0 HASTA dimx-1
PARA j0 HASTA dimx-1
SI(ij y x[i]=x[j])
mm+1
y[i]m
FIN_SI
FIN_PARA
m1
FIN_PARA
PARA i0 HASTA dimx-1
SI (y[i]mayor y y[i]>mayor)
mayory[i]
FIN_SI
FIN_PARA
RETORNAR mayor
FIN_ACCION

PROB 13: realizar el algoritmo para: salvar, recuperar y copiar una matriz.
ACCION copiarmatriz(ENTERO: X[max][max],dimFx, dimCx, Y[max][max], *dimFy, *dimCy)
ENTERO i0, j0, val
SI (dimFx>0 y dimCx>0)
PARA i0 HASTA dimFx -1
PARA j0 HASTA dimCx-1
Y[i][j] X[i][j];
FIN_PARA
FIN_PARA
*dimFydimFx;
*dimCydimCx;
SINO
ESCRIBIR ("MATRIZ VACIA.....")
FIN_SI
FIN_ACCION

ACCION salvarmatriz (ENTERO X[max][max],


ENTERO dimFx, ENTERO dimCx)
ENTERO i,j,val
FILE *F
SI(dimFx>0 y dimCx>0)
PRIMER(F)
valdimFx
PONER (F, val)
valdimCx;
PONER(F, val)
PARA i0 HASTA dimFx-1
PARA j0HASTA dimCx-1
val X[i][j]
PONER(F, val)
FIN_PARA
FIN_PARA
MARCAR(F)
SINO
ESCRIBIR ("MATRIZ VACIA.....")
FIN_SI
FIN_ACCION

ACCION recuperarmatriz (ENTERO


X[max][max],ENTERO *dimFx, ENTERO
*dimCx)
ENTERO fil, col, val
ENTERO i0, j0
FILE *F
PRIMER (F)
TOMAR (F, val)
SI (NOULTIMO(F))
filval
FIN_SI
TOMAR (F, val)
SI (NOULTIMO(F))
colval
FIN_SI
TOMAR (F, val)
MIENTRAS (NOULTIMO(F))
X[i][j]val
jj+1
SI (j MOD col=0)
ii+1
j0
FIN_SI
TOMAR (F, val)
FIN_MIENTRAS
*dimFxfil
*dimCxcol
FIN_ACCION

PROB 15: Realizar la codificacin de la actualizacin de un Matriz.


a) Mostrar Matriz
void mostrarMatriz(int
X[MaxF][MaxC],int dimF,int dimC){
int i,j;
printf("\n
MATRIZ[%d][%d]:\n",dimF,dimC);
for(i=0;i<dimF;i++){
for(j=0;j<dimC;j++){
printf("%4d ",X[i][j]);
}
printf("\n");
}
printf("\n\n");
}

b) Eliminar por Posicion


void eliminarxPos(int
X[MaxF][MaxC],int dimF,int dimC){
int Y[MaxF][MaxC];
int i,j,fil,col;
do{
printf("Fila: ");
scanf("%d",&fil);
}while(fil<=0 || fil>=dimF );
do{
printf("Columna: ");
scanf("%d",&col);
}while(col<=0 || col>=dimC);

for(i=0;i<dimF;i++){
for(j=0;j<dimC;j++){
if(i!=fil-1 || j!=col-1 ){
Y[i][j]=X[i][j];
}
}
}
X[MaxF][MaxC]=Y[MaxF][MaxC];
mostrarMatriz(X,dimF,dimC);
c) Insertar por Valor
void insertarxValor(int
X[MaxF][MaxC],int dimF,int dimC){
int i,j,val,insert,hallado=0;

}
e) Eliminar por Valor
void eliminarxValor(int
X[MaxF][MaxC],int dimF,int dimC){
int Y[MaxF][MaxC];
int i,j,val;

printf("Valor a buscar: ");


scanf("%d",&val);
printf("Valor a insertar: ");
scanf("%d",&insert);

printf("Valor: ");
scanf("%d",&val);
for(i=0;i<dimF;i++){
for(j=0;j<dimC;j++){
if(X[i][j]!=val){
Y[i][j]=X[i][j];
}
}
}
X[MaxF][MaxC]=Y[MaxF][MaxC];
mostrarMatriz(X,dimF,dimC);

for(i=0,hallado!=1;i<dimF;i++){
for(j=0,hallado!=1;j<dimC;j++){
if(X[i][j]==val){
X[i][j]=insert;
hallado==1;
}
}
}
mostrarMatriz(X,dimF,dimC);

d) Ordenar ascendentemente por


columna
void ordenxascxcol(int
X[MaxF][MaxC],int dimF,int dimC)
{
int aux,i,j,columna;
printf("\n Que columna desea
ordenar: ");
scanf("%d",&columna);
columna=columna-1;
if(columna<dimC){
for(i=0;i<dimF;i++){
for(j=dimF-1;j>i;j--){
if(X[j1][columna]>X[j][columna]){

f)

Ordenar ascendentemente por fila


void ordenxascxfila(int
X[MaxF][MaxC],int dimF,int dimC)
{
int aux,i,j,fila;
printf("\n Que fila desea ordenar: ");
scanf("%d",&fila);
fila=fila-1;
if(fila<dimF){
for(i=0;i<dimC;i++){
for(j=dimC-1;j>i;j--){
if(X[fila][j-1]>X[fila][j]) {
aux=X[fila][j-1];
X[fila][j-1]=X[fila][j];
X[fila][j]=aux;

aux=X[j-1][columna];
X[j-1][columna]=X[j][columna];
X[j][columna]=aux;

}
}
}
}
else{
printf("\n ERROR::: Dimension fuera
de RANGO \n");
}
mostrarMatriz(X,dimF,dimC);
}

}
}
}
}
else{
printf("\n ERROR::: Dimension fuera
de RANGO \n");
}
mostrarMatriz(X,dimF,dimC);
}
g) Ordenar descendentemente por
columna
void ordenxdesxcol(int
X[MaxF][MaxC],int dimF,int dimC){
int aux,i,j,columna;
printf("\n Que columna desea
ordenar: ");
scanf("%d",&columna);
columna=columna-1;
if(columna<dimC){
for (j=dimF-1;j>0;j--){
for (i=0;i<j;i++){
if (X[i][columna] <
X[i+1][columna]){
aux=X[i][columna];
X[i][columna]=X[i+1][columna];
X[i+1][columna]=aux;
}
}
}
}
else{
printf("\n ERROR::: Dimension fuera
de RANGO \n");
}
mostrarMatriz(X,dimF,dimC);
}
i) Salvar matriz
void salvarMatriz(int X[MaxF][MaxC],int
dimF,int dimC){
int i,j,val;
FILE *F;
F=fopen("Matrix.txt","w+");
if(F==NULL){

h) Ordenar descendentemente por fila:


void ordenxdesxfila(int
X[MaxF][MaxC],int dimF,int dimC)
{
int aux,i,j,fila;
printf("\n Que fila desea ordenar: ");
scanf("%d",&fila);
fila=fila-1;
if(fila<dimF){
for (j=dimC-1;j>0;j--){
for (i=0;i<j;i++){
if (X[fila][i] < X[fila][i+1]) {
aux=X[fila][i];
X[fila][i]=X[fila][i+1];
X[fila][i+1]=aux;
}
}
}
}
else{
printf("\n ERROR::: Dimension fuera
de RANGO \n");
}
mostrarMatriz(X,dimF,dimC);
}

j)

Recuperar Matriz
void recuperarMatriz(int
X[MaxF][MaxC],int dimF,int dimC){
int i,j,val;
FILE *F;
F=fopen("Matrix.txt","r+");
if(F==NULL){

printf("Error! Archivo no
encontrado");
exit(0);
}
for(i=0;i<dimF;i++){
for(j=0;j<dimC;j++){
val=X[i][j];
fwrite(&val,sizeof(int),1,F);
}
}
fclose(F);
}

printf("Error! Archivo no
encontrado");
exit(0);
}
j=0;
fread(&val,sizeof(int),1,F);
while(!feof(F)){
for(i=0;i<dimF;i++){
fread(&val,sizeof(int),1,F);
X[i][j]=val;
}
j++;
}
fclose(F);
}

PROB 16: realizar la codificacin o implementacin en lenguaje de programacin C++ para realizar
la multiplicacin de matrices
ACION multiplicarmatiz (ENTERO X[max][max], dimFx, dimCx,Y[max][max],dimFy,dimCy,
Z[max][max],*dimFz, *dimCz)
ENTERO i, j, k
SI (dimFx>0 y dimCx>0)
SI (dimCx=dimFy)
PARA i0 HASTA dimFx-1
PARA j0HASTA dimCx-1
Z[i][j]0;
PARA k0 HASTA dimCx-1
Z[i][j]Z[i][j]+ X[i][k]*Y[k][j]
FIN_PARA
FIN_PARA
FIN_PARA
*dimFzdimFx
*dimCzdimCy
SINO
ESCRIBIR ("NO SE PUEDE MULTIPLICAR....")
FIN_SI
SINO
ESCRIBIR ("MATRIZ VACIA.....")
FIN_SI
FIN_ACCION

PROB 17: Realizar la codificacin o implementacin en lenguaje de programacin C++ para realizar
Ordenamiento de arreglos por el mtodo rpido o quickshort.
void quicksort(int X[max], int dimx)
{
reducerrecursivo(X,dimx,1,dimx);
}
void reducerrecursivo(int X[max], int dimx,int ini,int fin)
{
int izq,der,pos,aux;
bool band=true;
izq=ini;
der=fin;
pos=ini;
while(band==true)
{
band=false;
while(X[pos]<=X[der] && pos!=der)
{
der=der-1;
}
if(pos!=der)
{
aux=X[pos];
X[pos]=X[der];
X[der]=aux;
pos=der;
while(X[pos]>=X[izq] && pos!=der)
{
izq=izq+1;
}
if(pos!=izq){
band=true;
aux=X[pos];
X[pos]=X[izq];
X[izq]=aux;
pos=izq;
}
}
}
if(pos-1>ini) {
reducerrecursivo(X,dimx,ini,pos-1);
}
if(fin>pos+1) {
reducerrecursivo(X,dimx,pos+1,fin);
}
}

Anda mungkin juga menyukai