نمایش نتایج 1 تا 7 از 7

نام تاپیک: راهنمایی در رابطه با ماتریس چند بعدی

  1. #1

    راهنمایی در رابطه با ماتریس چند بعدی

    سلام دوستان من در رابطه با ماتریس مشکلاتی دارم و می خوام در رابطه با اتفاقی که در کد میافته اطلاع بیشتری داشته باشم
    #include<iostream>
    #include<conio.h>
    using namespace std;
    void main{int a[50][50], b[50][50], i,j,m,n,c[50][50];
    cin>>m>>n;
    for(i=0;i<m;i++)
    for(j=0;j<n,j++)
    cin>>a[i][j];
    for(i=0;i<m;i++)
    for(j=0;j<n,j++)
    cin>>b[i][j];
    for(i=0;i<m;i++)
    for(j=0;j<n,j++)

    {
    c[i][j]=a[i][j]+b[i][j];
    cout<<c[i][j];
    }
    getch();return;
    در رابطه با حلقه های اول می دونم که کار جاگذاری اعداد ورودی رو داخل ارایه ها رو دارن
    اما نمی دونم به چه نحو مثلا از سه عدد ورودی من کدوم رو m و کدوم رو n می دونه؟
    یعنی به چه ترتیبی اعداد ورودی داخل ارایه قرار می گیرن؟
    و در اخر این بعد ها رو چطور با هم مقایسه می کنن؟( در اینجا جمع دارن می کنن)

    دقیقا می خوام اتفاقی که از ورودی تا خروجی رو می افته بدونم به چه نحوی هست

    و همچنین اگه بخوام دو ماتریس رو با هم ضرب کنم چه کار باید بکنم
    می دونم که بادی سه تا حلقه داشته باشم
    اما ممنون میشم در همین رابطه ( یعنی تعداد حلقه) و همچنین شرایط ضرب راهنماییم کنید؟

  2. #2
    کاربر دائمی آواتار moh_mov
    تاریخ عضویت
    دی 1388
    محل زندگی
    تهران
    سن
    33
    پست
    138

    نقل قول: راهنمایی در رابطه با ماتریس چند بعدی

    سلام...راستش سوالتون یک گنگه!
    همونطور که گفتید دو حلقه ی اول مربوط به دریافت خانه های ماتریس هست....
    خب m و n رو میگیرید از کاربر و مثلا کاربر 3 رو وارد می کنه...
    خوب هر حلقه می دونیم سه بار تکرار می شه....
    کاربر m رو وارد می کنه و enter می زنه و دوباره n رو وارد می کنه و enter می زنه....
    سپس i رو صفر می کنه و وارد حلقه ی اول میشه و j رو هم صفر میکنه و وارد حلقه دوم می شه...سپس خانه صفر صفر(عدد اول سطر و عدد دوم ستون است!) رو دریافت می کنه...دباره در همان حلقه دوم می مونه و j رو 1 می کنه ...سپس خانه صفر و یک رو مقدار میگیره......و همینطور هم خانه صفر و دو....سپس j به 2 می رسه و از حلقه ی دوم خارج میشه....بعدش دوباره می ره حلقهی اول و i رو 1 می کنه.....دوباره همان داستان بالا ادامه پیدا می کنه و خانه 1 و 0 --1و 1----1و 2 رو پر میکنه و دوباره میره تا i =2 رو اجرا کنه....و همین داستان تا یک ماتریس مربعی 3 در 3 بوجود میاد...
    در مورد مقایسه بعد ها منظورت رو نمی فهمم....
    تعداد حلقه ها در ضرب هم احتمالا به تعداد n ها و m ها وابسته است....در

  3. #3

    نقل قول: راهنمایی در رابطه با ماتریس چند بعدی

    من درست متوجه نشدم من می خوام تمام اتفاقاتی که در برنامه میافته رو بدونم یعن یاز لحظه وارد کردن داده ها تا اخرین مرحله یعنی خروجی

    مثلا می خوام بدونم که با ورود سه عدد به فرض 3و4و5 این اعداد به چه شکل وارد حلقه می شن و چجوری پیمایش و روشون پردازش میشه

    یعنی شما می گی زمانی که 3 رو میگیره این عدد 3 رو اندازه بعد اول یا ماتریس اول حساب می کنه نه فهرستش درسته؟

  4. #4

    نقل قول: راهنمایی در رابطه با ماتریس چند بعدی

    میشه یکی از دوستان راهنمایی کنه
    الان فرضا من 5 رو وارد کنم حلقه از صفر تا پنج تکرار میشه
    یعنی 5 عدد از یک تا 5 وارد حلقه میشه یا نه ؟
    به نظرم این برنامه بستگی به ورودیش می تونه ادامه پیدا کنه
    چون اگر مقدارعدد اول بالا باشه حلقه بیش از پیش تکرار میشه
    از دوستان می خوام در این رابطه راهنمایی کنن

  5. #5

    نقل قول: راهنمایی در رابطه با ماتریس چند بعدی

    تا حدی فهمیدم
    اما یه سوال کدوم از اعداد ورودی من m و کدوم یک n شناخته می شن
    یعنی می خوام بدونم بین 3 4 5 6 کدوم از این اعداد m و کدوم از این اعداد n هست
    ممنون میشم راهنمایی کنید

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1388
    محل زندگی
    خونه صفر حافظه(NULL)
    پست
    88

    نقل قول: راهنمایی در رابطه با ماتریس چند بعدی

    سلام هرکول جان
    سوالات در عین سادگی،یه کم هم گنگ هستن
    من یه چیزی میگم ببین چی میتونی ازش برداشت کنی
    اولین عددی که وارد میکنی m هست(یعنی همون تعداد سطرها توی هر دو آرایه)
    دومین عدد تعداد ستون ها هست که وقتی شما وارد می کنی همون n هست
    امیدوارم متوجه شده باشی گلم
    موفق باشی

  7. #7

    نقل قول: راهنمایی در رابطه با ماتریس چند بعدی

    خوب بالاخره جواب رو پیدا کردم
    می ذارم اینجا تا دوستان هم اگر نیاز داشتن بتونن ازش استفاده کنن
    #include<iostream.h>
    void main()
    {
    int a[3][3] , b[3][3] , c[3][3];

    int i , j , k;
    cout<<"Enter Matrix A";
    for( i = 0 ; i < 3 ; i++)
    for( j = 0 ; j < 3 ; j++)
    cin>>a[i][j];
    cout<<"Enter Matrix B";
    for( i = 0 ; i < 3 ; i++)
    for( j = 0 ; j < 3 ; j++)
    cin>>b[i][j];
    for( i = 0 ; i < 3 ; i++)
    for( j = 0 ; j < 3 ; j++)
    {
    c[i][j] = 0;
    for( k = 0 ;k < 3 ; k++)
    c[i][j] += a[i][k]*b[k][j];
    }
    cout<<"The resultant matrix is ";
    for( i = 0 ; i < 3 ; i++)
    {
    for( j = 0 ; j < 3 ; j++)
    cout<<c[i][j]<<" ";
    cout<<endl;
    }
    }
    اما توضیحات این کد برای کسانی که مثل من مشکل دارن
    ما سه تا ارایه دو بعدی داریم
    که دو تای اول رو با نام ماتریکس A,B مشخص کردیم که بهش اعداد می دیم
    و سومین ارایه که با نام ارایه C مشخص شده محل قرار گیری حاصل ضرب هست
    cout<<"Enter Matrix A";
    for( i = 0 ; i < 3 ; i++)
    for( j = 0 ; j < 3 ; j++)
    cin>>a[i][j];
    خوب در این قسمت ما از کاربر می خوایم که عدد وارد کنه تا خانه آرایه ها پر بشه
    به این صورت که حلقه ما سطر اول رو میگیره و پر می کنه بعد میره سراغ سطر دوم
    یعنی زمانی که I=0 هست J ستون های خودش رو پر میکنه
    اگر ورودی ما
    1
    2
    3
    باشه
    نوع قرار گیری اعداد در ارایه به این شکل میشه
    3 2 1
    هینطور حلقه ادامه پیدا می کنه تا به تعداد فضای ارایه جاگذاری انجام بشه و ماتریس اول ما شکل بگیره
      cout<<"Enter Matrix B";
    for( i = 0 ; i < 3 ; i++)
    for( j = 0 ; j < 3 ; j++)
    cin>>b[i][j];
    این هم ماتریس دوم رو تشکیل میده به همون شکل بالا

      for( i = 0 ; i < 3 ; i++)
    for( j = 0 ; j < 3 ; j++)
    {
    c[i][j] = 0;
    for( k = 0 ;k < 3 ; k++)
    c[i][j] += a[i][k]*b[k][j];
    }
    در این قسمت شک دارم ممکنه اشتباه داشته باشه اگر اشتباهی بود دوستان راهنمایی کنن تا هم من یاد بگیرم هم تصحیح شه
    یک حلقه تو در تو شکل میدیم و بهش میگیم که یک ارایه 3*3 تشکیل بده که فضا هاش خالی هستند
    در قسمت دو براکت که سویچ هم میشه گفت ماتریس (آرایه ) سوم برابر با صفر هست
    یک حلقه تشکیل میدیم که K رو در ماتریس قرار بده با دستورات داخل براکت اما نکته اصل ماجرا اینجاست
    ما اینجا میگیم که ماتریس a رو با سطر i ستون k در ماتریس b با سطر k در ستون j ضرب کنه و بریزه تو ماتریس C
    حالا اینجا چه اتفاقی می افته
    می دونیم که ضرب ماتریس سطر اول در ستون اول ماتریس دوم هست

    بنابراین سطر i با اندیس صفر و ستون k ( رو که بصورت حلقه بهش یک واحد یک واحد بهش اضافه میشه) رو در ماتریس دوم با سطر متغییر k و ستون j (که ثابت هست) ضرب کنه

    یعنی اینکه در ماتریس A سطر برای بار اول ثابت هست و فقط ستون ها متغییر هست
    و در ماتریس b سطر ها متغییر هست و ستون ثابت


     cout<<"The resultant matrix is ";
    for( i = 0 ; i < 3 ; i++)
    {
    for( j = 0 ; j < 3 ; j++)
    cout<<c[i][j]<<" ";
    cout<<endl;
    }
    و اخرین قسمت که دستور میده که این حلقه تو در تو شکل بگیره و اندیس ها تکون بخورن و با این کار بریزن تو ماتریس c

    اگر جایی ایراد داشت ممنون میشم دوستان راهنمایی کنن تا بتونم بیشتر یاد بگیرم و هم مطلب رو ویرایش کنم
    آخرین ویرایش به وسیله hercool : یک شنبه 22 فروردین 1389 در 12:10 عصر دلیل: عکس رو بیشتر کردم تا قابل فهم تر بشه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •