Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Задача про матрицу.


Автор: kuzzmi 11.6.2009, 20:09
Даны натуральное число  , целочисленная квадратная матрица порядка  . Найти номера строк:
а)    все элементы которых нули;
б)    элементы каждой из которых одинаковы;
в)    все элементы которых четны;



Написал это от безысходности:

Код

    int **a;
    int n,i,j=0,l,z=0,p=0;
    cin >> n;

    a=new int *[n];
    for( i=0; i<n; i++ )
    a[i]=new int[n];

    for ( i=0; i<n; i++ )
        for ( j=0; j<n; j++ )
            cin >> a[i][j];

    for ( i=0; i<n; i++ )
    {
        int d=0;
        for ( j=0; j<n; j++ )
        {
            if ( a[i][j]==0 )
                d++;
            if ( d==n )
            { 
                d=0;
                cout << j << "vse ravni 0";
            }
            for ( l=0; l<n; l++ )
            {
                if ( a[i][j]==a[i][l] )
                    z++;
                if ( z==n )
                {
                    z=0;
                    cout << j << "vse ravni odnomu 4islu";
                }
            }
            if ( a[i][j]%2==0 )
                p++;
            if ( p==n )
            { 
                p=0;
                cout << j << "vse 4etnie";
            }
        }

    } 


но оно выводит что-то типа:
"0vse ravni 01vse ravni 02vse ravni 0...0vse ravni odnomu 4islu1vse ravni odnomu 4islu2vse ravni odnomu 4islu..." и т.д.
В чем ошибка? 

Автор: Dmi3ev 11.6.2009, 21:18
Код

int main()
{
    int **a;
    int n;
    cout<<"Enter size"<<endl;
    cin>>n;

    a=new int*[n];
    for (int i=0; i<n; i++)
        a[i]=new int[n];

    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
        {
            cout<<"Enter next: "<<endl;
            cin>>a[i][j];
        }

    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
            cout<<a[i][j]<<"; ";
        cout<<endl;
    }

    for (int i=0; i<n; i++)
    {
        bool d=true;
        bool m=true;
        bool r=true;
        for (int j=0; j<n; j++)
        {

            if (a[i][j] && d)
                d=!d;
            if (a[i][j]%2 && m)
                m=!m;
            if (j<n-1 && a[i][j]!=a[i][j+1] && r)
                r=!r;
        }
        if (d)
            cout<<i<<" vse ravni 0"<<endl;
        if (m)
            cout<<i<<" vse chetnie"<<endl;
        if (r)
            cout<<i<<" vse odinakovie"<<endl;
    }
    system("pause");
    return 0;
}

подправил, а то тупанул

Автор: kuzzmi 11.6.2009, 21:35
Спасибо огромное!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)