c++ pointer in void function

I am writing a program that takes in the amount of test scores the user chooses to enter and calculates the average and the amount of passing grades. I need to use the functions, double arrAvg(double* , int) and
void pass(double *, int, int &) to do this. I have the average part figured out but I do not understand how to do the part that calculates the amount of passing grades, I just get a long random number.

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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;

void pass(double *, int, int &);

double arrAvg(double* , int);

int main()
{

double *TestScores, total, average;
int num_scores, passing;
int *num;
int count;

cout << "Enter amount of tests: ";
cin >> num_scores;
TestScores = new double[num_scores];
cout << "Enter the test scores below.\n";
for (count = 0; count < num_scores; count++)
{
cout << "Test Score " << (count + 1) << ": ";
cin >> TestScores[count];

}

average = arrAvg(TestScores, num_scores);
cout << fixed << showpoint << setprecision(2);
cout << "The average: " << average << endl;
pass(TestScores, num_scores, passing);

delete [] TestScores;
TestScores = 0;


system ("pause");
return 0;
}

double arrAvg(double* scores, int num)

{
double total = 0,average;
int num;
for (int count = 0; count < num; count++)
{
total += scores[count];
}
average = total / num;
return average;
}

//here is the part I can't get right

void pass(double* scores, int num, int & passing) {
 
for(int count = 0; count < num; count++) {
 
if(*scores >=60)
 
{passing++;}
 
cout<<passing;
 
}
}
Last edited on
1
2
3
4
int passing;
// what is the value of passing now?
++passing;
// how about now? 

No, but thank you. It still outputs a crazy number, like it's not getting the information at all
I repeat:
Q: What is the value of an uninitialized variable?

A: Undefined. Whatever. Random. Crazy.

Adding to crazy is still crazy.

What value should the 'passing' have at line 58? Make it so.
What @kekiverto is saying is that passing is never initialized, so it gets some random number. Try changing it to int passing = 0;
something like this should work

1
2
3
4
5
6
7
8
void pass(double* scores, int num, int &passing) {

for(int count = 0; count < num; count++) {

    if(scores[count]>=60)
        passing++;
}
}


and like the other guys said, initialize passing to 0 and also delete out the "int num" in the arrAvg function as it does nothing. Finally, after you call the pass function you should be able to do cout << passing and it will output the number of passing grades. since passing is a reference and will hold its value. Also, make sure to indent your code properly, makes it easier to read.
Last edited on
Now I get it, thank you very much
Topic archived. No new replies allowed.