• Domingo 15 de Diciembre de 2024, 19:37

Autor Tema:  fallo raro  (Leído 829 veces)

meana

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
fallo raro
« en: Miércoles 25 de Noviembre de 2009, 16:38 »
0
hola,  hoy he estado haciendo una practica de la universidad y al compilar el codigo todo bien no me da ningun problema, pero a la hora de ejecutarlo, depues de que el programa hace todos los calculos, que por cierto me los devuelve de forma correcta, cuando me sale lo de presione una tecla para continuar el programa casca, pero sin embargo si el programa lo ejecuto desde la terminal de windows no me da ningun tipo de problema. el codigo del programa es este, alguien me puede echar una mano?¿
Código: C++
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. //maximo para lamda
  8. double maxl (vector<double>&p){
  9.     double max1;
  10.     for (int i=0; i<p.size()-1; i++){ //calcula el maximo coeficiente del polinomio sin tener en cuenta al coeficiente director
  11.         if(abs(p[i])>max1) max1=abs(p[i]);
  12.     }
  13.     return max1;
  14. }
  15. //maximo para beta
  16. double maxb (vector<double>&p){
  17.     double max2;
  18.     for (int i=1; i<=p.size(); i++){ //calcula el maximo coeficiente del polinomio sin tener en cuenta el termino independiente
  19.         if(abs(p[i])>max2) max2=abs(p[i]);     
  20.     }
  21.     return max2;
  22. }
  23. //cambios de signo
  24. int cambios_signo (vector<double>&p){
  25.     int cont=0;
  26.     for(int i=0; i<p.size()-1; i++){
  27.         if(p[i]<=0 && p[i+1]>0 || p[i]>0 && p[i+1]<=0) cont++;
  28.     }
  29.     return cont;
  30. }
  31.  
  32.  
  33. int main () {
  34.  
  35.    
  36.     int n;
  37.     cout << "introduce el grado del polinomio" << endl;
  38.     cin >> n;
  39.     vector<double>polinomio(n+1);
  40.     for (int i=0; i<n+1; i++){
  41.             cout << "a(" << i << ") = ";
  42.             cin >> polinomio[i];
  43.             cout << "i = " << i << ", polinomio["<<i<<"] = " << polinomio[i] << endl;
  44.         }
  45.     int cont=0;
  46.     while(polinomio[0]==0){
  47.         for (int i=0; i<=n; i++){
  48.             polinomio[i]=polinomio[i+1];
  49.         }
  50.      cont++;  
  51.     }
  52.     polinomio.resize((polinomio.size())-cont);
  53.     vector<double>polinomio_negativo(n+1);
  54.     for (int i=0; i<=polinomio.size(); i++){
  55.         if (i%2==0){
  56.             polinomio_negativo[i]=polinomio[i];
  57.         }
  58.         else polinomio_negativo[i]=polinomio[i]*(-1);
  59.     }
  60.  
  61.     //acotacion de raices    
  62.     double lamda = maxl (polinomio)/abs(polinomio[polinomio.size()-1]);
  63.     double beta = maxb (polinomio)/abs(polinomio[0]);
  64.     cout << "lamda = " << lamda << endl;
  65.     cout << "beta = " << beta << endl;
  66.     cout <<  (1/(1+beta)) << " <= |z| <= " << 1+lamda << endl;
  67.     cout << "las cotas son" << endl;
  68.     cout << "C.I.R.P = " << (1/(1+beta)) << "   " << "C.S.R.P = " << 1+lamda << endl;
  69.     cout << "C.I.R.N = " << -(1+lamda) << " " << "C.S.R.N = " << -(1/(1+beta)) << endl;
  70.    
  71.     //descartes (cambios de signo)
  72.     cout << "el numero de raices positivas de p(x) es menor o igual en un numero par a " << cambios_signo(polinomio) << endl;
  73.     cout << "el numero de raices negativas de p(x) es menor o igual en un numero par a " << cambios_signo(polinomio_negativo) << endl;
  74.  
  75.     //hua
  76.     int c=1;
  77.     while((polinomio[c]*polinomio[c] > polinomio[c-1]*polinomio[c+1]) && (c<n+1)){
  78.         c++;
  79.     }
  80.     cout << "Para k = " << c << " se verifica que a(k)^2<=a(k-1)*a(k+1) por lo que p(x) tiene al menos un par de raíces complejas conjugadas" << endl;
  81.        
  82.  
  83.     system ("PAUSE");  
  84.     return 0;
  85. }
  86.  
  87.  
por cierto los datos con los que hago la prueba son grado del polinomio 6 y coeficientes -1, 1, 2, 8.3, -3, 0, 5