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

نام تاپیک: اشکال در برنامه گراف

  1. #1

    Tick اشکال در برنامه گراف

    سلام
    این برنامه برای گرفتن نودهای یک گراف و یه سری کار روشه ولی وقتی اجرا میکنم 13 تا erorمیده همشم مال تابع راشاله . هر چی نگاه میکنم مشکلشو نمیفهم. اگه کسی میتونه لطفا بگه چی کار کنم.
    ممنون


    #include <iostream.h>
    #define m 10

    /////////////////////////////////////////////////
    class graph {
    private:
    int neiber[m][m];
    int a[m][m];
    int n;
    int degrein[m];
    int degreout[m];
    int dist[m];
    int length[m][m];
    bool s[m];
    int min[m][m];
    int shortest[m*m];
    int poosha[m][m];
    public:
    graph(int v)
    {n=v;
    }
    void grapharay();
    int degreeout(int );
    int degreein(int v);
    int* findneiber(int );
    void shortestpath(int , int );
    int choose();
    void allength(int n);
    void perim(int v[10][10], int g);
    void sort(int*,int);

    void rashal();
    };
    ///////////////////////////////////////////////////////
    void graph ::grapharay()
    {//cout<<"enter the number of node:\n";
    // cin>>n;
    for(int i=0;i<n;i++)
    { for (int j=0;j<n;j++)
    {cout<<"if is the way from node "<<i<<"to node "<<j<<" enter 1 else enter 0\n";
    cin>>a[i][j];
    if(a[i][j]==0)length[i][j]=1000;
    else
    {cout<<"enter lenght:\n";
    cin>>length[i][j];}
    }
    }
    };
    //////////////////////////////////////////////////////
    int graph ::degreeout(int v)
    { for(int i=0;i<n;i++)
    degreout[v]+=a[v][i];
    return degreout[v];
    };
    ////////////////////////////////////////////////////
    int graph ::degreein(int v)
    { for(int j=0;j<n;j++)
    degrein[v]+=a[j][v];
    return degrein[v];
    };
    //////////////////////////////////////////////////////
    int* graph ::findneiber(int v)
    {int j=0;
    for(int i=0;i<n;i++)
    { if(a[v][i]==1)
    {neiber[v][j]=i;
    j++;
    }
    }
    return neiber[v];
    };
    //////////////////////////////////////////////////////
    int graph::choose()
    {int j=0;
    if(j<n)
    return j++;
    }
    ;
    ////////////////////////////////////////////////////
    void graph ::shortestpath(int n, int v)
    { for(int i=0;i<n;i++)
    {s[i]=false;
    dist[i]=length[v][i];
    }
    s[v]=true;
    dist[v]=0;

    for(i=0;i<n-2;i++)
    {int u=choose();
    s[u]=true;
    for(int w=0;w<n;w++)
    if(!s[w])
    if(dist[u]+length[u][w]<dist[w])
    dist[w]=dist[u]+length[u][w];
    }
    };
    /////////////////////////////////////////////////
    void graph ::allength(int n)
    {
    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    min[i][j]=length[i][j];
    for(int k=0;k<n;k++)
    for(i=0;i<n;i++)
    for(int j=0;j<n;j++)
    if((min[i][k]+min[k][j])<min[i][j])min[i][j]=min[i][k]+min[k][j];
    };
    ////////////////////////////////////////////////
    void graph ::perim(int v[10][10], int g)
    {
    int f[10][10]={0};
    int sm=100;
    int i=0;
    int j=0;
    int y=0;
    for(i=0;i<g;i++){
    for(j=0;j<i;j++)
    if((v[i][j]<sm) && (v[i][j]!=0)){
    f[i][j]=1;
    f[j][i]=1;
    y++;
    }
    }
    sm=100;
    for(int k=0;k<g;k++){
    if((v[i][k]<sm) && (v[i][k]!=0))
    sm=v[i][k];
    }
    };
    /////////////////////////////////////////////
    void graph ::rashal()
    {int poosha[n][n]={0};
    /////////////////////////
    for(int g=0;g<n;g++)
    for(int h=0;h<n;h++)
    poosha[g][h]=0;
    ///////////////////////////
    int yal=n-1;
    int d=0;
    int k=0;
    int *test;
    for(int i=0; i<n;i++)
    { for(int j=0;j<n;j++)
    {if(length[i][j]!=1000)
    {test=new int;
    test[k]=length[i][j];
    k++;}


    }

    }
    sort(test,k);
    if(test[k]<n-1)
    cout<<"derekht hamband nist\n";
    else{
    for(int m=0;m<yal;m++)
    {for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    if(test[d]==length[i][j] && poosha[i][j]=0)
    poosha[i][j]=1;}


    }
    ////chp arayeh derekht poosha;
    cout<<"arayeh derakhte poosha is:\n";
    for(int s=0;s<n;s++)
    cout<<" "<<s<<" ";
    for(int a=0;a<n;a++)
    {cout<<a<<" ";
    for(int b=0;b<n;b++)
    {cout<<poosha[a][b]<<" ";
    cout<<"\n";
    }
    }

    };
    ///////////////////////////////////////////////////
    void graph ::sort ( int *arr , int n )
    {
    int i , j ;
    int max , temp ;
    for ( i = n - 1 ; i > 0 ; i -- )
    {
    max = 0 ;
    for ( j = 1 ; j <= i ; j ++ )
    if ( arr[ max ] < arr[ j ] )
    max = j ;
    temp = arr[ i ] ;
    arr[ i ] = arr[ max ] ;
    arr[ max ] = temp ;
    }
    };
    /////////////////////////////////////////
    void main()
    {graph g(3);
    g.grapharay();
    cout<<"darageh voroodi 1:"<<g.degreeout(1)<<"\n";
    cout<<"darajeh khorooji 2"<<g.degreeout(2)<<"\n";
    cout<<g.findneiber(2);
    g.shortestpath(3,0);

    }


  2. #2
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372
    سلام
    من مشکل رو برطرف کردم یعنی برنامه الان کار میکنه امیدوارم جوابهای نهایی درست هم باشه




     

    #include <iostream.h>
    const int m=10;
    /////////////////////////////////////////////////
    class graph {
    private:
    int neiber[m][m];
    int a[m][m];
    int n;
    int degrein[m];
    int degreout[m];
    int dist[m];
    int length[m][m];
    bool s[m];
    int min[m][m];
    int shortest[m*m];
    int poosha[m][m];
    public:
    graph(int v)
    {n=v;
    }
    void grapharay();
    int degreeout(int );
    int degreein(int v);
    int* findneiber(int );
    void shortestpath(int , int );
    int choose();
    void allength(int n);
    void perim(int v[10][10], int g);
    void sort(int*,int);

    void rashal();
    };
    ///////////////////////////////////////////////////////
    void graph ::grapharay()
    {//cout<<"enter the number of node:\n";
    // cin>>n;
    for(int i=0;i<n;i++)
    { for (int j=0;j<n;j++)
    {cout<<"if is the way from node "<<i<<"to node "<<j<<" enter 1 else enter 0\n";
    cin>>a[i][j];
    if(a[i][j]==0)length[i][j]=1000;
    else
    {cout<<"enter lenght:\n";
    cin>>length[i][j];}
    }
    }
    };
    //////////////////////////////////////////////////////
    int graph ::degreeout(int v)
    { for(int i=0;i<n;i++)
    degreout[v]+=a[v][i];
    return degreout[v];
    };
    ////////////////////////////////////////////////////
    int graph ::degreein(int v)
    { for(int j=0;j<n;j++)
    degrein[v]+=a[j][v];
    return degrein[v];
    };
    //////////////////////////////////////////////////////
    int* graph ::findneiber(int v)
    {int j=0;
    for(int i=0;i<n;i++)
    { if(a[v][i]==1)
    {neiber[v][j]=i;
    j++;
    }
    }
    return neiber[v];
    };
    //////////////////////////////////////////////////////
    int graph::choose()
    {
    int j=0;
    if(j<n)
    return j++;
    }
    ;
    ////////////////////////////////////////////////////
    void graph ::shortestpath(int n, int v)
    {
    //*********
    int i; //////////int ro bala tarif kardam
    for(i=0;i<n;i++)
    {s[i]=false;
    dist[i]=length[v][i];
    }
    s[v]=true;
    dist[v]=0;
    for(i=0;i<n-2;i++)
    {int u=choose();
    s[u]=true;
    for(int w=0;w<n;w++)
    if(!s[w])
    if(dist[u]+length[u][w]<dist[w])
    dist[w]=dist[u]+length[u][w];
    }
    };
    /////////////////////////////////////////////////
    void graph ::allength(int n)
    {
    //********
    int i,j;
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    min[i][j]=length[i][j];
    for(int k=0;k<n;k++)
    for(i=0;i<n;i++)
    for(int j=0;j<n;j++)
    if((min[i][k]+min[k][j])<min[i][j])min[i][j]=min[i][k]+min[k][j];
    };
    ////////////////////////////////////////////////
    void graph ::perim(int v[10][10], int g)
    {
    int f[10][10]={0};
    int sm=100;
    int i=0;
    int j=0;
    int y=0;
    for(i=0;i<g;i++){
    for(j=0;j<i;j++)
    if((v[i][j]<sm) && (v[i][j]!=0)){
    f[i][j]=1;
    f[j][i]=1;
    y++;
    }
    }
    sm=100;
    for(int k=0;k<g;k++){
    if((v[i][k]<sm) && (v[i][k]!=0))
    sm=v[i][k];
    }
    };
    /////////////////////////////////////////////
    void graph ::rashal()
    {
    //**********
    /////{}
    //int poosha[n][n]=0;
    /////////////////////////
    for(int g=0;g<n;g++)
    for(int h=0;h<n;h++)
    poosha[g][h]=0;
    ///////////////////////////
    int yal=n-1;
    int d=0;
    int k=0;
    int *test;
    for(int i=0; i<n;i++)
    { for(int j=0;j<n;j++)
    {if(length[i][j]!=1000)
    {test=new int;
    test[k]=length[i][j];
    k++;}


    }

    }
    sort(test,k);
    if(test[k]<n-1)
    cout<<"derekht hamband nist\n";
    else{
    for(int m=0;m<yal;m++)
    {for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    if(test[d]==length[i][j] && poosha[i][j]==0) /////mosavi nazashte boodid
    poosha[i][j]=1;}


    }
    ////chp arayeh derekht poosha;
    cout<<"arayeh derakhte poosha is:\n";
    for(int s=0;s<n;s++)
    cout<<" "<<s<<" ";
    for(int a=0;a<n;a++)
    {cout<<a<<" ";
    for(int b=0;b<n;b++)
    {cout<<poosha[a][b]<<" ";
    cout<<"\n";
    }
    }
    };
    ///////////////////////////////////////////////////
    void graph ::sort ( int *arr , int n )
    {
    int i , j ;
    int max , temp ;
    for ( i = n - 1 ; i > 0 ; i -- )
    {
    max = 0 ;
    for ( j = 1 ; j <= i ; j ++ )
    if ( arr[ max ] < arr[ j ] )
    max = j ;
    temp = arr[ i ] ;
    arr[ i ] = arr[ max ] ;
    arr[ max ] = temp ;
    }
    };
    /////////////////////////////////////////
    void main()
    {graph g(3);
    g.grapharay();
    cout<<"darageh voroodi 1:"<<g.degreeout(1)<<"\n";
    cout<<"darajeh khorooji 2"<<g.degreeout(2)<<"\n";
    cout<<g.findneiber(2);
    g.shortestpath(3,0);
    }

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

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