jueves, 25 de agosto de 2011

Solución del tercer previo en C++

/*Realizar un programa orientado a objetos, que permita para M matrices:
1- Ingresar el numero de filas y numero de columnas
2- Ingresar datos a las matrices

Para cada objeto se pide:
a- Calcular el porcentaje de los datos que están por encima del promedio
de cada matriz
b- Ordenar la matriz de mayor a menor por filas de la primera a la ultima
y de izquierda a derecha
c- Hallar e imprimir la matriz transpuesta de cada matriz

Para todos los objetos
a- Cuantos datos están por encima del promedio de los datos de todas las
matrices
b- Calcular la suma de los datos primos que están por debajo del promedio
de los datos pares de todas las matrices.*/

#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace System;
using namespace std;

class MATRICES
{
      int Filas, Columnas, M[6][6], cont, dim;
      float sumaDP, sumadatos;
public:
      int contp[25], Totaldat[25];
      int enterdate();
      void INGRESODAT();
      void PORP();
      void ORDM();
      void MTRANS();
      float DPARES();
      float CONTDPARES();
      void DATPRIMOS();
      float SUMADATOS();
      float CONTDATOS();
      void DATOS();};
      //--------------------------------------------------------------
int MATRICES::enterdate()
{
      return (Filas*Columnas);
}
void MATRICES::INGRESODAT()
{
      cout<<"\nCon cuantas filas quieres trabajar (Max 6)? :: ";cin>>Filas;
      cout<<"\nCon cuantas columnas quieres trabajar (Max 6)?  :: ";cin>>Columnas;
     
     
      for (int i=0; i<Filas; i++)
      {
            for(int j=0; j<Columnas; j++)
            {
                  cout<<"\nElemento ["<<i+1<<"]["<<j+1<<"]: ";
                  cin>>M[i][j];
            }
      }
}
void MATRICES::PORP()
{
      float sumadat=0, cont=0;
      for (int i=0; i<Filas; i++)
      {
            for (int j=0; j<Columnas; j++)
            {
                  sumadat+=M[i][j];
            }
      }
      float PROM=sumadat/(Filas*Columnas);
      for (int i1=0; i1<Filas; i1++)
      {
            for (int j1=0; j1<Columnas; j1++)
            {
                  if (M[i1][j1]>PROM)
                  {
                        cont++;
                  }
            }
      }
      float porcentaje=(cont/(Filas*Columnas))*100;
      cout<<"\nEl promedio de la matriz es  :: "<<PROM;
      cout<<"\nEl porcentaje de datos que estan por encima del promedio es: "<<porcentaje;
}
void MATRICES::ORDM()
{
      int k=0, J[25], N[5][5];
      for (int u=0; u<Filas; u++)
      {
            for (int v=0; v<Columnas; v++)
            {
                  J[k]=M[u][v];
                  k++;
            }
      }    
      for (int y=0; y<k-1; y++)
      {
            for (int x=y+1; x<k; x++)
            {
                  if (J[y]<J[x])
                  {
                        float Temp=J[x];
                        J[x]=J[y];
                        J[y]=Temp;
                  }
            }
      }
      int r=0;
      cout<<"\nLa Matriz ordenada es ::  \n";
      Console::ForegroundColor::set(ConsoleColor::DarkGreen);
      for (int l=0; l<Filas; l++)
      {
            cout<<"\n\272";
            for(int n=0; n<Columnas; n++)
            {
                  N[l][n]=J[r];
                  r++;
                  cout<<"\t"<<N[l][n];
            if(n==Columnas-1)
            {cout<<"\t\272";}
            }
      }Console::ForegroundColor::set(ConsoleColor::DarkMagenta);
}
void MATRICES::MTRANS()
{
      cout<<"\n\nLa Matriz Transpuesta  ::  \n\n";
      Console::ForegroundColor::set(ConsoleColor::Magenta);
      for (int q=0; q<Columnas; q++)
      {
            cout<<"\n\272";
            for (int t=0; t<Filas; t++)
            {
                  cout<<"\t"<<M[t][q];
            if(t==Filas-1)
            {cout<<"\t\272";}
            }
      }Console::ForegroundColor::set(ConsoleColor::DarkMagenta);
}
float MATRICES::DPARES()
{
      sumaDP=0;
      for (int h=0; h<Filas; h++)
      {
            for (int s=0; s<Columnas; s++)
            {
                  if ((M[h][s])%2==0)
                  {
                        sumaDP+=M[h][s];
                  }
            }
      }
      return (sumaDP);
}
float MATRICES::CONTDPARES()
{
      cont=0;
      for (int h=0; h<Filas; h++)
      {
            for (int s=0; s<Columnas; s++)
            {
                  if ((M[h][s])%2==0)
                  {
                        cont++;
                  }
            }
      }
      return (cont);
}
void MATRICES::DATPRIMOS()
{
      int Ñ=0, w=0, G, R;
      for (int K=0; K<Filas; K++)
      {
            for (int L=0; L<Columnas; L++)
            {
                  for (G=1; G<=M[K][L]; G++)
                  {
                        R=M[K][L]%G;
                        if (R==0)
                        {
                             Ñ++;
                        }
                  }
                  if (Ñ==2)
                  {
                        contp[w]=M[K][L];
                        w++;
                  }
                  Ñ=0;
            }
      }
      contp[w]=0;
}
float MATRICES::SUMADATOS()
{
      sumadatos=0;
      for (int q1=0; q1<Filas; q1++)
      {
            for (int q2=0; q2<Columnas; q2++)
            {
                  sumadatos+=M[q1][q2];
            }
      }
      return (sumadatos);
}
float MATRICES::CONTDATOS()
{
      dim=0;
      dim=Filas*Columnas;
      return (dim);
}
void MATRICES::DATOS()
{
      int y1=0;
      for (int i1=0; i1<Filas; i1++)
      {
            for (int j1=0; j1<Columnas; j1++)
            {
                  Totaldat[y1]=M[i1][j1];
                  y1++;
            }
      }    
}

