Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 20:45   #1
MrRifleman
Пользователь
 
Регистрация: 24.03.2012
Сообщений: 13
Вопрос Квадратная матрица

1) Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента. 2) Характеристикой строки целочисленной матрицы является сумма ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик. Заранее спасибо!

P.S первый пункт я сделал(ниже код), помогите со вторым, и если можно все два пункта в один код реализовать

Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
 
int main()
{
    setlocale(2, ".1251");
    srand(time(NULL));
    int **Matrix, count = 0;
    unsigned n, m;
    bool flag = true;
    std::cout << "Введите количество строк: ";
    std::cin >> n;
    std::cout << "Введите количество столбцов: ";
    std::cin >> m;
    Matrix = new int *[n];
    for (size_t i = 0; i < n; i++)
    {
        Matrix[i] = new int [m];
        for (size_t j = 0; j < m; j++)
            std::cout << std::setw(3) << (Matrix[i][j] = -10 + rand() % 20) << " ";
        std::cout << std::endl;
    }
 
    for (size_t i = 0; i < m; i++)
    {
        flag = true;
        for (size_t j = 0; j < n; j++)
        {
            if (Matrix[j][i] == 0)
                flag = false;
        }
        if (flag)
            count++;
    }

    std::cout << "В матрице " << count << " столбцов, не содержащих нулевого элемента";
    for (size_t i = 0; i < n; i++)
        delete [] Matrix[i];
    delete [] Matrix;
	system ("pause");
    return 0;
}
MrRifleman вне форума Ответить с цитированием
Старый 02.04.2012, 21:02   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Алгоритм такой: для каждой строки матрицы найдите ее характеристику и занесите в соответствующий элемент одномерного массива (arr[i] - характеристика i-й строки). Затем сортируйте строки следующим образом (на примере пузырьковой сортировки)
Код:
for (int i = 0; i < N - 1; ++i)
 for (int j = i + 1; j < N; ++j)
  if (arr[i] > arr[j])
   {
   поменять местами i-ю и j-ю строки
   поменять местами arr[i] и arr[j]
   }
По идее остальные действия элементарны.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
квадратная матрица рита соломонова Паскаль, Turbo Pascal, PascalABC.NET 2 12.03.2012 18:53
Квадратная матрица SVing Паскаль, Turbo Pascal, PascalABC.NET 7 13.12.2011 00:58
Квадратная матрица artem1 Паскаль, Turbo Pascal, PascalABC.NET 3 21.02.2011 15:52
квадратная матрица Di-em Общие вопросы C/C++ 6 09.12.2010 19:11