Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: lonelym29 en 11 Febrero 2020, 04:50 am



Título: Ayuda para sacar la desviación estándar
Publicado por: lonelym29 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);
 }


Título: Re: Ayuda para sacar la desviación estándar
Publicado por: CalgaryCorpus en 11 Febrero 2020, 09:13 am
Al menos inicializa las variables locales suma y sigma a 0.