Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите отсортировать двумерный массив (С++)

Ответить
Настройки темы
C/C++ - Помогите отсортировать двумерный массив (С++)

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Первая часть сделана! Помогите, пожалуйста, отсортировать.
#include <iostream.h>
#include <iomanip.h>
int main() {
int nrow, k, ncol;
cout<<"Vedite koli4estvo strok i stolbcov: ";
cin>>nrow>>ncol;
int i, j;
int **a=new int *[nrow];
for (i=0; i<nrow; i++) a[i]=new int [ncol];
cout<<"Vvedite elementi massiva: "<<endl;
for (i=0; i<nrow; i++)
for (j=0; j<ncol; j++) cin>>a[i][j];
for (i=0; i<nrow; i++) {
for (j=0; j<ncol;j++) cout<<setw(4)<<a[i][j]<<" ";
cout<<endl;}

int num=-1;
for (j=0; j<ncol; j++)
for (i=0; i<nrow; i++)
{
if (a[i][j]==0)
{ k=j+1;
cout<<"Nomer stolbca: "<<k<<endl; break;
}
}
if (num==-1) cout<<"Stolbcov net"<<endl;
return 0;
}

Отправлено: 17:24, 14-05-2012

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 995

Профиль | Сайт | Отправить PM | Цитировать


Luda-tin,
Цитата Luda-tin:
Характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Отсортировать строки матрицы по убыванию характеристик. »
очевидно надо получить еще один двумерный массив (сумма - строка) и отсортировать его любым удобным способом Алгоритмы_сортировки Можно начать с сортировки пузырьком.

P.S. Оформляйте пожалуйста код тегом <noparse> <code> </code> </noparse>. Для упрощения, выделите код и нажмите кнопку # (строка форматирования сообщения)

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 21:16, 14-05-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Цитата lxa85:
надо получить еще один двумерный массив (сумма - строка) »
проще, наверное, одной функцией получать сумму строк, а другой сортировать

сумма строк
Код: Выделить весь код
int* GetStrCharacters(int** arr, int row, int col)
{
    int* sums = new int[row];
    for (int i = 0; i < row; i++)
    {
        int curSum = 0;
        for (int j = 0; j < col; j++)
        {
            if((arr[i][j]<=0) && (arr[i][j]%2 ==0))
                curSum += arr[i][j];
        }
        sums[i] = curSum;
    }
    return sums;
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:15, 14-05-2012 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 995

Профиль | Сайт | Отправить PM | Цитировать


Цитата ferget:
проще, наверное, одной функцией получать сумму строк, а другой сортировать »
Наверно слишком поздно (час ночи), но разница для меня ускользает.

Отправлено: 01:10, 15-05-2012 | #4


Аватара для Serj_Pi

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Так, нет?
Код: Выделить весь код
#include <iostream>
#include <iomanip>
#include <windows.h>

using namespace std;

int GetCharacters(int* arr, int num)
{
    int sum = 0;
    for (int i = 0; i < num; i++)
    {
        if((arr[i]<=0) && (arr[i]%2 ==0))
            sum += arr[i];
    }
    return sum;
}
int main() {
    SetConsoleOutputCP(1251);
    int nrow, k = 0, ncol;
    cout<<"Vedite koli4estvo strok i stolbcov: ";
    cin>>nrow>>ncol;
    int **a = new int *[nrow];
    for (int i = 0; i < nrow; i++) a[i] = new int [ncol];
    cout<<"Vvedite elementi massiva: "<<endl;
    for (int i = 0; i < nrow; i++)
        for (int j = 0; j < ncol; j++) cin>>a[i][j];
    for (int i = 0; i < nrow; i++) {
        for (int j = 0; j < ncol;j++){
            if (a[i][j] == 0 && k == 0) {
                k = j + 1;
            }
            cout<<setw(4)<<a[i][j]<<" ";
        }
        cout<<endl;
    }
    if (k) cout<<"Номер первого столбца содержащего 0: "<<k<<endl;
    else cout<<"Нет столбцов содержащих 0 :-("<<endl;
    int *t;
    for(int j = 0;j< nrow ; j++){
        for(int i = 0;i < nrow - j - 1;i++)
            if(GetCharacters(a[i],ncol) < GetCharacters(a[i + 1],ncol)){
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
    }
    cout<<"Отсортированный массив: "<<endl;
    for (int i = 0; i < nrow; i++) {
        for (int j = 0; j < ncol;j++)
            cout<<setw(4)<<a[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}

Отправлено: 08:57, 15-05-2012 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите отсортировать двумерный массив (С++)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - [решено] Помогите исправить (двумерный массив) на С++ Luda-tin Программирование и базы данных 2 13-05-2012 22:53
C/C++ - Двумерный массив feytan Программирование и базы данных 0 14-04-2011 00:58
C/C++ - Двумерный массив NAstyaT Программирование и базы данных 1 08-12-2010 00:38
C/C++ - [решено] Динамическая память под двумерный массив, где ошибка?) SeRgikON Программирование и базы данных 4 04-06-2010 18:31
HDD - Помогите собрать RAID массив advokcat Накопители (SSD, HDD, USB Flash) 15 12-03-2009 10:45




 
Переход