Foro de elhacker.net

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



Título: Sugerencias
Publicado por: Gerik en 1 Septiembre 2010, 19:36
Código
  1. #include <conio>
  2. #include <iostream>
  3. #include <stdlib>
  4. #include <math>
  5.  
  6. class C
  7. {public:
  8.  int *c;
  9.  int r;
  10.  C(){c=new int [10];}
  11.  Union(int q[10],int p[10],int a,int b);
  12.  int suma(int q[10],int a);
  13.  double promedio(int a,int b);
  14.  double varianza(int a,int b);
  15.  double desviacion(int a);
  16. };
  17. main ()
  18.   {int a,z;
  19.    int *conjuntoA;
  20.    int *conjuntoB;
  21.    conjuntoA=new int [10];
  22.    conjuntoB=new int [10];
  23.    cout<<"Digite El Numero De Elementos Del Conjunto A: ";
  24.    cin>>a;
  25.    cout<<"Digite El Numero De Elementos Del Conjunto B: ";
  26.    cin>>z;
  27.    randomize();
  28.    cout<<"\nEl Conjunto A es : ";
  29.    for(int i=0;i<a;i++)
  30.       {conjuntoA[i]=random(100);
  31.        cout<<conjuntoA[i]<<" ";}
  32.    cout<<"\nEl Conjunto B es : ";
  33.    for(int j=0;j<z;j++)
  34.       {conjuntoB[j]=random(100);
  35.        cout<<conjuntoB[j]<<" ";}
  36.    C obj;
  37.    obj.Union(conjuntoA,conjuntoB,a,z);
  38.    cout<<"\nLa Suma De A es :"<<obj.suma(conjuntoA,a);
  39.    cout<<"\nLa Suma De B es :"<<obj.suma(conjuntoB,z);
  40.    cout<<"\nEl Promedio De A Es :"<<obj.promedio(obj.suma(conjuntoA,a),a);
  41.    cout<<"\nEl Promedio De B Es :"<<obj.promedio(obj.suma(conjuntoB,z),z);
  42.    cout<<"\nLa Varianza De A Es :"<<obj.varianza(obj.promedio(obj.suma(conjuntoA,a),a),a);
  43.    cout<<"\nLa Varianza De B Es :"<<obj.varianza(obj.promedio(obj.suma(conjuntoB,z),z),z);
  44.    cout<<"\nLa Varianza De A Es :"<<obj.desviacion(obj.varianza(obj.promedio(obj.suma(conjuntoA,a),a),a));
  45.    cout<<"\nLa Varianza De B Es :"<<obj.desviacion(obj.varianza(obj.promedio(obj.suma(conjuntoB,z),z),z));
  46.    getch();
  47.    }
  48. C::Union(int q[10],int p[10],int a,int b)
  49.   {for(int i=0;i<a;i++)
  50.       c[i]=q[i];
  51.    for(int i=0;i<b;i++)
  52.       {c[a+i]=p[i];}
  53.    cout<<"\nEl Conjunto Union De A y B Es : ";
  54.    for(int i=0;i<(a+b);i++)
  55.        {cout<<c[i]<<" ";}
  56.   return 0;}//Cierro Union
  57. int C::suma(int q[10],int a)
  58.    {r=0;
  59.     for(int i=0;i<a;i++)
  60.         {r+=q[i];}
  61.     return r;}//Cierro Suma
  62. double C::promedio(int a,int b)
  63.     {return a/b;}//Cierro Promedio
  64. double C::varianza(int a,int b)
  65.       {return a/(b-1);}
  66. double C::desviacion(int a)
  67.       {return sqrt(a);}
  68.  

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
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