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.
|