954,506 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Homework Help.

Hi everyone and thanks for looking to help me. I am working with a program involving arrays. I needed to write one that involves the use to
have the program take
about 10 numbers, list the minimum, the maximum, and the average.
Now the program that I have below runs fine which finds the average. But when I try to loop the program to find the minimum and maximum numbers it just repeats.
How do I loop in a loop to find the minimum and maximum nubers.
Please let me know. TY

#include 
using namespace std;


const int arraymax = 10;    

typedef int arraytype[arraymax];

 

float findaverage(arraytype numarray, int count);

void array2(arraytype numarray, int & count);


int main(void)
   {
   int array1;
   arraytype array3;
   float avg;

   array2(array3, array1);
   avg = findaverage(array3, array1);
   cout << endl << "The average is: " << avg << endl << endl;

   return 0;
   }

 
void array2(arraytype numarray, int & count)
   {
   int k;

   cout << "How many numbers would you like to enter? ";
   cin >> count;

   for (k = 0; k < count; k++)
      {
      cout << "Enter your numbers " << k << " ";
      cin >> numarray[k];
      }
   }

 
float findaverage(arraytype numarray, int count)
   {
   int k;
   float sum;

   sum = 0.0;
   for (k = 0; k < count; k++)
      sum=sum + numarray[k];

   if (count > 0)
      return sum / count;
   else
      return 0.0;
   }
jessiegirl
Newbie Poster
8 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 

Ah this is what you must do.

1. Write a flow chart first.
2. Try to do this without functions they will only confuse you.

iamthwee
Posting Expert
5,950 posts since Aug 2005
Reputation Points: 1,543
Solved Threads: 439
 

>>How do I loop in a loop to find the minimum and maximum nubers

Let the first element be the largest (or smallest) element in the array. If the array only has one element then that must be true. If the array has more than one element it may or may not be true so look at each element in the array after the first element. If that element is larger/smaller than the current largest/smallest, then let the current element be the largest/smallest. At the end of the loop the current largest/smallest is the answer.

Lerner
Nearly a Posting Maven
2,382 posts since Jul 2005
Reputation Points: 739
Solved Threads: 396
 
>>How do I loop in a loop to find the minimum and maximum nubers Let the first element be the largest (or smallest) element in the array. If the array only has one element then that must be true. If the array has more than one element it may or may not be true so look at each element in the array after the first element. If that element is larger/smaller than the current largest/smallest, then let the current element be the largest/smallest. At the end of the loop the current largest/smallest is the answer.



Okay with hours of work I came up with this.

//Jessica Moore
#include <iostream>
using namespace std;
 
void getStats( double * min, 
               double * max,
               double * average,
               int numsNum );
               
int main()
{
    double min, max, average;
    int nums;
    do ;
    {
        cout << "How many Number will you Enter? " << flush;
        cin >> nums;
    }
 {
  while (nums <0);
                                                                                
                                                                           
                                                                               
    getStats( &min, &max, &average, nums );                      
    cout <<"The Minimum is: " << min << endl
         <<"The Maximum is: " << max <<endl
         <<"The Average is: " << average <<endl;                                                               

    return 0;
}
void getStats( double * min, double * max, double * average, int numsNum )
{
int *myArray=new int[numsNum];
int minimum = myArray[0];
int maximum = myArray[0];
int sum = 0;
for (int i = 0; i < numsNum; i++)
{
                cout << "Enter you number[" << i << "]: ";
              cin >> myArray[numsNum];
for (int i = 0; i < numsNum; i++)
    if (myArray[numsNum] < minimum)
{
                    minimum = myArray[numsNum];       
                    *min = minimum;
              
for (int i =0; i < numsNum; i++)
    if (myArray[numsNum] > minimum)
{        
              maximum = myArray[numsNum];
              *max = maximum;
for (int i = 0; i < numsNum; i++) 
{
     sum = ((sum + myArray[numsNum])/numsNum);   
     *average = sum;  
}
} 
}
}
} 
 
}





I still have some errors and I can't seem to figure out the mistakes TY for all your help

jessiegirl
Newbie Poster
8 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 

>I still have some errors and I can't seem to figure out the mistakes TY for all your help
I refuse to read your code until you format it and put it in code tags.

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 
>I still have some errors and I can't seem to figure out the mistakes TY for all your help I refuse to read your code until you format it and put it in code tags.


And don't let us try to figure out what the errors are. Tell us. It's not our program.

WaltP
Posting Sage w/ dash of thyme
Moderator
10,506 posts since May 2006
Reputation Points: 3,348
Solved Threads: 944
 
