Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
yoghurt92
378 / 349 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
1

Характеристики столбцов целочисленной матрицы

24.05.2012, 19:34. Просмотров 824. Ответов 3
Метки нет (Все метки)

Характеристикой столбца целочисленной матрицы назовём сумму модулей его отрицательных нечётных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "stdafx.h"
#include <iostream.h>
#include<windows.h>
 
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
 
void main()
{
    int const n = 3;
    int mas[n][n];
    cout << Rus("Ââåäèòå ìàññèâ: ");
    cout << "\n";
 
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
        {
            cout << Rus("Ââåäèòå ýëåìåíò[") << i << ("][") << j << ("]: ");
            cin >> mas[i][j];
        }
 
        cout << "\n";
 
        int m[n];
        for(i = 0; i < n; i++)
        {
            m[i] = 0;
            for(int j = 1; j < n; j += 2)
            {
                if(mas[j][i] < 0)
                m[i] += abs(mas[j][i]);
 
            }
        }
 
        cout <<Rus("Ìàññèâ õàðàêòåðèñòèê: ");
        for(i = 0; i < n; i++)
            cout << m[i] << " ";
 
        cout << "\n";
 
        int t = 0, index;;
        for(int k = 0; k < n; k++)
        {
            for(int p = k + 1; p < n; p++)
            {
                if(m[k] > m[p])
                {
                    t = m[p];
                    m[p] = m[k];
                    index = k;
                    m[k] = t;
                }
            }
 
            cout << index << " ";
        }
 
        cout << "\n";
 
        cout << Rus("Ìàññèâ õàðàêòåðèñòèê ïî âîçðàñòàíèþ: ");
        for(k = 0; k < n; k++)
            cout << m[k] << " ";
 
        cout << "\n";
}
я застрял на получении индексов столбцов... не пойму что не так делаю... расположение их по возрастанию сделал, а индексы не могу получить, и пока даже не могу понять как потом менять столбцы в исходной матрицу... заранее благодарю)
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2012, 19:34
Ответы с готовыми решениями:

Среди столбцов заданной целочисленной матрицы, заполненной случайными числами, порядка n* n, найти столбец с элементами
что не так? Среди столбцов заданной целочисленной матрицы, заполненной случайными числами, порядка...

Найти седловую точку целочисленной матрицы с числом строк не более 12, числом столбцов не более 20 (ООП)
1. Найти седловую точку целочисленной матрицы с числом строк не более 12, числом столбцов не более...

Проверить, образуют ли характеристики столбцов строго убывающую последовательность.
Дана матрица размером n×m. Назовем характеристикой столбца сумму его положительных элементов....

В заданной целочисленной матрице поменять местами столбец с номером 1 и последний из столбцов
Помогите пожалуйста написать программу!!!!!!!! В заданной целочисленной матрице поменять...

В заданной целочисленной матрице поменять местами столбец с номером 1 и последний из столбцов
Помогите пожалуйста написать программу!!!!!!!! В заданной целочисленной матрице поменять...

3
softmob
1252 / 702 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
24.05.2012, 20:06 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <locale>
#include <iomanip>
using namespace std;
 
int main(void)
{
    setlocale(LC_ALL,"Russian");
    int n;
    cout << "Введите размер матрицы: ";
    cin >> n;
    int **v = new int*[n];
    for (int i = 0; i < n; ++i)
    {
        v[i] = new int[n];
    }
 
    cout << "Введите массив:" << endl;
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            cout << "Введите элемент[" << i+1 << "][" << j+1 << "]: ";
            cin >> v[j][i];
        }
    }
 
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            cout << setw(3) << v[j][i] << ' ';
        }
        cout << endl;
    }
 
    int *m = new int[n];
    for (int i = 0; i < n; ++i)
    {
        m[i] = 0;
        for (int j = 0; j < n; ++j)
        {
            if(v[i][j] < 0 && v[i][j] % 2)
                m[i] += abs(v[i][j]);
        }
    }
 
    cout << "Массив характеристик:" << endl;
    for(int i = 0; i < n; ++i)
        cout << setw(3) << m[i] << ' ';
    cout << endl;
 
    for (int i = 0; i < n - 1; ++i) 
    { 
        for (int j = 0; j < n - i - 1; ++j) 
        {  
            if (m[j] > m[j+1])
            {
                swap(m[j], m[j + 1]);
                swap(v[j], v[j + 1]);
            }
        }
    }
 
    cout << "Массив по возрастанию характеристик:" << endl;
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            cout << setw(3) << v[j][i] << ' ';
        }
        cout << endl;
    }
    return 0;
}
1
yoghurt92
378 / 349 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.05.2012, 20:30  [ТС] 3
я не могу понять что делает вот эта часть:
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < n - 1; ++i) 
    { 
        for (int j = 0; j < n - i - 1; ++j) 
        {  
            if (m[j] > m[j+1])
            {
                swap(m[j], m[j + 1]);
                swap(v[j], v[j + 1]);
            }
        }
    }
А именно swap...
0
softmob
1252 / 702 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
24.05.2012, 20:48 4
Функция swap(a, b) меняет местами значения переменных a и b.
C++
1
2
3
4
5
template <class T> 
void swap( T& a, T& b )
{
  T c(a); a=b; b=c;
}
можете заменить ток кусок кода на
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (int i = 0; i < n - 1; ++i) 
    { 
        for (int j = 0; j < n - i - 1; ++j) 
        {  
            if (m[j] > m[j+1])
            {
                int t1 = m[j];
                m[j + 1] = m[j];
                m[j] = t1;
                int *t2 = v[j];
                v[j + 1] = v[j];
                v[j] = t2;
            }
        }
    }
Добавлено через 4 минуты
Цитата Сообщение от yoghurt92 Посмотреть сообщение
я не могу понять что делает вот эта часть:
Переставляет столбцы заданной матрицы, в соответствии с ростом характеристик.
0
24.05.2012, 20:48
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2012, 20:48

В целочисленной матрице упорядочить элементы столбцов по количеству цифр, содержащихся в их записи
Дана целочисленная матрица размером n*m. Упорядочить элементы столбцов по количеству цифр,...

В заданной целочисленной прямоугольной матрице определить количество столбцов, содержащих хотя бы один нулевой элемент
c++ дана целочисленная прямоугольная матрица. вывести ее на экран и определить количество столбцов,...

Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, распол
Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.