14,734,709 members
1.00/5 (1 vote)
See more:
```Populate a one-dimensional array with the following grades in this order:

90, 61, 74, 42, 83, 51, 71, 83, 98, 87, 94, 68, 44, and 66.

Use a loop to call a method from main() that adds 15 points to all student grades that are a C or above.  A C is defined as a score of 70 or above.  Make this happen by passing the subscript value and not the entire array. The addition of the 15 points should happen in the method and be passed back to main.  Use a loop to show final values within the array.  The final array values should show the new adjusted grades.```

What I have tried:

```#include <iostream>
using namespace std;
void func(int& num)
{
if (num >= 70)
num += 15;
}
int main()
{
int arr[] = { 90, 61, 74, 42, 83, 51, 71, 83, 98, 87, 94, 68, 44, 66 };// array number
for (int i = 0; i < 14; i++)
{
func(arr[i]);
}
for (int i = 0; i < 14; i++)
{
cout << arr[i] << " ";
}
cout << endl;
return 0;
}```
Posted
Updated 11-Nov-20 7:57am
Joe Woodbury 10-Nov-20 18:25pm

Is the assumption that grades are capped at 100?
Japanese Relaxation 10-Nov-20 18:55pm

yes
Dave Kreskowiak 10-Nov-20 19:37pm

OK, so what code do you have to make sure the score doesn't go over 100?
Japanese Relaxation 10-Nov-20 19:53pm

yeah not over 100
jeron1 10-Nov-20 20:12pm

what happens when the starting score is 98?
Richard Andrew x64 10-Nov-20 20:48pm

It looks like your program is correct except for limiting the calculation to 100 or less. What did the teacher say is wrong with it?
Japanese Relaxation 10-Nov-20 21:12pm

passed location not the value that what he said

## Solution 2

I am not sure why you would be constrained like that but it appears that you must pass only the subscript which means the data must be globally accessible. As mentioned previously, the value fourteen should NOT be hard-coded. Here is one way you can deal with these things :

```#include <iostream>

const int ScoreCount = 14;
int Scores[ ScoreCount ] = { 90, 61, 74, 42, 83, 51, 71, 83, 98, 87, 94, 68, 44, 66 };

void func( int index )
{
if( Scores[ index ] >= 70 )
Scores[ index ] += 15;
}

int main()
{
for( int i = 0; i < ScoreCount; i++ )
{
func( i );
}

for( int i = 0; i < ScoreCount; i++ )
{
std::cout << i << " : " << Scores[ i ] << std::endl;
}
return 0;
}```
KarstenK 11-Nov-20 12:52pm

Not at all: it can be solved via pointers or ref syntax :-O
Rick York 11-Nov-20 18:09pm

I was interpreting the phrase "subscript value" differently. To me that meant the index into the array - the value of the subscript. If you interpret it mean the value at the index then it is considerably easier. Vague wording always annoys me.

## Solution 5

only add this, which assign the result to the input:
```for (int i = 0; i < 14; i++)
{
arr[i] = func(arr[i]);
}```
You better dont write fancy stuff which you cant explain to the teacher or in front of your class.

Tip visit some Learn C++ tutorial to learn the language and state of the art tools.
CPallini 11-Nov-20 15:49pm

5.

## Solution 1

You're using a hard coded 14 in your for loop. Not exactly "wrong", but will fail any time you change the size of the array. You should use the length of the array to limit the for loop.
Japanese Relaxation 10-Nov-20 21:13pm

Would you mind may you show me ?

## Solution 4

Yet another way to do that
```#include <iostream>
using namespace std;

int main()
{
int arr[] = { 90, 61, 74, 42, 83, 51, 71, 83, 98, 87, 94, 68, 44, 66 };

auto transform = [& arr](int index){ arr[index] += (arr[index] > 70 ? 15 : 0); };

for (size_t i=0; i<sizeof(arr)/sizeof(arr[0]); ++i)
transform(i);

for (auto a : arr)
cout << a << ", ";
cout << endl;

}```
KarstenK 11-Nov-20 12:53pm

This solution shouldnt be ONLY from someone who can "explain" it to his teacher ;-)
CPallini 11-Nov-20 15:48pm

Teachers badly need someone who encourages them to teach modern C++.
:-)