مرتب سازی ماتریس - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۳۷۳ نفر آنلاین
۱۹۶ عضو و ۱۷۷ مهمان در سایت حاضرند

مرتب سازی ماتریس

0 امتیاز

سلام.من یه کد زدم که المان های ماتریس رو در هر سطر صعودی مرتب کنه اما کار نمی کنه.اشکالش از کجاس؟؟از کامپایلر dev استفاده می کنم اینم کدم

#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
int main()
{
    int i,j,p,q,c1,c2,r1,r2,k,temp=1;
    char ans1,ans2,answer;
    int matrix1[100][100];
    int matrix2[100][100];
    int sum[100][100];
    int multi[100][100];
    int min[100][100];
    char func[80];
 cout<<"enter first matrix\n";
            cout<<"enter numbers of rows\n";
            cin>>r1;
            cout<<"enter numbers of column\n";
            cin>>c1;
     
    // getting first matrix
               for(i=0;i<r1  ; i++)
               {
               for(j=0;j<c1  ;j++)
               {
               cout<<"enter eleman   ";
               cin>>matrix1[i][j];
                 }           
                 }
                 cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~\n";
                  
               // getting second matrix
               cout<<"enter second matrix\n";
               cout<<"enter numbers of rows\n";
            cin>>r2;
            cout<<"enter numbers of column\n";
            cin>>c2;
     
               for(p=0;p<r2  ; p++)
               {
               for(q=0;q<c2  ;q++)
               {
               cout<<"enter eleman   ";
               cin>>matrix2[p][q];
                 }
                 }  
                 cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
for(i=c1,p=0;i>0,p<r1;i--,p++)
           {
              for(j=0,q=0;j<c1,q<r1;j++,q++)
              if(matrix1[i][j]>matrix1[i][j+1])
              {
                 k=matrix1[i][j];
                 matrix1[i][j]=matrix1[i][j+1];
                 matrix1[i][j+1]=k;
                            }
                            }
               cout<<"\nsorted matrix1 = ";             
             for(i=0;i<r1;i++)
             for(j=0;j<c1;j++)
                            {
                            cout<<matrix1[i][j]<<"   ";
                            if(j==r1-1)
                            cout<<"\n\n";
              for(i=c2,p=0;i>0,p<r2;i--,p++)
           {
              for(j=0,q=0;j<c2,q<r2;j++,q++)
              if(matrix2[i][j]>matrix2[i][j+1])
              {
                 k=matrix2[i][j];
                 matrix2[i][j]=matrix2[i][j+1];
                 matrix2[i][j+1]=k;
                                                 }
                            }
                 cout<<"\nsorted matrix2 = ";           
             for(i=0;i<r2;i++)
              for(j=0;j<c2;j++)
                   {           
              cout<<matrix2[i][j]<<"    ";
              if(j==r2-1)
              cout<<"\n\n";
                             
  }}
    getch ();
    return 0;
}

 

سوال شده دی 21, 1392  بوسیله ی Sher228 (امتیاز 167)   18 33 44
دوباره تگ گذاری شد بهمن 24, 1392 بوسیله ی BlueBlade
شما چرا این مدلی کد می نویسی ؟
صاف تر بنویس . آکولاد ها رو زیر همون جایی که باز کردی ببند .
خطوط کد رو زیر هم بنویس .
خطوط بعد از for -if رو اندازه یک Tab برو جلوتر نه بیشتر.
اگه از یک محیط دیگه مثل visual studio استفاده کنین ، میتونین کدها رو خط به خط اجرا کنی و راحت مشکل رو بر طرف کنی. و اینجوری for نوشتن گیج کننده است.

1 پاسخ

0 امتیاز
 
بهترین پاسخ

فکر کنم اینجوری ساده تر بشه نوشتش

#include <iostream>
using namespace std;
int main()
{
    int r ,c ;
    int m[100][100] ;
    cout<< "enter numbers of rows\n" ;
    cin >> r ;
    cout<<"enter numbers of column\n" ;
    cin >> c ;

    for ( int i = 0 ; i < r ; i++ )
    {
        for ( int j = 0 ; j < c ; j++ )
        {
            cin >> m[i][j] ;
        }
    }
    for ( int i = 0 ; i < r ; i++ )
    {
        for ( int j = 0 ; j < c ; j++ )
        {
			for ( int k = 0 ; k < c-1 ; k++ )
			{
				if ( m[i][k] > m[i][k+1] )
				{
					swap( m[i][k] , m[i][k+1] );
				}
			}
        }
	}
	cout << endl ;
	for ( int i = 0 ; i < r ; i++ )
    {
        for ( int j = 0 ; j < c ; j++ )
        {
            cout << m[i][j] << " " ;
        }
		cout << endl ;
    }
}

 

پاسخ داده شده دی 21, 1392 بوسیله ی Elyas74 (امتیاز 1,144)   6 14 27
انتخاب شد اسفند 5, 1392 بوسیله ی BlueBlade
ممنون .ببخشید که کدو اینجوری زدم.
می خواستم بدونم تو for که از k استفاده کردین,  چرا تا  c-1  می ره
چه جوری swap حذف کنم
توی این for چون از k+1 استفاده میشه اگه یکی از شمارنده کم نکنیم از ارایه میزنه بیرون ، البته ارایه بزرگه ولی بازم باید رعایت کنیم ، مثلا اگه تعداد سطر ها 3 تا باشه اگه این کار رو نکنیم ستون سوم رو با ستون چهارم که عدد نداره مقایسه میکنه
...