Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Visual C++] Массивы


Автор: Age 15.3.2007, 15:03
1) В данной действительной квадратной матрице порядка N найти наибольший по модулю элемент. Получь квадратную матрицу порядка N-1 путем выбрасывания из исходной матрицы строки и столбца, на пересечении которых находится данный элемент.

2)Дана действительная квадратная матрица порядка N, все элементы которой различны. Найти наибольший элемент, среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на перечении этих диагоналей.

3)Дана действительная квадратная матрица порядка N. При помощи перестановок двух строк или столбцов добиться того, чтобы элемент с наименьшим значением располагался в левом нижнем углу.

4)Дана действительная квадратная матрица порядка N. Найти наибольшее из значений элементов, расположенных в защтрихованной части матрицы:
|\     /|       
|  \ /  |      
|____|
(заштрихована чать которая занимает больше места)

5)Даны дествительные числа A,количество которых=N^2. Получить квадратную матрицу порядка N, элементами которой являются числа A, расоложенные по схеме:
_________
|_________
_________|                   
|_________
_________|


Автор: apook 16.3.2007, 17:31
была не была скину писанину из , по крайней мере
на одно задание ответ есть(наверно)
Код

#include <fstream.h>
#include <iomanip.h>
#include <conio.h>

#define N 6
#define M 8

#define by_ROW 0
#define by_CLN 1


struct X
{
    int *elQ; 
    } ___[ 2 ];


void main()
{
int i, j, ii, jj, Mkix[ N ][ M ]={
    {  1,  5,  8,  6,  7,  9, 10, 52 },
    {  5,  5, 45, 16, 88, 68, 32,  5 },
    {  8,  1,  5, 61,  2, 44, 97,  5 },
    {  1, 36, 32, 18, 33, 10,  7, 97 },
    { 14,  8,  7, 12,  6,  0, 14, 97 },
    {  8,  7,  6, 52,  4,  5,  5, 52 }
    }, maxel, xelQ=0, c, st, **NMkix;

X *___ =new X[ 2*sizeof( X ) ];

// максимальный элемент
maxel=Mkix[ 0 ][ 0 ];
for( i=0; i<N; ++i )
    for( j=0; j<M; ++j )
        if( Mkix[ i ][ j ]>maxel )
            maxel=Mkix[ i ][ j ];

// сколько их
for( i=0; i<N; ++i )
    for( j=0; j<M; ++j )
        if( Mkix[ i ][ j ]==maxel )
            ++xelQ;

// всп-ые массивы для хр-я позиций м-элементов
___[ by_ROW ].elQ=new int[ xelQ ];
for( i=0; i<xelQ; ++i )
    ___[ by_ROW ].elQ[ i ]=-1;
    ___[ by_CLN ].elQ[ i ]=-1;

// обнаружим эти позиции...
for( i=0, c=0, st=0; i<N; ++i )
    for( j=0; j<M; ++j )
        if( Mkix[ i ][ j ]==maxel )
            for( c=0; c<xelQ; ++c )
                if( ___[ by_ROW ].elQ[ c ]==j )
                     break;
                else
                {   
                    ___[ by_ROW ].elQ[ st ]=j; // <--по рядам
                    ___[ by_CLN ].elQ[ st ]=i; // <--по столбцам
                    ++st;
                    break; 
                    }

// массив который будет в результате
NMkix=new int *[ N-xelQ ]; 
for( i-0; i<M-xelQ; ++i )
    NMkix[ i ]=new[ M-xelQ ];

// запулням миссив
for( i=0, ii=0; i<N; ++i, ++ii )
{
    st=0;

    for( c=0; c<xelQ; ++c )
        if( ___[ by_CLN ].elQ[ c ]==i )
        {
            st=-1;
            --ii;
            break;
            }
    if( st==-1 ) continue;

    for( j=0, jj=0, st=0; j<M; j++ )
    {
        for( c=0; c<xelQ; ++c )
            if( ___[ by_ROW ].elQ[ c ]==j )
            {
                st=-1;
                break;
                }
        if( st==-1 );
        else
        {
            NMkix[ ii ][ jj ]=Mkix[ i ][ j ];
            ++jj;
            }
        }
    }

cout << "\nОбработанный массив:\n" << setw( 3 );
for( i=0; i<ii; ++i )
{
    for( j=0; j<jj; ++j )
        cout << NMkix[ i ][ j ] << setw( 3 );
    cout << endl;
    }

for( i-0; i<N-xelQ; ++i )
    delete [] NMkix[ i ];
delete [] NMkix;

delete [] ___;

getch();
return;
}

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