Форум программистов, компьютерный форум CyberForum.ru

Включить массив B как новую строчку матрицы А с сохранением упорядоченности - C++

Восстановить пароль Регистрация
 
Pon4uk2142
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 5
27.03.2016, 14:27     Включить массив B как новую строчку матрицы А с сохранением упорядоченности #1
Задано массив А(N;N) и вектор B(N). Элементы 1 столбика массива А упорядоченные по убыванию. Включить массив B как новую строчку в массив А с сохранением упорядоченности по элементам первого столбика. N=5
Помогите, вообще не шарю как делать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2016, 14:27     Включить массив B как новую строчку матрицы А с сохранением упорядоченности
Посмотрите здесь:

Как заполнить целочисленный массив введя с клавиатуры строчку из чисел C++
C++ Массив: Получить новую матрицу следующим способом: умножением Min каждой строки первой матрицы на Max соответствующего столбца второй
Как в файле перейти на новую строчку? C++
Как отсортировать массив с сохранением исходного порядка? C++
Вставка нового элемента в упорядоченный массив (без нарушения упорядоченности) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lost17
168 / 35 / 13
Регистрация: 27.02.2016
Сообщений: 89
Завершенные тесты: 1
27.03.2016, 14:46     Включить массив B как новую строчку матрицы А с сохранением упорядоченности #2
Т.е. получив матрицу A(6;5) нужно заново упорядочить по убыванию первый столбец?
Pon4uk2142
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 5
27.03.2016, 19:24  [ТС]     Включить массив B как новую строчку матрицы А с сохранением упорядоченности #3
Да, так

Добавлено через 4 часа 28 минут
Вообще никак?
Lost17
168 / 35 / 13
Регистрация: 27.02.2016
Сообщений: 89
Завершенные тесты: 1
27.03.2016, 21:03     Включить массив B как новую строчку матрицы А с сохранением упорядоченности #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Например, вот так:
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
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
 
void ArrSort(int *a, int len = 5);
 
int main() 
{
    int arr[6][5], vec[5];
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
    cout << "Исходный массив: \n";
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            arr[i][j] = rand() % 9 + 1;
            cout << arr[i][j] << " ";
        }
        cout << "\n";
    }
    cout << "Исходный вектор: \n";
    for (int i = 0; i < 5; i++)
    {
        vec[i] = rand() % 9 + 1;
        cout << vec[i] << " ";
    }
    cout << "\n";
    ArrSort(&arr[0][0], 25);
    cout << "Отсортированный массив с добавленной строкой: \n";
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            cout << arr[i][j] << " ";
        }
        cout << "\n";
    }
    for (int i = 0; i < 5; i++)
    {
        arr[5][i] = vec[i];
        cout << arr[5][i] << " ";
    }
    ArrSort(&arr[0][0], 30);
    cout << "\n";
    cout << "Полученный массив: \n";
    for (int i = 0; i < 6; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            cout << arr[i][j] << " ";
        }
        cout << "\n";
    }
    return 0;
}
 
void ArrSort(int *a, int len)
{
    for (int i = 0; i < len - 5; i = i + 5) {
        for (int j = 0; j < len - i - 5; j = j + 5) {
            if (a[j] < a[j + 5]) {
                int b = a[j];
                a[j] = a[j + 5];
                a[j + 5] = b;
            }
        }
    }
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
27.03.2016, 21:44     Включить массив B как новую строчку матрицы А с сохранением упорядоченности #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
76
77
78
79
80
81
#include <iostream>
 
using std::cin;
using std::cout;
using std::endl;
 
int main()
{
    int N=5;
    //cout<<"N=";
    //cin>>N; 
    int M=8;
    //cout<<"M=";
    //cin>>M; 
    int** a=new int*[N+1];
    for(int i=0;i<N;i++)
        a[i]=new int[M];
    for (int i=0; i<N; i++)
        for(int j=0; j<M; j++)
        {
            a[i][j]=rand()%100;
            //cin>>a[i][j];
        }
    cout<<"matrix A before sorting\n";
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<M; j++)
            cout<<a[i][j]<<"\t"; 
        cout<<endl; 
    }
    for(int i=1;i<N;i++)
        for(int j=i;j>0;j--)
        {
            if(a[j-1][0]>a[j][0]) // Сортируем по значениям в 0 столбце
            {
                int* t=a[j];
                a[j]=a[j-1];
                a[j-1]=t;
            }
        }
    cout<<"matrix A after sorting\n";
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<M; j++)
            cout<<a[i][j]<<"\t"; 
        cout<<endl; 
    }
 
    int* b=new int[M];
    cout<<"vector b:\n";
    for(int j=0; j<M; j++)
    {
        b[j]=rand()%100;
        //cin>>b[j];
        cout<<b[j]<<"\t";
    }
    cout<<endl; 
    int i=0;
    for ( ; i<N; i++) // ищем куда вставить
        if(a[i][0]>b[0])
            break;
    for (int j=N; j>i; --j) // сдвигаем строки вниз
        a[j]=a[j-1];
    a[i]=b;  // место для b освободилось
 
    N++; // массив стал на 1 строку длиннее
 
    cout<<"matrix A after inserting\n";
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<M; j++)
            cout<<a[i][j]<<"\t"; 
        cout<<endl; 
    }
    for(int i=0;i<N;i++)
        delete[] a[i];
    delete[] a;
    // вектор b удалять не надо - он теперь часть a
    system ("pause");
    return 0;
}
Yandex
Объявления
27.03.2016, 21:44     Включить массив B как новую строчку матрицы А с сохранением упорядоченности
Ответ Создать тему
Опции темы

Текущее время: 00:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru