Ayuda en Programa basico sobre Medidas de Dispersion

Iniciado por Sword9K, 1 Septiembre 2018, 03:58 AM

0 Miembros y 2 Visitantes están viendo este tema.

Sword9K

No veo que pueda estar mal, aunque... creo que el problema empieza con el ordenamiento.

Código (cpp) [Seleccionar]

#include<iostream>
#include<conio.h>
#include<math.h>

using namespace std;

int main(){
             int l=0;
             double  numeros[500], j, aux, n, deses=0, coef=0, pos = n/2, suma=0, media=0, varia=0, amp=0;
             
             //Amplitud de Variación de los Datos

             cout<<"Digite el Numero de Elementos: ";
             cin>>n;
             
             for(int i=0;i<n;i++){
                     cout<<"digite un numero: "<<endl;
                     cin>>numeros[i];
             }
             for(int i=0;i<n;i++){  //Ordenamiento
                              for(int j=0;j<n-1;j++){
                                      if(numeros[j]>numeros[j+1]){
                                                                  aux = numeros[j];
                                                                  numeros[j] = numeros[j+1];
                                                                  numeros[j+1] = aux;
                                                                  }
                                      }
                              }
             for(int i=0;i<n;i++){
             cout<<"Numeros en Orden: ";
             cout<<" - "<<numeros[i]<<endl;
             suma = suma + numeros[i];
             amp =numeros[i-01]-numeros[0];
             }
             
             media = (suma)/(n);
             cout<<"El Rango es: "<<amp<<endl;        
             cout<<"La Media Aritmetica es: "<<media<<endl;
             
             for(int i=0;i<n;i++){
                     numeros[i]= numeros[i]- media;
             cout<<"Desviacion: ";
             cout<<" - "<<numeros[i]<<endl;
             }
             
             for(int i=0;i<n;i++){
                     numeros[i]= pow(numeros[i],2);
             cout<<"Desviacion al Cuadrado: ";
             cout<<" - "<<numeros[i]<<endl;
             suma = suma + numeros[i];
             }
             
             varia = (suma)/(n-1);
             cout<<"Varianza: "<<varia<<endl;
             
             deses = sqrt(varia);
             cout<<"Desviacion Estandar: "<<deses<<endl;
             
             coef = (deses*100)/media;
             cout<<"Coeficiente de Variacion: "<<coef;
             cout<<"% ";

getch();
return 0;
}



ivancea96

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.

Sword9K

#2
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".

MAFUS

¿Qué tal si modificas tu primer post y pones el código entre etiquetas geshi o code? Gracias.