Está en la página 1de 4

#include <iostream>

#include <cstdlib> //librerias necesarias para que las instruccuiones sean


reconocidas por el compilador
#include<stdlib.h> //libreria necesaria para generar numeros aleatorios con
la funcion rand
#include<time.h> // cambiar la semilla para que genere numeros aleatorios
diferentes

using namespace std;

int matdatos[100][100]; //matriz cuadrada de 100 * 100


int vecdatos[100]; //vectores de 100 posiciones

int i,j,cont,k;

void llenar_matriz(int fil) //llenar una matriz con ceros (porque las matrices
dispersas contiene en su mayoria ceros
{
srand(time(NULL)); //cambiar semilla, para numeros aleatorios diferentes
for (i=0;i<fil;i++)
{
for (j=0;j<fil;j++)
{
matdatos[i][j]=0; //en cada posicion de la matriz dispersa un
cero
}
}
}
void mostrar_matriz(int fil) //muestra la matriz creada
{
for (i=0;i<fil;i++)
{
cout << "\n";
for (j=0;j<fil;j++)
{
cout << matdatos[i][j]; //muestra dato a dato la informacion de
la matriz
cout << " ";
}
}
}
void mostrar_vector(int vec[],int k) //muestra la matriz creada
{
for (i=0;i<k;i++)
{
cout << vec[i]; //muestra datos de un vector de posiciones k
cout << " ";
}
}

void llenar_vector_datos_diagonal_principal(int fil)


{
for (k=0;k<fil;k++)
{
vecdatos[k]=matdatos[k][k];
}
cout << "\n\nVector con datos de la diagonal principal \n";
mostrar_vector(vecdatos,k);
cout << "\nOprima una tecla para continuar ";
system("pause");
}
void representacion_diagonal_principal(int fil)
{
int dato;
llenar_matriz(fil);
for (k=0;k<fil;k++)
{
dato= 1+rand()%(101-1); //funcion rand para generar datos al azar
entre 1 y 100
matdatos[k][k]=dato; // llenar diagonal principal
}
mostrar_matriz(fil);
llenar_vector_datos_diagonal_principal(fil);
}

void llenar_vector_datos_diagonal_secundaria(int fil)


{
int pos=fil - 1;
for (k=0;k<fil;k++) // k recorre las filas en orden ascendentes
{
vecdatos[k]=matdatos[k][pos]; //pos recorre las columnas desde la
ultima columna hasta la primera
pos=pos + 1; // porque las posiciones comienzan en cero
}
cout << "\n\nVector con datos de la diagonal secundaria \n";
mostrar_vector(vecdatos,k);
cout << "\nOprima una tecla para continuar ";
system("pause");
}
void representacion_diagonal_secundaria(int fil)
{
int dato,pos=fil - 1;
llenar_matriz(fil);
for (k=0;k<fil;k++)
{
dato= 1+rand()%(101-1); //funcion rand para generar datos al azar
entre 1 y 100
matdatos[k][pos]=dato; // llenar diagonal secundaria
pos=pos - 1;
}
mostrar_matriz(fil);
llenar_vector_datos_diagonal_secundaria(fil);
}

void llenar_vector_datos_triangular_inferior(int fil)


{
int pos=-1;
for (k=0;k<fil;k++)
{
for (j=0;j<=k;j++) //solo recorre el segundo ciclo hasta llegar a la
diagonal primcipal
{
pos=pos + 1;
vecdatos[pos]=matdatos[k][j]; //lleva al vector los datos de la
matriz
}
}
cout << "\n\nVector con datos triangular inferior \n";
mostrar_vector(vecdatos,pos+1);
cout << "\nOprima una tecla para continuar ";
system("pause");
}
void representacion_triangular_inferior(int fil)
{
int dato;
llenar_matriz(fil);
for (k=0;k<fil;k++)
{
for (j=0;j<=k;j++)
{
dato= 1+rand()%(101-1); //funcion rand para generar datos al azar
entre 1 y 100
matdatos[k][j]=dato;
} // llenar matriz triangular inferior
}
mostrar_matriz(fil);
llenar_vector_datos_triangular_inferior(fil);
}

void llenar_vector_datos_triangular_superior(int fil)


{
int pos=-1;
for (k=0;k<fil;k++)
{
for (j=0;j<=k;j++) //recorre el ciclo desde 0 hasta la posicion de la
columna
{
pos=pos + 1;
vecdatos[pos]=matdatos[j][k]; //lleva al vector los datos de la
matriz
}
}
cout << "\n\nVector con datos triangular superior por columnas \n";
mostrar_vector(vecdatos,pos+1);
cout << "\nOprima una tecla para continuar ";
system("pause");
}
void representacion_triangular_superior(int fil)
{
int dato;
llenar_matriz(fil);
for (k=0;k<fil;k++)
{
for (j=k;j<=fil;j++)
{
dato= 1+rand()%(101-1); //funcion rand para generar datos al azar
entre 1 y 100
matdatos[k][j]=dato;
} // llenar matriz triangular superior
}
mostrar_matriz(fil);
llenar_vector_datos_triangular_superior(fil);
}

int main() //programa principal


{
int fil,dato,opc=0;
cout << "Digite el orden de la matriz, recuerde que es cuadrada ";
cin>>(fil);
llenar_matriz(fil);
cout << "\n\nDatos de la matriz con solo ceros";
mostrar_matriz(fil);
cout << "\nOprima una tecla para continuar ";
system("pause");
while (opc != 5)
{
cout << "\n SELECCIONE lA REPRESENTACION A VISUALIZAR \n";
cout << "\n 1. FORMATO DIAGONAL PRINCIPAL";
cout << "\n 2. FORMATO DIAGONAL SECUNDARIA";
cout << "\n 3. FORMATO TRIANGULAR INFERIOR";
cout << "\n 4. FORMATO TRIANGULAR SUPERIOR";
cout << "\n 5. SALIR";
cout << "\n SELECCIONE OPCION ENTRE 1 y 5 ";
cin>>(opc);
switch (opc)
{
case 1: representacion_diagonal_principal(fil);
break;
case 2: representacion_diagonal_secundaria(fil);
break;
case 3: representacion_triangular_inferior(fil);
break;
case 4: representacion_triangular_superior(fil);
break;
}
}
}

También podría gustarte