Why wont this program work?

Im suppose to create this random number generator and i have two different programs. But neither work. What seems to be the issue?

Purpose of the program:

Create a program that generates 20 random numbers and find the average

and the corrected sample standard deviation.

s=\sqrt{(\frac{1}{N-1})\sum_{i=1}^{N}(x_{i}-(x\bar{}))^{2}}

1.)

//Program to calculate sd

#include <iostream>
#include <cmath>
using namespace std;

double deviation(const double , int);
double mean (const double , int);

int main ()
{

int size=10;
double x[]={1,2,3,4,5,6,7,8,9,10};
double m,d;

m=mean(x, size);
d=deviation (x, size);
cout<<"The mean is:"<<m;
cout<<"The standard deviation is:"<<d;
return 0;

}

double mean(const double x[], int size)
{
double sum;
double mean;
//size=10;
for ( int i = 0; i <=size; i++ )
{
sum += x[i];
}
mean=sum/10;
return mean;
}

double deviation (const double x[], int size)
{
double deviation;
double sum2;
double mean;
//size=10;
for ( int i = 0; i <=size; i++ )
{
sum2 += pow((x[i]-mean),2);
}
deviation= sqrt(sum2/(size-1));
return deviation;
}

2.)

#include <iostream>
#include <cmath>
using namespace std;

double deviation(const double , int);
double mean (const double , int);

int main ()
{

int size=20;
double x[20];
double m,d;

for(i=0;i<19;i++)
{
x[i]=rand()%9;
}

m=mean(x, size);
d=deviation (x, size);
cout<<"The mean is:"<<m;
cout<<"The standard deviation is:"<<d;
return 0;

}

double mean(const double x[], int size)
{
double sum;
double mean;
//size=10;
for ( int i = 0; i <=size; i++ )
{
sum += x[i];
}
mean=sum/10;
return mean;
}

double deviation (const double x[], int size)
{
double deviation;
double sum2;
double mean;
//size=10;
for ( int i = 0; i <=size; i++ )
{
sum2 += pow((x[i]-mean),2);
}
deviation= sqrt(sum2/(size-1));
return deviation;
}
Last edited on
Use the source code format when posting code.
Here is your code cleaned up a bit so other coders can observe easier.

Also a side note:
DO NOT initialized your variables in the middle of your program that is a NO NO. Initialized variables at the beginning of your program, if not it makes the whole thing look like shit.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
1.)

//Program to calculate sd

#include <iostream>
#include <cmath>
using namespace std;

double deviation(const double , int);
double mean (const double , int);

int main (){

int size=10;
double x[]={1,2,3,4,5,6,7,8,9,10};
double m,d;

m=mean(x, size);
d=deviation (x, size);
cout<<"The mean is:"<<m;
cout<<"The standard deviation is:"<<d;
return 0;
}

double mean(const double x[], int size)
{
double sum;
double mean;
//size=10;
for ( int i = 0; i <=size; i++ )
{
sum += x[i];
}
mean=sum/10;
return mean;
}

double deviation (const double x[], int size)
{
double deviation;
double sum2;
double mean;
//size=10;
for ( int i = 0; i <=size; i++ )
{
sum2 += pow((x[i]-mean),2);
}
deviation= sqrt(sum2/(size-1));
return deviation;
}


2.)

#include <iostream>
#include <cmath>
using namespace std;

double deviation(const double , int);
double mean (const double , int);

int main ()
{

int size=20;
double x[20];
double m,d;

for(i=0;i<19;i++)
{
x[i]=rand()%9;
}

m=mean(x, size);
d=deviation (x, size);
cout<<"The mean is:"<<m;
cout<<"The standard deviation is:"<<d;
return 0;

}

double mean(const double x[], int size)
{
double sum;
double mean;
//size=10;
for ( int i = 0; i <=size; i++ )
{
sum += x[i];
}
mean=sum/10;
return mean;
}

double deviation (const double x[], int size)
{
double deviation;
double sum2;
double mean;
//size=10;
for ( int i = 0; i <=size; i++ )
{
sum2 += pow((x[i]-mean),2);
}
deviation= sqrt(sum2/(size-1));
return deviation;
}
Last edited on
neither work. What seems to be the issue?

Describe "not work". Is it:
a) does not compile
b) does crash
c) unexpected results


Array indices. An array with N elements has indices from 0 to N-1. In other notation: [0..N)
You are inconsistent on your loops, which may lead to out-of-range errors.

You don't initialize sum. You add to sum within loop, but what was the initial value before first addition?

The mean is used to calculate deviation. What is the value of mean in yours?
The functions that you declare at the beginning of the programs take a single double as the first argument:
double deviation(const double , int);
double mean (const double , int);
The ones you define later on take an array of doubles as the first argument:
1
2
double mean(const double x[], int size)
double deviation (const double x[], int size)

You need to change the declaration to match the definition.
Its

double mean(const double x[], int size)
double deviation (const double x[], int size)

that will not compute properly in Microsoft Studio C++ express. I really just want it to be corrected so that i may see what i did wrong.
that will not compute properly

What does that mean? We can't read your mind! Be as specific as possible in telling us what the problem is. What behaviour are you seeing? How does it differ from the behaviour you want to see?

Help us to help you.
Topic archived. No new replies allowed.