program that will calculate and print the sum and average (using an array). Did I code this correctly?

Jan 30, 2013 at 5:55pm
The assignment asked to modify a program that will calculate and print the sum and mean using an array. The program compiles and runs flawlessly. But did I use the array correctly? Im very new to coding just an FYI :)


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
// This program calculates the average of any number of numbers.
// Using the for structure
#include <iostream>
using namespace std;
#include <iostream>
 
int main()
{
   int n, count;
   float x, sum, avg;
 
   sum = 0;
   cout << "How many numbers?  ";
   cin >> n;
   int size= n;
   int array[size];
   for (count=1; count<=n; count++){
       cout << "Enter Number:  ";
         cin >> array[n];
        sum = sum + array[n];
   }  //end for
   cout << "The sum is " << sum << endl;
   avg = sum / n;
   cout << "The average is  " << avg << endl;
   system("pause");
   return 0;   //successful termination

 }//end main 
Last edited on Jan 30, 2013 at 5:55pm
Jan 30, 2013 at 6:26pm
1) You have included iostream twice.
2) You are using variable length arrays on line 16. This is unofficial extension an may not work on every compiler. It's fine for now, but when you know the right way to do this use it instead.
3) Use doubles instead of floats.
4) Your for statement should be:
for (count=0; count<n; count++)
Array indexes in C++ starts from 0! When ypu write int x[5] valid indexes will be x[0], x[1], x[2], x[3] and x[4].

EDIT:
5) Why you defined a size variable? Why didn't you use n as array size?
Last edited on Jan 30, 2013 at 6:35pm
Jan 30, 2013 at 6:38pm
for (count=0; count<n; count++)

If the counter starts at 0 when the computer prompts the user "How many numbers?" If I say I want to use 2 numbers, it will prompt for 3 since the counter is starting at 0 instead of 1.
Jan 30, 2013 at 6:41pm
it won't
Did you see that I have used count<n instead of count<=n?
so there will be 2 iteration: for n==0 and n==1;
Jan 30, 2013 at 6:46pm
closed account (18hRX9L8)
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
// you can change numberofitems to whatever you want in line 4
#include <iostream>

#define numberofitems 10

int main(void)
{
     int counter,average,sum=0,items[10];

     std::cout<<"This program gets a list of "<<numberofitems<<" integers and finds their average and sum."<<std::endl;
     
     for(counter=0;counter<numberofitems;counter++)
     {
          std::cout<<"Item #"<<counter+1<<":  ";
          std::cin>>items[counter];
          std::cin.ignore();
          sum+=items[counter];
     }

     average=sum/numberofitems;

     std::cout<<std::endl<<std::endl<<"Sum: "<<sum<<"."<<std::endl;
     std::cout<<"Average: "<<average<<".";
     std::cin.ignore();

     return(0);
}
Last edited on Jan 30, 2013 at 6:46pm
Jan 30, 2013 at 6:52pm
Although an array is used, here, it isn't actually useful. You could just as well have used a single integer instead.

In any case, each value is stored in the same element, array[n]
But since the array index ranges from 0 to n-1, the element actually used is outside the array and is invalid.


Last edited on Jan 30, 2013 at 6:53pm
Jan 30, 2013 at 6:53pm
I appreciate the code. usandfriends but the code i have is what i must modify. I was not to write new code but modify the one I had. Mii, I have made the adjustments and it works! Thank you
Jan 30, 2013 at 6:57pm
In my opinion, the best way to modify it, would be to ditch the array completely as there is no benefit in its being there.

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
#include <iostream>

using namespace std;

int main()
{
   int n, count;
   float sum, avg;

   sum = 0;
   cout << "How many numbers?  ";
   cin >> n;

   int a;
   for (count=1; count<=n; count++) {
        cout << "Enter Number:  ";
        cin >> a;
        sum = sum + a;
   }
   cout << "The sum is " << sum << endl;
   avg = sum / n;
   cout << "The average is  " << avg << endl;

   return 0;
 }


Alternatively, if this is an exercise in the use of arrays, use two stages. In the first, get the input and store it in the array. In the second stage, loop through all the array elements and find the total, before finally getting the average.
Last edited on Jan 30, 2013 at 7:03pm
Jan 30, 2013 at 7:38pm
closed account (18hRX9L8)
Wow, Chervil, I completely forgot that I wrote a program that finds the sum and average of a list without arrays. Nice thinking!

+1
Jan 31, 2013 at 3:52am
Lol, you guys are absolutley right. The original code was without an array, the assignment was to modify the program so that an array was used. Although it is useless, it was the point of the assignment. I prob should have let you guys know that before.
Jan 31, 2013 at 11:03am
Thanks for the clarification. Anyway, in my opinion, you can put the array to work by taking two passes through it, the first to get the user input and the second to get the sum. At least this will pick up any obvious errors, such as using the wrong index value etc.

I've used new and delete here as standard C++ doesn't allow the array size to be a variable (though some compilers have an extension to enable this).

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
#include <iostream>
using namespace std;

int main()
{
   int size;
   double sum = 0;
   double avg;

   cout << "How many numbers?  ";
   cin >> size;

   // dynamically allocate array
   int * array = new int[size];

   // first loop - get the data
   for (int count=0; count<size; count++)
   {
       cout << "Enter Number:  ";
       cin >> array[count];
   }

   // second loop - accumulate the total
   for (int count=0; count<size; count++)
        sum += array[count];

   cout << "The sum is " << sum << endl;
   avg = sum / size;

   cout << "The average is  " << avg << endl;

   // de-allocate the array
   delete [] array;

   return 0;
 }
Topic archived. No new replies allowed.