Matriz Rala
Matriz Rala
Este programa dice si una matriz es rala con programación modular en en lenguaje de programación C
//MATRIZ RALA con funciones
#include<stdio.h>
void Tam(int& M, int& N);
void Leer(int& M, int& N, int Mat[100][100]);
int Verificar(int M);
float Rala(int M, int N, int Mat[][100]);
void simplificar(int& M, int& N, int Mat[][100], int Nuevo[][100], int& A);
void Escribir(int& Ren, int& Col, int Nuevo[][100]);
int main(){
int renN=1, tamc, tamr, Matriz[100][100]={0}, tres, Nueva[100][100];
float PC=0, porcien=75;
printf("\tEste programa verifica si una matriz es rala y la reduce en caso de ser necesario \n");
Tam( tamr, tamc);
Leer(tamr, tamc, Matriz);
printf("\nEl porcentaje de ceros en su matriz es %.1f\nEl porcentaje para que se considere rala es %.f ", Rala(tamr, tamc, Matriz), porcien );
PC=Rala(tamr, tamc, Matriz);
if(PC>=porcien){
simplificar(tamr, tamc, Matriz, Nueva, renN);
printf("\nSu matriz es rala asi que es necesario reducirla; su nueva matriz es\nFILA COLUMNA NUMERO\n\n");
tres=3;
Escribir(renN, tres, Nueva);
}else{
printf("\nSu matriz no es rala\n");
Escribir(tamr, tamc, Matriz);
}
}
void Tam(int& M, int& N){
printf("Dame el numero de renglones");
scanf("%d", &M);
printf("Dame el numero de columnas");
scanf("%d", &N);
}
void Leer(int& M, int& N, int Mat[][100]){
int I=0, J=0;
for(I=0; I<M; I++){
for(J=0; J<N; J++){
printf("Ingrese el valor [%d][%d] de la matriz\n", I + 1, J + 1);
scanf("%d", &Mat[I][J]);
}
}
}
float Rala(int M, int N, int Mat[100][100]){
int I, J, cont=0;
float porcentaje=0;
for(I=0; I<M; I++){
for(J=0; J<N; J++){
if( Mat[I][J]==0){
cont=cont+1;
}
}
}
porcentaje=((cont*100)/(M*N));
return(porcentaje);
}
void simplificar(int& M, int& N, int Mat[][100], int Nuevo[][100], int& A){
int B=0, aux, I, J;
for(I=0; I<M; I++){
for(J=0; J<N; J++){
if (Mat[I][J]!=0){
Nuevo[A][B]=I;
B++;
Nuevo[A][B]=J;
B++;
Nuevo[A][B]=Mat[I][J];
A++;
B=0;
}
}
}
aux=A;
A=0;
B=0;
Nuevo[A][B]=M;
B++;
Nuevo[A][B]=N;
B++;
Nuevo[A][B]=aux-1;
A=aux;
}
void Escribir(int& Ren, int& Col, int Nuevo[][100]){
int I, J;
for(I=0; I<Ren; I++){
for(J=0; J<Col; J++){
printf(" %d ",Nuevo[I][J]);
}
printf("\n");
}
}
Comentarios
Publicar un comentario