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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2011, 16:13   #1
Елена Елизарова
 
Регистрация: 15.11.2011
Сообщений: 4
Восклицание Матрица

Характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик (оформить в виде процедуры). - эту задачу я никак не могу решить, хочу попросить вас помочь мне! Заранее благодарю за ответы.
Елена Елизарова вне форума Ответить с цитированием
Старый 15.11.2011, 16:23   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Пример псевдокода процедуры:
1. Проходим по всем строкам матрицы Р и считаем их характеристики, заносим в отдельный массив М номер строки и значение.
2. сортируем массив М в соответствии со значениями.
3. создаем матрицу Н размеров Р и копируем в нее строки из Р в соответствии с положением номеров строк в М.
mMAg вне форума Ответить с цитированием
Старый 15.11.2011, 18:37   #3
Айрин
Новичок
Джуниор
 
Регистрация: 15.11.2011
Сообщений: 1
По умолчанию

Примерно так. Собственно по совету mMAg. Просто и без функций

Код:
#include <vcl.h>
#include <conio>
#include <stdio.h>
#include <iostream.h>
#include <time>

int main(){
    const int m = 10, n = 10;
    int mas[m][n] = {0}, newMas[m][n] = {0}, car[2][m] = {0};
    int i,j,x;

    srand (time(NULL));

    for (i=0; i<m; i++){
        for (j=0; j<n; j++){
            mas[i][j] = rand() % 20 - 10;
            cout << mas[i][j] << '\t';
        }
        cout << endl;
    }
    cout << endl;

    for (i=0; i<m; i++){
        int sum = 0;
        for (j=0; j<n; j++){
            if (mas[i][j]<0 && mas[i][j]%2==0)
                sum += mas[i][j];
        }
        car[0][i] = sum;
        car[1][i] = i;
    }

    for( i=0; i < m; i++) {
        for( j = m-1; j > i; j-- ) {
            if ( car[0][j-1] < car[0][j] ) {
                x=car[0][j-1]; car[0][j-1]=car[0][j]; car[0][j]=x;
                x=car[1][j-1]; car[1][j-1]=car[1][j]; car[1][j]=x;
            }
        }
    }

    for (i=0; i<m; i++){
        x = car[1][i];
        for (j=0; j<n; j++){
            newMas[i][j] = mas[x][j];
        }
    }

    for (i=0; i<m; i++){
        for (j=0; j<n; j++){
            cout << newMas[i][j] << '\t';
        }
        cout << endl;
    }
    cout << endl;

    getch();
    return 0;
}
Айрин вне форума Ответить с цитированием
Старый 18.12.2011, 14:49   #4
Елена Елизарова
 
Регистрация: 15.11.2011
Сообщений: 4
По умолчанию

помогите разобраться с этой процедурой! неправильно находит седловые точки матрицы. Выдает элемент матрицы который меньше одновременно и в строке и в столбце. Где поправить?
var
max,min,i,j:integer;
begin
for i:=1 to n do
begin
min:=1;
for j:=1 to N do
if a[i,j]<a[i,min] then min := j;
max := 1;
for k:=1 to n do
if a[k,min]<a[max,min] then max := k;
if max = i then writeln('tochka matr[',max,',',min,'] sedlovayaя');
end;
end;
Елена Елизарова вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
матрица Gerberka Помощь студентам 2 27.05.2010 19:30
Матрица в Си zblki4 Помощь студентам 0 26.05.2010 17:16
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11