//I have a problem with my program,
// the function rank to find rank of a matrix
//cannot return the result
//somebody help me to correct it!
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
class matrix
{
int n,m;
double A[6][6];
public:
//.....
friend int rank(matrix);
};
int rank(matrix B)
{
int i, j, r, c;
int rankmt=B.m;
i=0;
j=0;
while(i<B.m&&j<B.n)
{
if(B.A[i][j]==0)
{
r=i+1;
while(r<B.m&&B.A[r][j]==0)
r++;
if(r==B.m)
{i++; j++; continue;}
for(c=0; c<B.n; c++)
{
double temp= B.A[r][c];
B.A[r][c]=B.A[i][c];
B.A[i][c]=temp;
}
}
}
while(i<B.m&&j<B.n)
{
if(B.A[i][j]!=0)
{
r=i+1;
while(r<B.m&&B.A[r][j]!=0)
{
for(c=0;c<B.n;c++)
B.A[r][c]-=B.A[i][c]*B.A[r][j]/B.A[i][j];
r++;
if(r==B.m)
break;
}
}
i++;
j++;
continue;
}
for(i=0;i<B.m;i++)
for(j=0;j<B.n;j++)
if(B.A[i][j]!=0)
break;
else
if(j=B.n)
rankmt--;
return rankmt;
}
void main()
{
matrix m1;
//...
cout<<rankmt(m1);
}
hanttaha 0 Newbie Poster
Recommended Answers
Jump to PostThis is quite a complicated function. It is almost impossible to follow - you have multiple nested loops, one letter variable names, and NO comments!! Just because it is called "code" doesn't mean it has to look like an encrypted document! Every one of those nested loops could probably be …
Jump to PostJust a quick note on your code: you should use
#include <iostream> #include <cmath> #include <iomanip>
instead of
#include <iostream.h> #include <math.h> #include <iomanip.h>
These are the old, C-style way of doing it :o)
All 6 Replies
daviddoria 334 Posting Virtuoso Featured Poster
hanttaha 0 Newbie Poster
daviddoria 334 Posting Virtuoso Featured Poster
hanttaha 0 Newbie Poster
daviddoria 334 Posting Virtuoso Featured Poster
ravenous 266 Posting Pro in Training
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.