Hi, i'd like to ask for some help about a problem i got... So i got this code right now:
Code:

``````    const int rows = 5;
const int cols = 3;
int tocke = 0;

int tekmovalci[rows][cols]={{7, 6, 9},
{8, 7, 8},
{6, 9, 10},
{7, 7, 9},
{8, 8, 10}};

for(int r=0; r<rows; r++){
cout << r+1 << ". ";
for(int c=0; c<cols; c++){
cout << tekmovalci[r][c] << " ";
tocke += tekmovalci[r][c];
}
cout << tocke << endl;
tocke = 0;
}
``````

and the 'int tocke' represents the sum of all numbers in a row, and now i'd like to sort the output by the value of sum.

this is the current output:
1. 7 6 9 22
2. 8 7 8 23
3. 6 9 10 25
4. 7 7 9 23
5. 8 8 10 26

and i want it like this:
5. 8 8 10 26
3. 6 9 10 25
2. 8 7 8 23
4. 7 7 9 23
1. 7 6 9 22

One way to solve it is to keep track of the original row numbers and the sum for each row, then when the rows are sorted the program will remember the original row numbers. Expand the array by two columns to do that

``````int tekmovalci[rows][cols+2]={{7, 6, 9,0,22},
{8, 7, 8,1,23},
{6, 9, 10,2,25},
{7, 7, 9,3,23},
{8, 8, 10,4,26}};
``````

Next, sort the array by the last column (total). When you print it out use the next-to-last column as the row number instead of the loop counter.

Sorting would be a lot easier if you used a structure to contain all the values then have an array of structures.

thanks for the reply but i have to get the sum by summing the 3 numbers in a row, not by putting it in the array itself...

If you want the array sorted by the sum value of each line then you will have to put the sum values into the array. Instead of hard-coding them like I did you can create a loop, calculate the sum and save the sum in the last column of each row. You could put the sums in another array, but that would make sorting even more difficult and complex.

Your program must do this in three stages
1. In a loop, sum each row and store the result in the array itself or in another array
2. Sort the array using any one of several sorting algorithms.
3. Print the array

You can't do all the above in the same loop, its not that simple.

OK, i change my code a bit according to how it sohuld be anyway... so i got a 2d array which is filled by random numbers...

``````const int rows = 5;
const int cols = 3;
int rowsum = 0;
int tekmovalci[rows][cols];

srand ( time(NULL) );

for (int r=0; r<rows; r++){
cout << r+1 << ". ";

for(int c=0; c<cols; c++){

int randomint;
randomint = rand() % 100;
tekmovalci[r][c]=randomint;
cout << tekmovalci[r][c] << " ";
rowsum += tekmovalci[r][c];

}
cout << rowsum << endl;
rowsum = 0;

}
``````

and i managed to sort only the sums for each row...heres my code for that:

``````int x = rows;
int mesta[x];
int sestevek = 0;
for(int a=0; a<x; a++){
for(int d=0; d<cols; d++){
mesta[a]= (sestevek += tekmovalci[a][d]);
}
//cout << mesta[a] << " ";
sestevek = 0;
}

for(int nStartIndex=0; nStartIndex < x; nStartIndex++){
int nSmallestIndex = nStartIndex;

for(int nCurrentIndex = nStartIndex + 1; nCurrentIndex < x; nCurrentIndex++){
if(mesta[nCurrentIndex] < mesta[nSmallestIndex])
nSmallestIndex = nCurrentIndex;
}

swap(mesta[nStartIndex], mesta[nSmallestIndex]);
cout << mesta[nStartIndex] << " " << endl;
sestevek = 0;
}
``````

Now is there a way i can just add those numbers from first array to these already sorted sums? or how can i do it as im really lost atm...
Any code samples would be appreciated... or a step by step guide :)