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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  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,567 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 20,309 Último mensaje 17 Febrero 2022, 20:46 pm
por werty2310
[C] Teorema de Pitágoras « 1 2 3 »
Programación C/C++
STANHMAL 22 20,078 Último mensaje 8 Julio 2010, 02:35 am
por .:BlackCoder:.
Teorema del seno
Programación C/C++
ChicoMaravilla 3 3,198 Último mensaje 10 Noviembre 2011, 13:55 pm
por ChicoMaravilla
Teorema Binomial
Programación C/C++
Black Lotus 5 4,778 Último mensaje 18 Abril 2013, 21:42 pm
por leosansan
ayuda cuadrado de binomio en .bat
Programación General
jan_ooo 0 1,842 Ú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