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

نام تاپیک: مشکل در برنامه ماتریس مربعی

  1. #1

    مشکل در برنامه ماتریس مربعی

    با سلام و خسته نباشید خدمت اساتید بنده چند تا راهنمایی داشتم (البته لازم به ذکر هست که نمیخوام مسائل را حل کنید) فقط یه مقدار راهنمایی کنید ممنون میشم چون میدونم خلاف قوانیین هست حل مسئله های دانشجویی.

    1-برنامه ای بنویسید که تعداد سطر یا ستون یک ماتریس مربعی را گرفته آنرا به شکل مارپیچی پر کند.

    این سوال هست بنده اصلا به این مبحث آشنایی ندارم از دوستان هر کس بتونه راهنمایی کنه یا بگه باید چکار کنم فقد در حد راهنمایی بقیشو میتونم انجام بدم با تشکر از دوستان و مدیریت محترم سایت.

  2. #2

    نقل قول: مشکل در برنامه ماتریس مربعی

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

  3. #3

    نقل قول: مشکل در برنامه ماتریس مربعی

    يا من اطلاعاتم كمه يا شما خوب توضيح ندادين.به صورت مار پيچ پر كنه يعني چي؟

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    Shiraz
    سن
    35
    پست
    56

    نقل قول: مشکل در برنامه ماتریس مربعی

    با سلام
    این راه حلی رو که الان میگم ، به نظرم عملی می رسه. اما واقعیتش اینه که همین الان که سوالتون رو دیدم به ذهنم رسید و توصیه می کنم اگه راه حل دیگه ای به ذهن خودتون رسید از اون استفاده کنید. اگه ابعاد ماتریس رو از کاربر بگیرید و ماتریس رو با توجه به اون بسازید ، برای پر کردن کافیه یک تابع بنویسید که بیرونی ترین لایه هر ماتریسی رو که بهش میدیم پر کنه . یعنی از اول سطر اول رو بعد ستون آخر و بعد سطر آخر و بعد ستون اول. که نوشتن این تابع فکر نکنم کار سختی باشه. حالا کافیه که هر بار که این تابع رو فراخوانی می کنیم ، یک نقطه شروع به اون بدهیم. مثلا اولین نقطه شروع برای تابع [0][0]a است و نقطه بعدی [1][1]a تا این که به المان وسط ماتریس برسیم که دیگه ماتریس کاملا پر شده.
    اگه توضیحاتم رو متوجه نشدید بگید تا یه جوره دیگه بگم.

  5. #5

    نقل قول: مشکل در برنامه ماتریس مربعی

    دوست عزیز با تشکر از شما اگه با یه مثال توضیح بدید ممنون میشم

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    Shiraz
    سن
    35
    پست
    56

    نقل قول: مشکل در برنامه ماتریس مربعی

    قسمت اصلیش اینه که همون تابع رو بنویسید ، بقیش دیگه راحته . تابع منظورم اینه که تابعی بنویسید که مثلا اعدادی رو که از کاربر می گیره ، به ترتیب بریزه داخل [0][0] , [1][0] , ... تا [9][0] و بعد [9][1] , [9][2] , ... تا [9][9] و بعد [8][9] , [7][9] و ... تا [0][9] , و آخر هم [0][8] , [0][7] , ... تا [0][1] . این مثال برای ماتریس 10 در 10 بود. اگه به اندیس ها دقت کنی ، خیلی راحت می تونی برنامشو بنویسی. اگه نوشتی در واقع مثل اینه که بیرونی ترین لایه یه ماتریس 10 در 10 رو پر کردی.
    امیدوارم مثالم روشن بوده باشه. اگه توی نوشتن تابعش هم مشکل داشتید بپرسید.

  7. #7

    نقل قول: مشکل در برنامه ماتریس مربعی

    نقل قول نوشته شده توسط قلندری مشاهده تاپیک
    دوست عزیز با تشکر از شما اگه با یه مثال توضیح بدید ممنون میشم
    سلام
    من این برنامه رو به روش خودم نوشتم
    البته در پاسکال


    uses crt;
    var
    x:array[1..100,1..100] of integer;
    i,j,k,n,t:integer;
    begin
    clrscr;
    write('Enter n :');readln(n);
    if n mod 2=0 then t:=n div 2 else t:=(n div 2)+1;
    k:=1;
    i:=1;
    while (i<=t) do
    begin
    for j:=i to n-i+1 do
    begin
    x[i,j]:=k;
    inc(k);
    end;
    dec(k);
    for j:=i to n-i+1 do
    begin
    x[j,n-i+1]:=k;
    inc(k);
    end;
    dec(k);
    for j:=n-i+1 downto i do
    begin
    x[n-i+1,j]:=k;
    inc(k);
    end;
    dec(k);
    for j:=n-i+1 downto i+1 do
    begin
    x[j,i]:=k;
    inc(k);
    end;
    inc(i);
    end;

    for i:=1 to n do
    begin
    for j:=1 to n do write(x[i,j]:5);
    writeln;
    end;

    readln;
    end.




    http://www.imani.tk

    javadimani86@gmail.com

  8. #8
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    Shiraz
    سن
    35
    پست
    56

    نقل قول: مشکل در برنامه ماتریس مربعی

    با سلام
    این کد رو همین الان نوشتم. با همون راهی که خودم گفتم نوشتمش. تابع spiral اون کار رو انجام می ده. فکر کنم به دردتون بخوره

    #include<iostream.h>
    #include<iomanip.h>
    void spiral ( int **a , int m , int row );
    void matprint(int **a , int row);
    void shift(int **a , int row , int s);
    void main ( ){

    int **a , i , j , m , row , x , s;

    cout<<"Please Enter The Number Of Row : "<<endl;
    cin>>row;

    a = new int*[row];
    for (int i = 0; i < row; i++)
    a[i] = new int[row];
    for( i = 0 ; i < row ; i++ ){
    for( j = 0 ; j < row ; j++ ){
    a[i][j] = 0;
    }
    }

    for ( i = 0 ; i <( row/2 ) ; i++ ){
    spiral ( a , i , row);
    }

    if ( row % 2 == 1 ){
    x = (row-1) / 2;
    cin>>a[x][x];
    }

    cout<<"\n\n\n";
    matprint(a,row);

    cout<<"Please Enter The Number Of Shift :"<<endl;
    cin>>s;

    shift(a,row,s);
    cout<<"\n\n\n";
    matprint(a,row);
    }

    void spiral ( int **a , int m , int row ){

    int x , y , i ;

    x = m;
    y = ( row - 1 ) - m;

    for ( i = m ; i <= y ; i++ ){
    cin>>a[x][i];
    }
    for ( i = m+1 ; i < y+1 ; i++ ){
    cin>>a[i][y];
    }
    for ( i = y-1 ; i >= m ; i-- ){
    cin>>a[y][i];
    }
    for ( i = y-1 ; i > m ; i-- ){
    cin>>a[i][x];
    }

    }

    void matprint(int **a , int row){
    int i , j;
    for ( i = 0 ; i < row ; i++ ){
    for ( j = 0 ; j < row ; j++ ){
    cout<<setiosflags(ios::right)<<a[i][j]<<setw(3);
    }
    cout<<"\n";
    }
    }
    void shift(int **a , int row , int s){
    int i , j , temp2 , **temp;
    temp = new int*[row];
    for (int i = 0; i < row; i++){
    temp[i] = new int[row];
    }

    for ( i = 0 ; i < row ; i++ ){
    for ( j = 0 ; j < row ; j++ ){
    temp[i][j] = a[i][j];
    }
    }
    s = s % row;
    temp2 = s;

    for( i = 0 ; i < row ; i++ ){
    temp2 %= row;
    for ( j = 0 ; j < row ; j++ ){
    a[j][temp2] = temp [j][i];
    }
    temp2++;
    }
    }


  9. #9

    نقل قول: مشکل در برنامه ماتریس مربعی

    راه حل جالبی بود ازت تشکر می کنم

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

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