do ;
    {
        cout << "How many Number will you Enter? " << flush;
        cin >> nums;
    }
{
  while (nums <0);

Your loop is really screwed up. I don't think you want that semicolon after do , and that opening brace before the while statement. Here's how do...while statements are supposed to look like:

do {
// do stuff here

} while (expression == true);


And by the way you've got 1 too many closing braces at the end of your program. Proper indentation would help you to see problems like that.

John A
Vampirical Lurker
Team Colleague
7,630 posts since Apr 2006
Reputation Points: 2,240
Solved Threads: 339
 

Here's what I think is a correct version of your function. Look at this version versus yours. Identify differences and explain why this version is more likely to work than yours. Adapt this version to your needs if need be. Note: I haven't compiled this version, so there may still be some errors.

I always use reference variables in preference to pointer variables if possible because the syntax is so much easier.

void getStats( double & min, double & max, double & average, int numsNum )
{
  int * myArray=new int[numsNum];
  int sum;

  for (int i = 0; i < numsNum; i++)
  {
     cout << "Enter you number[" << i << "]: ";
     cin >> myArray[i];
  }

  //set min to be first element entered in myArray
  min = myArray[0];

  //for each element in myArray after first element
  for (int i = 1; i < numsNum; i++)
 {
    if (myArray[i] < min)
        min = myArray[i];    
 }   
                    
 //set max to be first element of myArray
 max = myArray[0];

 //look at all elements in myArray after first element            
 for (int i = 1; i < numsNum; i++)
 {
    if (myArray[i] > max)        
       max = myArray[i];
 }

 //set sum to zero
 sum = 0;
 for (int i = 0; i < numsNum; i++) 
 {
     //add each value of myArray to sum;
     sum = sum + myArray[i];
 }

 //now calculate average
 average = sum/numsNum;

 delete [] myArr;
}
Lerner
Nearly a Posting Maven
2,382 posts since Jul 2005
Reputation Points: 739
Solved Threads: 396
 

pretty good if you compiled that in your head.

iamthwee
Posting Expert
5,950 posts since Aug 2005
Reputation Points: 1,543
Solved Threads: 439
 
Here's what I think is a correct version of your function. Look at this version versus yours.


I disagree on principal. She already has a function called findeaverage() so why would you want to make a do-all function? They are harder to debug and maintain. Take each piece you want to accomplish and make a function out of it. Returnone value from each with the return statement.

And change the name ofarray1. It's not an array. Call it cout.

WaltP
Posting Sage w/ dash of thyme
Moderator
10,506 posts since May 2006
Reputation Points: 3,348
Solved Threads: 944
 

In principle I agree with WaltP. Filling the array, finding the maximum value of the array, finding the minimum value of the array, and finding the average of the array should ideally be done with separate functions. However, for teaching purposes, to compare the function posted by the OP with ways to correct it using their logic seemed most appropriate. Now, if the OP has a working function that does everything desired, breaking it up into smaller functions that do one task per function is the better way to go.

Lerner
Nearly a Posting Maven
2,382 posts since Jul 2005
Reputation Points: 739
Solved Threads: 396
 
In principle I agree with WaltP. Filling the array, finding the maximum value of the array, finding the minimum value of the array, and finding the average of the array should ideally be done with separate functions.

:)However, for teaching purposes, to compare the function posted by the OP with ways to correct it using their logic seemed most appropriate.
True, except OP had no code for anything except average, and that was in a function. Therefore starting out with additional functions is a preferred way -- it starts the learning process in the right direction rather than attempting to modularize after the all-in-one function is written. Takes twice as much work, and no unlearning bad habits in the future.

WaltP
Posting Sage w/ dash of thyme
Moderator
10,506 posts since May 2006
Reputation Points: 3,348
Solved Threads: 944
 

You can just do this. It checks through all the elements in the array and finds out each check which is the smallest, biggest and average value of the array so far. At the end you have your results

#include <iostream>

using namespace std;

const int MAX = 10;

int main()
{
    int array[MAX] = {6,7,5,9,8,98,3,2,4,10};

    int min=1, max=1, avg=0, i=0;

    for (i=0; i<MAX; i++)
    {
        if (array[i] < array[min])
            min = i;

        if (array[i] > array[max])
            max = i;

        avg += array[i];
    }

    cout << "min: " << array[min] << endl;
    cout << "max: " << array[max] << endl;
    cout << "avg: " << avg/MAX << endl;

    return 0;
}
may4life
Junior Poster in Training
57 posts since Oct 2006
Reputation Points: 13
Solved Threads: 2
 
You can just do this. It checks through all the elements in the array and finds out each check which is the smallest, biggest and average value of the array so far. At the end you have your results


Your code doesn't work. It returns a minimum of 1 and 1 is not in the list you gave it. And if the list contains all negative numbers, your max will also be 1, which is also wrong.

Before doing someone's homework for them at least test your code.

WaltP
Posting Sage w/ dash of thyme
Moderator
10,506 posts since May 2006
Reputation Points: 3,348
Solved Threads: 944
 

works fine for me.. Must be some differences with your compiler

may4life
Junior Poster in Training
57 posts since Oct 2006
Reputation Points: 13
Solved Threads: 2
 

>Before doing someone's homework for them at least test your code.
It looks like it should work just fine. How did you test it?

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

With Visual C++.. all my code is tested and always works before i post it. These people are simply boycotting me for their own reasons.

By the way, if i want do to post homework it doesnt have to work... Then again, its best not to work.. It'll keep you people happy (god knows that'll be a miracle), and the people reading the code will have to work on it to make it a working program..

may4life
Junior Poster in Training
57 posts since Oct 2006
Reputation Points: 13
Solved Threads: 2
 
It'll keep you people happy (god knows that'll be a miracle)


I was born happy ;)

Relax May4life, Narue was agreeing with you. She was asking WaltP what was wrong with it. Just a little mis-communication Works fine with VS2005 Pro too.

Nick Evan
Not a Llama
Moderator
10,112 posts since Oct 2006
Reputation Points: 4,142
Solved Threads: 403
 

>With Visual C++.. all my code is tested and always works before i post it.
I was quoting WaltP. He claimed that it didn't work, yet I didn't see any problems and on multiple compilers it works as expected.

>These people are simply boycotting me for their own reasons.
"These people"? Have you been getting this in other threads as well? In this thread only one person claims that your code is broken.

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 
These people are simply boycotting me for their own reasons.


Hold it buddy, everyone makes mistakes, and the same must have happened by looking at your code.

~s.o.s~
Failure as a human
Administrator
11,938 posts since Jun 2006
Reputation Points: 3,281
Solved Threads: 734
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You