Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:
Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro

Duda sobre arrays 2

Preguntas y respuestas sobre el lenguaje de programacion C/C++

Duda sobre arrays 2

Notapor Tichy el Lun May 14, 2007 1:08 pm

Hola a todos.

Estoy intentando calcular la desviación típica de un conjunto de valores enteros guardados en un array

dt=sqrt((sumatorio(xi-media)^2)/N).Esta es la expresión a implementar.

Código: Seleccionar todo
#include<stdio.h>       
#include<conio.h>
     
/*Devuelve la media*/
float media(int a[],int tama){
     int i;
     float s=0;
     for(i=0;i<tama;i++)
       s=s+a[i];
     return (s/tama);
}

/*Eleva los elementos del array al cuadrado*/

void potencia (int a[],int a2[],int tama){
    int i;
    for(i=0;i<tama;i++)
      a2[i]=a[i]*a[i];
}

int main(){
    float d[20],d2[20],m1;
    int i,N;
    do{
      printf("\nIntroduce el numero de valores:" );
        if(N>20)
          printf("\nError.Demasiados elementos");
        else{
         printf("Elementos de d[%i]\n",i);      
          for(i=0;i<N;i++)
          scanf("%f",&d[i]);
        }
     }while(N<20);
     
     m1=media(d,N);
     potencia(d,
     


La verdad es que no se seguir.¿Podriaís ayudarme?

Gracias por todo
Tichy
Novato
Novato
 
Mensajes: 7
Registrado: Lun Abr 23, 2007 5:41 pm

Notapor Tichy el Lun May 14, 2007 1:22 pm

Hola otra vez.

He mejorado esta parte del código ya que el anterior tenía algunos errores:

Código: Seleccionar todo
#include<stdio.h>       
#include<conio.h>
     
/*Devuelve la media*/
float media(float a[],int tama){
     int i;
     float s=0;
     for(i=0;i<tama;i++)
       s=s+a[i];
     return (s/tama);
}

/*Eleva los elementos del array al cuadrado*/

void potencia (float a[],float a2[],int tama){
    int i;
    for(i=0;i<tama;i++)
      a2[i]=a[i]*a[i];
}

int main(){
    float d[20],d2[20],m1;
    int i,N;
    do{
      printf("\nIntroduce el numero de valores:" );
      scanf("%i",&N);
        if(N>20)
          printf("\nError.Demasiados elementos");
        else{      
          for(i=0;i<N;i++){
            printf("Elementos de d[%i]\n",i);
            scanf("%f",&d[i]);
         }
        }
     }while(N<20);
     
     
    }
 
pero siguo sin saber implementar la fórmula de la desvisción típica :roll:
Tichy
Novato
Novato
 
Mensajes: 7
Registrado: Lun Abr 23, 2007 5:41 pm

Notapor Tichy el Lun May 14, 2007 3:54 pm

Hola.

Como ves le siguo dando vueltas y aquí te escribo el nuevo código.

Código:

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

/*Devuelve la media.
Entrada:2 float a[] y int tama
Salida: 1 float s/tama que es la media */
float media(float a[],int tama){
int i;
float s=0;
for(i=0;i<tama;i++)
s=s+a[i];
return (s/tama);
}

/*Eleva los elementos del array al cuadrado
Entrada:1 float y 1 int,float a[] y tama
Salida:1 float,float a2[]*/

void potencia (float a[],float a2[],int tama){
int i;
for(i=0;i<tama;i++)
a2[i]=a[i]*a[i];
}

int main(){
int i,N;
float d[20],d2[20], sumatorio=0.0,m1,res[20];

do{
printf("\nIntroduce el numero de valores:" );
scanf("%i",&N);
if(N>20)
printf("\nError.Demasiados elementos");
else{
for(i=0;i<N;i++){
printf("\nElementos de d[%i]: ",i);
scanf("%i",&d[i]);
}
}
}while(N<10);

m1=media(d,N);
for(i=0;i<N;i++)
res[i]=d[i]-m1;
for(i=0;i<N;i++){
sumatorio=sumatorio+potencia(res,d2,N)
}
printf("\nEl valor de la desviacion tipica es: %f",sqrt(sumatorio/N));
getch();
return 0;
}



Ahora me sale el error:C\RELACION 9\E-8.cpp void value not ignored as it ought to be, en la instruccion sumatorio=sumatorio+potencia(res,d2,N); pero que permite ejecutar el código
Por otro lado al imponer la condición de while N<20 siempre se va repetir la entrada de datos ya que
el ejercicio pide calcular la desviación típica para un máximo de 20 valores y si por ejemplo meto 15 valores vuelve a pedir la entrada de datos del array por lo que no pasa a las siguientes instrucciones.

Gracias y un saludo
Tichy
Novato
Novato
 
Mensajes: 7
Registrado: Lun Abr 23, 2007 5:41 pm


Volver a C/C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados