elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

á

 


Tema destacado: Recopilaciˇn Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programaciˇn
| |-+  Programaciˇn C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Teorema del Binomio
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Teorema del Binomio  (Leído 5,089 veces)
Black Lotus

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Teorema del Binomio
« en: 23 Mayo 2013, 01:06 am »

Se trata de crear un programa para que resuelva ejercicios del teorema del binomio, sin embargo se tiene el problema de que solo realiza ejercicios con signo positivo tales como hasta el exponente 12, sin embargo no se puede realizar ejercicios que contentan signo negativos tales como: .... Entonces me ayudarian a darme la idea o arreglar el codigo a modo que se pueda hacer operaciones con signo negativo?

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <conio>
  4. #include <stdlib>
  5.  
  6. using namespace std;
  7.  
  8. long int fact(long int x)
  9. {
  10.    int z = 1;
  11.    for (x; x >=1; x--)
  12.    {
  13.        z = z*x;
  14.    }
  15.    return z;
  16. }
  17.  
  18. int main()
  19. {
  20.    long int r, n, p, num , y ,n1, n2, resu1, resu2, resul;
  21.    char a,b;
  22.    char t1, t2, p1;
  23.    char op;
  24. do {
  25. ret:
  26. clrscr();
  27. cout<<"\n         ╔═══════════════════════════════════════════════════════════╗";
  28. cout<<"\n         ║                   :: Suma de Binomios ::                  ║";
  29. cout<<"\n         ╚═══════════════════════════════════════════════════════════╝";
  30. cout<<"\n          Escriba el Exponente de la Ecuaci\242n:  ";
  31. cin>> p1;
  32. if ((p1>48) && (p1<58))
  33. goto sig; else goto ret;
  34. sig:
  35. cout <<"\n          Escribir el T\202rmino numerico:  ";
  36. cin >> t1 ;
  37. if ((t1>48) && (t1<58))
  38. goto sig2; else goto sig;
  39. sig2:
  40. cout <<"\n          Escribir el Primer T\202rmino:  ";
  41. cin >> a ;
  42. if ((a>64) && (a<91) || (a>96) && (a<123))
  43. goto sig3; else goto sig2;
  44. sig3:
  45. cout <<"\n          Escribir el T\202rmino numerico:  ";
  46. cin >> t2 ;
  47. if ((t2>48) && (t2<58))
  48. goto sig4; else goto sig3;
  49. sig4:
  50. cout <<"\n          Escribir el Segundo T\202rmino:  ";
  51. cin >> b ;
  52. if ((b>64) && (b<91) || (b>96) && (b<123))
  53. goto sig5; else goto sig4;
  54. sig5:
  55. cout<<endl;
  56. cout<<"          El Producto Notable de ("<<t1<<a<<"+"<<t2<<b<<")^"<<p1<<" es...";
  57. cout<<endl<<endl;
  58. n  = p1 - 48;
  59.  
  60.  
  61.    for (p=0; p<=n; p++)
  62.    {
  63.        n1 = t1 - 48;
  64.        n2 = t2 - 48;
  65.        resu2 = ( pow(n2,p)) ;
  66.        y = n - p;
  67.        resu1 = ( pow(n1,y)) ;
  68.  
  69.        num = fact(n) / (fact(p) * fact(y));
  70.        resul= resu1*num*resu2;
  71.        if (p==0)
  72.            cout<< resul <<" " << a << "^ " << n<< " + " ;
  73.        else if ( p==n)
  74.            cout << resul <<" "<< b <<"^ " << p ;
  75.       else {
  76.  
  77.        cout << resul <<" " << a << "^ " << y << " * " << b <<"^ " << p <<" + " ;
  78.       }
  79.  
  80.    }
  81.  
  82.    cout<<endl<<endl;
  83.    cout<<"Ingresar la posicion que deseas averiguar:";
  84.    cin >> r ;
  85.        p = r-1;
  86.        y = n - p;
  87.        num = fact(n) / (fact(p) * fact(y));
  88.        resul= resu1*num*resu2;
  89.     cout<<"la posicion es :";
  90.     cout<< resul<<" " << a << "^ " << y << " * " << b <<"^ " << p ;
  91.    cout<<endl<<endl;
  92.  
  93. }while (op != 50);
  94.  
  95. }


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Teorema del Binomio
« Respuesta #1 en: 23 Mayo 2013, 16:06 pm »


Creo que te has hecho la p*cha un lÝo. No me explico como no metes la gamba entre tanto parÚntesis y goto, con lo fßciles que son los do-while a la hora de revisar el cˇdigo. Pero en fin, t˙ mismo.

Creo que andabas buscando una salida como esta:


Código
  1. escriba el exponente de la ecuacion = 4
  2. escribir el primer coeficiente (numero)= 2
  3. escribir el segundo coeficiente (numero)= 3
  4. escribir el primer coeficiente (letra en minuscula)= a
  5. escribir el segundo coeficiente (letra en minuscula)= b
  6. +16 a^ 4-96 a^ 3 * b^ 1+216 a^ 2 * b^ 2-216 a^ 1 * b^ 3+81 b^ 4
  7. Presione una tecla para continuar . . .
  8.  
  9. Mejor escrito:
  10.  
  11. 16 a^4 - 96 a^3 b + 216 a^2 b^2 - 216 a b^3 + 81 b^4
  12.  
  13.  

