Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
380 / 351 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
1

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

24.05.2012, 19:34. Просмотров 902. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2012, 19:34
Ответы с готовыми решениями:

Выписать номера столбцов целочисленной матрицы, сумма чисел в которых больше 100
выписать номера столбцов целочисленной матрицы сумма чисел в которых больше 100 си

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

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

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

3
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
380 / 351 / 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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2012, 20:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

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