Hi
I am trying to write a function in a program that reads a 2d array withs 2 rows & determines the largest number & whehter that number is in row 0 or row 1.

For example:

Enter distinct integers for a 2d array with 2 rows and 5 columns.
3 1 5 2 4
8 6 9 7 0

The maximum is 9 in row 1 and column 2

How do I determine if the largest number (in this case '9') is in the 1st row or the 2nd & return that into main?

My coding so far works great at finding the maximum number of the 1st row but cant return the row its in into main.

``````#include <iostream>
#include <iomanip>

using namespace std;

// read values for a two-dimentional array
void read2d(int a[], int rowsize);

// display the values in a two-dimentional array
void display2d(const int a[], int rowsize);

// find the ma and min in 2d array a
void max(int a[], int rowsize, int& row, int& col);  //this is the function that isn't working

int main()
{
int table;
int rowIndex, colIndex;

cout << "Enter distinct integers for a 2d array with 2 rows and 5 columns." << endl; // don't modify
read2d(table, 2); // don't modify

display2d(table, 2); // don't modify

max(table, 2, rowIndex, colIndex);
// write code to locate the maximum in 2d array table

cout << "The maximum is " << table[rowIndex][colIndex] << " in row " << rowIndex << " and column " << colIndex << endl; // don't modify

return 0;
}

void read2d(int a[], int rowsize)
{
for (int i = 0; i < rowsize; i++)
for (int j = 0; j < 5; j++)
cin >> a[i][j];
}

void display2d(const int a[], int rowsize)
{
for(int i = 0; i < rowsize; i++)
{
for(int j = 0; j < 5; j++)
cout << setw(5) << a[i][j];
cout << endl;
}
cout << endl;

}

void max(int a[], int rowsize, int& row, int& col)
{

int temp= 0;
int max;
int j= 0;

for (j; j <= 1; j++)
{
for (int i = 0; i <= 5; i++)
{
if (a[j][i] >= temp) {
cout << a[j][i] << endl;
temp = a[j][i];
}
}
}
temp = max;
return a[j][max];
}``````

This is the function not doing what I want it to do; find the maximum & what row it is in.

``````void max(int a[], int rowsize, int& row, int& col)
{

int temp= 0;
int max;
int j= 0;

for (j; j <= 1; j++)
{
for (int i = 0; i <= 5; i++)
{
if (a[j][i] >= temp) {
cout << a[j][i] << endl;
temp = a[j][i];
}
}
}
temp = max;
return a[j][max];
}``````

## Recommended Answers

To find both row and column, start the function out by setting both values to 0, and temp to the value of whatever is in a. Then if the value in a[j] > temp (note: not >=) change the value of all three variables -- temp, row, and col.

## All 3 Replies

To find both row and column, start the function out by setting both values to 0, and temp to the value of whatever is in a. Then if the value in a[j] > temp (note: not >=) change the value of all three variables -- temp, row, and col.

Thanks it now returning in main but not the correct maximum or row or column.

This is what I have now but *urgh* still not working but should work. Any advice?

``````int max(int a[], int rowsize, int& row, int& col)
{

int temp= 0;
int max= 0;
int i = 0;
int j = 0;
row = 0;
col= 0;

for (j= 0; j > 2; j++)
{
for (i= 0; i >= 5; i++)
{
if ( a[j][i] > temp) {
cout << a[j][i] << endl;
temp = a[j][i];
row = a[j][i];
col = a[j][i];
}
cout << a[j][i] << endl;
}
}
temp = max;
return a[row][col];
}``````

You need to pay attention to detail more closely.

>>for (j= 0; j > 2; j++)

use the < operator, not the > operator.

>>for (i= 0; i >= 5; i++)
Same problem as above -- use < operator, not the >= operator.

>> row = a[j];
>> col = a[j];

No, No, No. You want to set row and col to the values of the loop counters i and j.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.20 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.