void main()
{
      Console::Title::set("Diego Alberto (Tercer Previo de c++ )");//titulo
Console::BackgroundColor::set(ConsoleColor::White);//fondo blanco
Console::ForegroundColor::set(ConsoleColor::DarkMagenta);//Color de letra
Console::Clear();
      cout<<"Bienbenido!\n";
      cout<<"Este programa permite ingresar datos a cuantas matrices usted quiera...\ny mucho mas";
      cout<<"\n\nCon cuantas matrices quieres trabajar? :: ";
      int M, cont1=0, contp1=0, z=0, z1=0, u1=0, u2=0, acont=0, DP[250], sumaDP1=0, contdatos=0, vecdatos[250];
      float sumaDPT=0, sumadatos1=0;
      cin>>M;
      cout<<"\n\tMuy bien, vamos a trabajar con "<<M<<" matrices ";
      MATRICES Matriz[20];
      for (int a=0; a<M; a++)
      {
            cout<<"\n-------------------------------------------------------\nProcesando la matriz numero "<<a+1<<"...";
            Matriz[a].INGRESODAT();
            Matriz[a].PORP();
            Matriz[a].ORDM();
            Matriz[a].MTRANS();
            sumaDPT+=Matriz[a].DPARES();
            cont1+=Matriz[a].CONTDPARES();
            sumadatos1+=Matriz[a].SUMADATOS();
            contdatos+=Matriz[a].CONTDATOS();
            Matriz[a].DATPRIMOS();
            while (Matriz[a].contp[z]!=0)
            {
                  DP[z1]=Matriz[a].contp[z];
                  z++;
                  z1++;
            }
            z=0;
            Matriz[a].DATOS();
            while (u1!=Matriz[a].enterdate())// Arreglar el dato nulo
            {
                  vecdatos[u2]=Matriz[a].Totaldat[u1];
                  u1++;
                  u2++;
            }
            u1=0;
      }
      float PROMDP=sumaDPT/cont1;
      float PROMTD=sumadatos1/contdatos;
      cout<<"\n----------------------------------------";
      cout<<"\nEl promedio de datos pares es: "<<PROMDP;
      for (int t=0; t<z1; t++)
      {
            if (DP[t]<PROMDP)
            {
                  sumaDP1+=DP[t];
            }          
      }
      for (int t=0; t<u2; t++)
      {
            if (vecdatos[t]>PROMTD)
            {
                  acont++;
            }
      }
      cout<<"\n---------------------------------------------------------------------------------";
      cout<<"\nLa suma de datos primos que esta por encima del promedio de datos pares es: "<<sumaDP1;      
      cout<<"\n---------------------------------------------------------------------------------";
      cout<<"\nEl promedio de todos los datos es: "<<PROMTD;
      cout<<"\n---------------------------------------------------------------------------------";
      cout<<"\nLos datos que estan por encima del promedio de todos los datos son: "<<acont;
      getch();
}


No hay comentarios:

Publicar un comentario