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


Автор: WaxMuDb 28.5.2007, 17:37
Дана целочисленная прямоугольная матрица, определить количество столбцов не содержащих ни одного нулевого элемента.
Характеристикой строки назовем ее сумму положительных четных элементов. Переставляя строки матрицы, расположить их в соответствии с ростом характеристик.

Автор: Dov 29.5.2007, 10:47
Код
#include<stdio.h>

#define SIZE 5

int stolbec_bez_nuley(int matr[][SIZE], int col)
{
    int i;
    
    for(i = 0; i < SIZE; i++)
        if(matr[i][col] == 0)
            return 0;
            
    return 1;
}

int sum_elem(int matr[][SIZE], int row)
{
    int j;
    int sum = 0;
    
    for(j = 1; j < SIZE; j += 2)
        if(matr[row][j] > 0)
            sum += matr[row][j];
    
    return sum;        
}

void swap(int* a, int* b)
{
    int tmp;

    tmp = *a;
    *a  = *b;
    *b  = tmp; 
}

int main(int argc, char* argv[])

    srand((unsigned)time(NULL));
       
    int matrix[SIZE][SIZE];
    int i, j, k;
    int sum = 0;
    
    for(i = 0; i < SIZE; i++)
        for(j = 0; j < SIZE; j++)
            matrix[i][j] = rand() % 19 - 9; 
            
    for(i = 0; i < SIZE; i++)
        sum += stolbec_bez_nuley(matrix, i);        
    
    for(i = 0; i < SIZE; i++)
    {
        for(j = 0; j < SIZE; j++)
            printf("%4d", matrix[i][j]);
        puts("");    
    }    
    printf("\nstolbcov bez nuley: %d\n\n", sum);
    
    for(k = 0; k < SIZE; k++)
    {
        for(i = 0; i < SIZE - 1; i++)
        {
            if(sum_elem(matrix, i) > sum_elem(matrix, i + 1))
                for(j = 0; j < SIZE; j++)               
                   swap(&matrix[i][j], &matrix[i + 1][j]);
        }
    }
      
    for(i = 0; i < SIZE; i++)
    {
        for(j = 0; j < SIZE; j++)
            printf("%4d", matrix[i][j]);
        printf("   (%d)\n", sum_elem(matrix, i));         
    }
    
    puts("\nPress any key to quit...");
    getchar();    
        
    return 0;
}

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