Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Gerik en 1 Septiembre 2010, 19:36 PM

Título: Sugerencias
Publicado por: Gerik en 1 Septiembre 2010, 19:36 PM
Código (cpp) [Seleccionar]
#include <conio>
#include <iostream>
#include <stdlib>
#include <math>

class C
{public:
  int *c;
  int r;
  C(){c=new int [10];}
  Union(int q[10],int p[10],int a,int b);
  int suma(int q[10],int a);
  double promedio(int a,int b);
  double varianza(int a,int b);
  double desviacion(int a);
};
main ()
   {int a,z;
    int *conjuntoA;
    int *conjuntoB;
    conjuntoA=new int [10];
    conjuntoB=new int [10];
    cout<<"Digite El Numero De Elementos Del Conjunto A: ";
    cin>>a;
    cout<<"Digite El Numero De Elementos Del Conjunto B: ";
    cin>>z;
    randomize();
    cout<<"\nEl Conjunto A es : ";
    for(int i=0;i<a;i++)
       {conjuntoA[i]=random(100);
        cout<<conjuntoA[i]<<" ";}
    cout<<"\nEl Conjunto B es : ";
    for(int j=0;j<z;j++)
       {conjuntoB[j]=random(100);
        cout<<conjuntoB[j]<<" ";}
    C obj;
    obj.Union(conjuntoA,conjuntoB,a,z);
    cout<<"\nLa Suma De A es :"<<obj.suma(conjuntoA,a);
    cout<<"\nLa Suma De B es :"<<obj.suma(conjuntoB,z);
    cout<<"\nEl Promedio De A Es :"<<obj.promedio(obj.suma(conjuntoA,a),a);
    cout<<"\nEl Promedio De B Es :"<<obj.promedio(obj.suma(conjuntoB,z),z);
    cout<<"\nLa Varianza De A Es :"<<obj.varianza(obj.promedio(obj.suma(conjuntoA,a),a),a);
    cout<<"\nLa Varianza De B Es :"<<obj.varianza(obj.promedio(obj.suma(conjuntoB,z),z),z);
    cout<<"\nLa Varianza De A Es :"<<obj.desviacion(obj.varianza(obj.promedio(obj.suma(conjuntoA,a),a),a));
    cout<<"\nLa Varianza De B Es :"<<obj.desviacion(obj.varianza(obj.promedio(obj.suma(conjuntoB,z),z),z));
    getch();
    }
C::Union(int q[10],int p[10],int a,int b)
   {for(int i=0;i<a;i++)
       c[i]=q[i];
    for(int i=0;i<b;i++)
       {c[a+i]=p[i];}
    cout<<"\nEl Conjunto Union De A y B Es : ";
    for(int i=0;i<(a+b);i++)
        {cout<<c[i]<<" ";}
   return 0;}//Cierro Union
int C::suma(int q[10],int a)
    {r=0;
     for(int i=0;i<a;i++)
         {r+=q[i];}
     return r;}//Cierro Suma
double C::promedio(int a,int b)
     {return a/b;}//Cierro Promedio
double C::varianza(int a,int b)
       {return a/(b-1);}
double C::desviacion(int a)
       {return sqrt(a);}


lo que quiero es ver si hay otra forma de eliminar la info de r cada vez que llamo la funcion suma, ademas si hay sugerencias en otra parte del codigo se aceptan 
Título: Re: Sugerencias
Publicado por: carlitos_jajajajaja en 3 Septiembre 2010, 06:37 AM
Veo unas cuantas fugas de memoria por ahi... Deberias buscar un poco acerca del operador new y el operador delete.


Podrias hacer que el metodo promedio realice la suma, y que no necesites usar directamente el metodo suma desde main, eso le daria a tu programa un sabor mas orientado a objetos :p

Lo mismo para varianza y desviacion estandar.


Y al menos que tu profesor(a) explicitamente te lo pida, no es recomendable usar las extensiones (no estandar) de Borland c en tus programas, es decir getch()/conio, usar main y procedimientos sin tipo de retorno


Se nota que entiendes bien la idea :D el codigo esta bien, funciona


Un ultimo consejo:  Declara los arreglos un poco mas grandes porque estan muy pequenos, es muy facil hacer que la memoria se corrompa en ese programa