اطلاعیه

Collapse
No announcement yet.

ماتریس ترانهاده

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ماتریس ترانهاده

    سلام.من این کد رو نوشتم ولی متاسفانه باید از دو تابع واسه نمایش جوابهام استفاده کنم.آخه طبق چیزایی که تو دایتل خوندم وقتی یه ارایه رو به تابع میفرستی توی نمونه اولیه ی تابع باید اندیس دوم به بعد رو هم ذکر کنی.الان مشکل من اینه که ایا ترفندی هست که بشه فقط از یه تابع(یکی از همین دو تایی که نوشتم)واسه کدم استفاده کنم؟
    در ضمن اگه فایل اموزشی در مورد توابع و ارایه ها دارید که راحت تر از ذایتل توضیح داده باشه ممنون میشم بذارید واسه دانلود.
    با تشکر
    کد:
    #include <iostream>
    #include<time.h>
    #include<stdlib.h>
    #include <iomanip>
    const int rows = 3;
    const int column = 2;
    void print1(int[][column],int ,int );
    void print2(int[][rows], int , int );
    using namespace std;
    void main()
    {
    	srand(time(NULL));
    	int a[rows][column];
    	int b[column][rows];
    	int i, j;
    	for (i = 0; i < rows; i++)
    	{
    		for (j = 0; j < column; j++)
    			a[i][j] = 1 + rand() % 10;
    	}
    	print1(a,rows,column);
    
    	for (i = 0; i < rows; i++)
    	{
    		for (j = 0; j < column; j++)
    		{
    			b[j][i] = a[i][j];
    		}		
    	}
    	print2(b, column, rows);
    }
    void print1(int array[][column], int satr, int sotun)
    {
    	cout << "The First Martrix:\n";
    	for (int i = 0; i < satr; i++)
    	{
    		for (int j = 0; j < sotun; j++)
    			cout << setw(3) << array[i][j];
    		cout << endl;
    	}
    }
    void print2(int array[][rows], int satr, int sotun)
    {
    	cout << "\n\nThe Second Martrix:\n";
    	for (int i = 0; i < satr; i++)
    	{
    		for (int j = 0; j < sotun; j++)
    			cout << setw(3) << array[i][j];
    		cout << endl;
    	}
    }
    We Stand Up To The End

    #2
    پاسخ : ماتریس ترانهاده

    در زبان سی وقتی یه آرایه به تابع فرستاده میشه در واقع اشاره گری به ابتدای اون به تابع ارسال میشه و نه خود آرایه
    در نتیجه برای اینکه کامپایلر بفهمه با چه جور آرایه ای سروکار داره بایستی بهش بقول خودتون اندیسهای دوم ببعد حتما مشخص بشه تا کامپایلر بتونه اونو تجسم کنه!!! (عجب چیزی گفتم)
    در این مواقع چون اشاره گر ارسال شده هر کاری داخل تابع انجام بدی روی آرایه اصلی انجام میشه و اگه شما میخوای آرایه اصلی رو حفظ کنی بهتره آرایه دوم رو هم بصورت آرگومان به تابع بفرستی

    * توجه داشته باش که در مورد متغیر های معمولی (غیر آرایه) یه کپی از متغیر به تابع ارسال میشه و متغیر اصلی مصون میمونه از تغییرات شما

    دیدگاه


      #3
      پاسخ : ماتریس ترانهاده

      همه اینا درست ،حالا با این تفاسیر من میتونم کاری کنم که کدی که نوشتم فقط با یه تابع نتایج رو نشون بده؟
      We Stand Up To The End

      دیدگاه


        #4
        پاسخ : ماتریس ترانهاده

        سایت مکتوب خونه کلاس های برنامه نویسی c++ کیارش بازرگان جلسه 21 و 22 این قضیه رو کامل و مفصل توضیح داده
        ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

        امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

        دیدگاه


          #5
          پاسخ : ماتریس ترانهاده

          #include<iostream.h>
          #include<conio.h>
          pp(int *a)

          {
          cout<<a[0]<<" ";
          cout<<a[1]<<" ";
          cout<<a[2]<<" ";
          cout<<a[3]<<" ";

          }
          main()
          {
          int a[2][2]={{1,2},{3,4}};
          int b[2][2]={{5,6},{7,8}};

          clrscr();
          pp(&a[0][0]);
          cout<<"\n";
          pp(&b[0][0]);

          getch();
          }

          روش اصولیشو نمیدونم ولی این روش فک کنم جواب بده
          آرایه دو بعدی رو میفرستین به تابع اونجا با اشاره گر میخونین ولی چون اشاره گر یک بعدیه باید اندیس ها رو تبدیل کنید
          اندیس سطر ضربدر تعداد ستون بعلاوه اندیس ستون
          زندگی پر ز وجود است ولی ..
          ما چه را می خواهیم چه را می جوییم که لب چشمه ی امید اینچنین نا امیدانه به سرابی تلخ مینگریم...

          دیدگاه

          لطفا صبر کنید...
          X