con signos, coeficientes numÚricos y coeficientes "letrados"  ;)

Ta┤bien, te paso el cˇdigo:
:)

Código
  1.  
  2. #include <iostream>
  3. #include <cmath>    
  4. #include <cstdlib>  
  5. using namespace std;
  6.  
  7. float comb(int n,int p)
  8. {
  9.    int i;
  10.    if (n < 0 || p < 0 || p > n) return 0;
  11.    float c = 1;
  12.    if (p>n/2)
  13.        p=n-p;
  14.    for ( p; p>=1; p--,n--)
  15.    c*= n/p;
  16.    return c;
  17. }
  18. int main()
  19. {
  20.    long int n,c,d,p, num ,y, y1=0,expon;
  21.    char coef_1,coef_2,signo,a,b;
  22.    cout << "escriba el exponente de la ecuacion = ";
  23.    cin >> expon;
  24.  
  25.    do{
  26.        cout << "escribir el primer coeficiente (numero)= ";
  27.        cin >>coef_1 ;
  28.    }while (coef_1<48 || coef_1>58);
  29.    do{
  30.    cout << "escribir el segundo coeficiente (numero)= ";
  31.    cin >>coef_2 ;
  32.    }while (coef_2<48 || coef_2>58);
  33.    do{
  34.        cout << "escribir el primer coeficiente (letra en minuscula)= ";
  35.        cin >>a ;
  36.    }while (a>64 && a<96);
  37.    do{
  38.    cout << "escribir el segundo coeficiente (letra en minuscula)= ";
  39.    cin >>b ;
  40.    }while (b>64 && b<96);
  41.    n=expon;
  42.    c=coef_1-48;
  43.    d=coef_2-48;
  44.    for (p=0; p<=n; p++,y1++)
  45.    {
  46.        num = comb(n,p);
  47.        y=n-p;
  48.        if ( p%2==0)
  49.            signo='+';
  50.        else
  51.            signo='-';
  52.        if (p==0 )
  53.            cout<<signo<< pow(c,n) <<" " << a <<"^ " << n;
  54.        else if ( p==n)
  55.            cout <<signo<< pow(d,n) <<" "<< b <<"^ " << p ;
  56.       else {
  57.  
  58.        cout <<signo<< num*pow(c,n-y1)*pow(d,y1) <<" "<<a<< "^ " << y << " * " << b<<"^ " << p  ;
  59.       }
  60.     }
  61.    cout <<endl;
  62.    system("pause") ;
  63.    return 0;
  64. }
  65.  


Espero te sirva de referencia al menos.

Por cierto lo del n˙mero combinatorio es para obtener potencias superiores a 12, que si no salen mßs es porque C/C++ "no pueden" con n˙meros tan grandes como los que originan los factoriales al calcular los n˙meros combinatorios y de esta manera pueden ser de 20 y mßs, dependiendo de los coeficientes .Si son uno no hay problema pero cuando los subes, la combinaciˇn entre el tama˝o de los combinatorios y las potecias de los mencionados numeros hacen que el exponente no pueda ser muy grande. Son las miserias cel C/C++ con n˙meros grrandes como ya te indiquÚ. HabrÝa que usar una librerÝa de n˙meros grandes, como GMP, para poder hacer cßlculos sin esas limitaciones del C/C++.Una explicaciˇn mßs amplia en: Teorema Binomial

Saluditos!. .... ..




P.D:A mÝ personalmente no me acaba se satisfacer el cˇdigo ya que limitas la entrada de coeficientes a n˙meros entre 0 y 9, cuando declarßndolos directamente como int en lugar de char no tendrÝas esa limitaciˇn. O bien los declaras como char pero como array para pillar todas las cifras y luego hacer una conversiˇn de cadena a entero, que para eso existen las funciones apropiadas. Pero bueno, tal como lo tenÝas he procurado no "menartelo" mucho.
:laugh:


« Última modificación: 23 Mayo 2013, 21:02 pm por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Calculador de Binomio de Newton [Python]
Scripting
CaronteGold 9 18,876 Último mensaje 17 Febrero 2022, 20:46 pm
por werty2310
[C] Teorema de Pitßgoras « 1 2 3 »
Programaciˇn C/C++
STANHMAL 22 18,610 Último mensaje 8 Julio 2010, 02:35 am
por .:BlackCoder:.
Teorema del seno
Programaciˇn C/C++
ChicoMaravilla 3 2,776 Último mensaje 10 Noviembre 2011, 13:55 pm
por ChicoMaravilla
Teorema Binomial
Programaciˇn C/C++
Black Lotus 5 4,238 Último mensaje 18 Abril 2013, 21:42 pm
por leosansan
ayuda cuadrado de binomio en .bat
Programaciˇn General
jan_ooo 0 1,471 Último mensaje 19 Mayo 2014, 06:51 am
por jan_ooo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines