Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Sword9K en 1 Septiembre 2018, 03:58 am



Título: Ayuda en Programa basico sobre Medidas de Dispersion
Publicado por: Sword9K en 1 Septiembre 2018, 03:58 am
No veo que pueda estar mal, aunque... creo que el problema empieza con el ordenamiento.

Código
  1. #include<iostream>
  2. #include<conio.h>
  3. #include<math.h>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8.              int l=0;
  9.              double  numeros[500], j, aux, n, deses=0, coef=0, pos = n/2, suma=0, media=0, varia=0, amp=0;
  10.  
  11.              //Amplitud de Variación de los Datos
  12.  
  13.              cout<<"Digite el Numero de Elementos: ";
  14.              cin>>n;
  15.  
  16.              for(int i=0;i<n;i++){
  17.                      cout<<"digite un numero: "<<endl;
  18.                      cin>>numeros[i];
  19.              }
  20.              for(int i=0;i<n;i++){  //Ordenamiento
  21.                               for(int j=0;j<n-1;j++){
  22.                                       if(numeros[j]>numeros[j+1]){
  23.                                                                   aux = numeros[j];
  24.                                                                   numeros[j] = numeros[j+1];
  25.                                                                   numeros[j+1] = aux;
  26.                                                                   }
  27.                                       }
  28.                               }
  29.              for(int i=0;i<n;i++){
  30.              cout<<"Numeros en Orden: ";
  31.              cout<<" - "<<numeros[i]<<endl;
  32.              suma = suma + numeros[i];
  33.              amp =numeros[i-01]-numeros[0];
  34.              }
  35.  
  36.              media = (suma)/(n);
  37.              cout<<"El Rango es: "<<amp<<endl;        
  38.              cout<<"La Media Aritmetica es: "<<media<<endl;
  39.  
  40.              for(int i=0;i<n;i++){
  41.                      numeros[i]= numeros[i]- media;
  42.              cout<<"Desviacion: ";
  43.              cout<<" - "<<numeros[i]<<endl;
  44.              }
  45.  
  46.              for(int i=0;i<n;i++){
  47.                      numeros[i]= pow(numeros[i],2);
  48.              cout<<"Desviacion al Cuadrado: ";
  49.              cout<<" - "<<numeros[i]<<endl;
  50.              suma = suma + numeros[i];
  51.              }
  52.  
  53.              varia = (suma)/(n-1);
  54.              cout<<"Varianza: "<<varia<<endl;
  55.  
  56.              deses = sqrt(varia);
  57.              cout<<"Desviacion Estandar: "<<deses<<endl;
  58.  
  59.              coef = (deses*100)/media;
  60.              cout<<"Coeficiente de Variacion: "<<coef;
  61.              cout<<"% ";
  62.  
  63. getch();
  64. return 0;
  65. }
  66.  



Título: Re: Ayuda en Programa basico sobre Medidas de Dispersion
Publicado por: ivancea96 en 2 Septiembre 2018, 17:01 pm
Apunto un detalle: en la línea del if de donde ordena, haces: "numeros[j+1]".
Teniendo en cuenta que n es el número de elementos, y que j va de 0 a n-1 (n-1 incluído), al acceder a j+1 estás sobrepasando el total de elementos, y accediendo a una posición más.
Ese es el primer fallo grave que veo.


Título: Re: Ayuda en Programa basico sobre Medidas de Dispersion
Publicado por: Sword9K en 2 Septiembre 2018, 17:22 pm
wow, el problema era que sobrepasaba, entonces si cambio arriba en for(int j=0;j<n-1;j++){    , creo que ya estaría. pero ahora uno de los problemas es el rango que no se como podría seleccionar el dato mayor y dato menor sin seleccionarlos todos.



aunque si en amp =numeros[i-01] cambio i por n me daría error de invalido.


Mod: Prohibido el doble o triple post. Usa el botón "Modificar".


Título: Re: Ayuda en Programa basico sobre Medidas de Dispersion
Publicado por: MAFUS en 2 Septiembre 2018, 17:58 pm
¿Qué tal si modificas tu primer post y pones el código entre etiquetas geshi o code? Gracias.