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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda para sacar la desviación estándar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para sacar la desviación estándar  (Leído 2,961 veces)
lonelym29

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda para sacar la desviación estándar
« en: 11 Febrero 2020, 04:50 am »

Tengo que hacer un programa con listas enlazadas que calcule la media y la desviación estándar, puedo calcular la media pero tengo un error en la desviación, alguien me podría  ayudar?

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

//NODO
struct Nodo
{
   int dato;
   Nodo *siguiente;
};

void insertar(Nodo *&,int);
void mostrar(Nodo*);
void media(Nodo*);

int main()
{
   struct Nodo *lista=NULL;
   float dato;
   int opcion;
   
   do
   {
      printf("Inserte el numero: ");
      scanf("%f",&dato);
      insertar(lista,dato);
      printf("Deseas ingresar otro numero (1)Si   (2)No:   ");
      scanf("%i",&opcion);
   }while(opcion==1);
   
   printf("\n Los datos ingresados son los siguientes: \n");
   mostrar(lista);
   media(lista);
   getch();
   
   return 0;

}

//Insertar en la lista
void insertar( Nodo* & lista, int n)
{
   Nodo *nuevo=new Nodo();
   Nodo *otro;
   nuevo->dato=n;
   nuevo->siguiente=NULL;
   if(lista==NULL)
   {
      lista=nuevo;
      lista=root;
   }
   else
   {
      otro=lista;
      while(otro->siguiente!=NULL)
      {
         otro=otro->siguiente;
      }
      otro->siguiente=nuevo;
   }
}
 // mostrar la lista de datos
 void mostrar(Nodo *lista)
 {
    while(lista != NULL)
    {
       printf("->%0.2i\n",lista->dato);
       lista=lista->siguiente;
    }
 }
 
 //Media y operaciones
 void media(Nodo *lista)
 {
    int z=0;
    float to = 0;
    float suma, n,media,sigma,resta,total,i=0;
   int desv;   
    while(lista!=NULL)
    {
       z++;
       suma= suma + lista->dato;
       lista=lista->siguiente;
       to=to+1;
   }
   media=suma/to;
   lista=root;
    while(lista!=NULL)
    {
       while(i<z)
       {
         sigma= sigma + pow(lista->dato - media,2);
          lista=lista->siguiente;
          i++;
      }    
    }
       desv=pow((sigma/z-1),(.5));
       
       
    printf("\nEl numero de datos ingresados es: %i\n",z);
    printf("\n La sumatoria es: %0.2f\n",suma);
    printf("\n La media es: %0.2f\n", media);
    printf("\n La desviacion estandar es: %e\n",desv);
 }


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Ayuda para sacar la desviación estándar
« Respuesta #1 en: 11 Febrero 2020, 09:13 am »

Al menos inicializa las variables locales suma y sigma a 0.


En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines