# using bubble sort to sort a matrix by sum..

Printable View

Show 80 post(s) from this thread on one page
Page 2 of 2 First 12
• 12-22-2008
iMalc
Yup, didn't listen to a thing I said!

You're making changes that don't actually get you any closer to your goal, if anything they've taken you backwards. Now the sort isn't working for a totally different reason. You've got the for loops wrong. Here is an example of what should work:
Code:

```    for (x = 0; x < rows-1; x++)         for (y = x; y < rows-1; y++)```
Now I know you've gotten into the habbit of just commenting out stuff that you aren't using temporarily, and never deleting anything because you're never sure of yourself. However, you've got so much commented out junk that you're just making it harder for yourself. Start fresh by making a backup copy and then clearing out all the crap you don't need, and turn your warning level up to the max and delete every variable that is not used. You don't need holder2 or temp3 either, if you'd pay attention to what I told you earlier.
• 12-22-2008
Adak
In your "sorting the matrix question" thread, we fixed your program - the code is still there.
It worked, with the last version even working on non-square matrices. You said it worked, also.

So *why* are you posting this same program again?

Why not use the code I fixed for you?

If my code is too *beautiful* for you - wear sunglasses, dude! :p :p :)
• 12-22-2008
transgalactic2
Quote:

Originally Posted by iMalc
Yup, didn't listen to a thing I said!

You're making changes that don't actually get you any closer to your goal, if anything they've taken you backwards. Now the sort isn't working for a totally different reason. You've got the for loops wrong. Here is an example of what should work:
Code:

```    for (x = 0; x < rows-1; x++)         for (y = x; y < rows-1; y++)```
Now I know you've gotten into the habbit of just commenting out stuff that you aren't using temporarily, and never deleting anything because you're never sure of yourself. However, you've got so much commented out junk that you're just making it harder for yourself. Start fresh by making a backup copy and then clearing out all the crap you don't need, and turn your warning level up to the max and delete every variable that is not used. You don't need holder2 or temp3 either, if you'd pay attention to what I told you earlier.

why you are saying that this code is not working??

can you gives me one example for which the code is not working?

Code:

```#include <stdio.h> int main()  { //star         int i,j,k,temp;         int rows = 50;   int cols = 50;   int jndex,input; //        int sum2=0;  sum2 is never used   /* You can't make an array without telling it's size. rows and cols   have not been assigned a value, yet.   */   int matrix[50][50]; //        int matrix[rows][cols]; //        int sum[rows][cols];   int sum[50][50]; //        int temp1[rows][cols];   int temp1[50][50]; //        int transpose [cols][rows];   int transpose [50][50];         int index,kndex,tndex,gndex,lndex;   int rows_sum[50];   //int rows_sum[rows]; //rows could be ANY value, still. /* your program isn't designed for this   printf("enter rows and cols [1..50] ==> ");         scanf("%d %d",&rows,&cols); */ /* You can save yourself this code, just by making the array initialize to zero's, when you declare it: row_sum[4] = { 0 }; This only works when you first declare them, not at any later time */  printf("enter the size of a  matrix:");   scanf("%d %d",&rows,&cols);         for (index = 0; index < rows; index++)         {             rows_sum[index]=0;                 for (kndex = 0; kndex < cols; kndex++)                 {                         matrix[index][kndex] = 0;                         sum[index][kndex] = 0;                         temp1[index][kndex] = 0;                         transpose[index][kndex] = 0;                 }//end inner for         }//end outer for         printf("enter numbers in a row for a matrix:"); //stat input         for (index =0;index<rows; index++)         {                 for (kndex =0; kndex<cols; kndex++)                 {                         scanf("%d", &matrix[index][kndex]);                         transpose[kndex][index] = matrix[index][kndex];                 }         }         i = getchar();  //needed because of scanf()         //end input         //start power operation         //  rows sum         for (index = 0; index < rows; index++)         {                 for (kndex = 0; kndex < cols; kndex++){                         rows_sum[index]=rows_sum[index]+matrix[index][kndex];                 printf("%d ",matrix[index][kndex]);                 }                 printf("\n");         }       //  end rows sum   for(i = 0; i <rows - 1; i++)  {       for(j = i + 1; j <rows; j++)  {         if(rows_sum[i] >rows_sum[j])  {             temp = rows_sum[i];             rows_sum[i] = rows_sum[j];             rows_sum[j] = temp;             //change this line remove the brace             //now swap the rows elements, from row j to row i             for(k = 0; k <cols; k++)  {               temp = matrix[i][k];                                      //here is line 62               matrix[i][k] = matrix[j][k];               matrix[j][k] = temp;             }         }  //add this brace       }   }   //print the swapped matrix   for(i = 0; i < rows; i++)  {       putchar('\n');       for(j = 0; j < cols; j++)         printf(" %d", matrix[i][j]);   }   i = getchar();   return 0; }//end main```
• 12-22-2008
Adak
??I have no idea what you mean??

Are you saying that the program from your other matrix thread, that I fixed for you, is now *NOT* working, on some input?
• 12-22-2008
transgalactic2
i think its working
i tried it on many inputs

iMalc says its not working.
• 12-22-2008
Adak
Quote:

Originally Posted by transgalactic2
i think its working
i tried it on many inputs

iMalc says its not working.

IMalc says it's not working, because you posted up in another thread "it's not working".

It is working, and you can safely ignore iMalc *this one time* on the "working" part of the program. He just believed you when you said "it's not working" in the other thread, so it's got him confused. And so does the program, since you've kept in all the old obsolete notes, and still haven't learned to indent properly.

Look at the code I wrote when I fixed your program - isn't that nice? Isn't that a lot more readable? You will be able to find and correct a lot more bugs in your program, much faster, if you will use a good style of indentation in your coding.

This program uses a sort that I've never seen before. Standard for this situation would be a sort through the use of an index array. That seemed too advanced for you right now, so I thought of doing it this way - and it works fine. It is not the most efficient way to do this kind of sort, however.

With small to medium sized integer arrays, this sort is very fast. Only with large arrays of integers, or medium arrays of strings, does it begin to take too long, where "too long" is defined as the time I need to locate, and take a sip from, my coffee cup. :)

Please don't keep this thread going - the code problem has been fixed. Please don't start two or more threads on the same topic. It just confuses people. And again, I'll mention please clean up your program code.

If you ignore these basic standards on the forum, you'll get less and less good help.
• 12-22-2008
iMalc
Right before my post:
Quote:

i add the row swap par and it doesnt work
I took that to mean that you made some change, it wasn't working, so you posted the code again.
Then I mistook your problem for another one.
Yes your loops as you had them will work, but they could be made more optimal, using the loops I posted, assuming I got them right myself.

Try not to use two threads about the same piece of code next time, even if they appear to be seperate problems.
• 12-23-2008
transgalactic2
thanks
Show 80 post(s) from this thread on one page
Page 2 of 2 First 12