Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
altarnik
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 5
#1

Из матрицы сформироваать вектор по заданному правилу - C++

16.05.2017, 23:15. Просмотров 203. Ответов 4
Метки нет (Все метки)

Дана матрица A, состоящая из m строк и n столбцов. Получить массив X1,X2,...,Xn по правилу: Xj=1, если каждый элемент j-го столбца, кроме первого и последнего элементов, меньше полусуммы двух соседних элементов (предыдущего и последующего), иначе Xj=0.
Вроде как реализовал, но есть один косяк, работает ток на матрицы 3х3, а вот уже 4х4, работать не всегда будет. Например: если создать СТОЛБЕЦ из цифр 10,4,4,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
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUSSIAN");
    int n, m, i, j, x, a,usl;
 
    int **matrA;
    int *matrX;
    cout << "введите кол-во строк \n";
    cin >> m;
    if (m < 2) {
        cout << "Это однмерный массив а не матрица! ";
        
        system("pause");
        return 0;
    }
    cout << "введите кол-во столбцов \n";
    cin >> n;
    matrA = new int *[m];  //создание матрицы 
 
    matrX = new int[n];
    for (i = 0; i < m; i++)
    
    {
        matrA[i] = new int[n];
    }
 
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            cin >> matrA[i][j];
    if (n < 3)
    {
        cout << "Error ";
    system("pause");
    return 0; 
    }
 
    for (i = 0; i < m; i++)  //просто вывод матрицы 
    {
        for (j = 0; j < n; j++)
            cout << matrA[i][j] << " ";
 
        cout << endl;
    }
    
    for (j = 0; j < n; j++)
    {
        for (i = 1; i < m - 1; i++)
            if (matrA[i][j] < (matrA[i - 1][j] + matrA[i + 1][j]) / 2) matrX[j] = 1;
 
        if (matrX[j] != 1)matrX[j] = 0;
    }
    for (j = 0; j < n; j++)
    cout << matrX[j]<< " " ;
 
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2017, 23:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Из матрицы сформироваать вектор по заданному правилу (C++):

Сформировать вектор по заданному правилу - C++
Даны натуральное число n и действительные числа y1 y2…yn. Получить вектор Z (Z1, Z2…Zn), Компонента Zi равняется: yi, если 0 &lt; yi &lt;...

Составить функцию для построения вектора из элементов матрицы по заданному правилу и отсортировать элементы матрицы - C++
11. Задано матрицю А={aij} розмірності nn. Скласти функцію для побудови вектора B={bi} за наступним правилом: якщо aii0, то bi узяти...

Из матрицы получить вектор по правилу - C++
Из матрицы размером N×M получить вектор B, присвоим его k-му элементу значение 0, если все элементы k-го столбца матрицы нулевые, иначе 1....

Сформировать из матрицы вектор по правилу - C++
Помогите решить: дана матрица А(NxN), записанная в бинарный файл. Структура файла следующая: сначала записано значение N, а затем матрица...

Сформировать из матрицы вектор по правилу - C++
Дано матрицу размером MxN. Сформировать из этой матрицы вектор по правилу: первые N элементов вектора - это элементы матрицы первой строки,...

Дана матрица размером МхN. Сформировать из этой матрицы вектор по правилу - C++
Как решить эту программу с помощью указателей? Задача Дано матрицу размером МхN. Сформировать из этой матрицы вектор по правилу:...

4
Hitoku
Sample text
834 / 701 / 348
Регистрация: 28.10.2016
Сообщений: 2,299
Завершенные тесты: 3
17.05.2017, 05:09 #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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main()
{
    int n, m;
    cout << "m, n = "; cin >> m >> n;
    int** a = new int*[m];
    for (int i = 0; i < m; i++)
        a[i] = new int[n];
    int* x = new int[n];
 
    cout << "Matrix:" << endl;
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            a[i][j] = rand() % 101 - 50;
            cout << a[i][j] << "\t";
        }
        cout << endl;
    }
 
    cout << endl << "Array: ";
    for (int j = 0; j < n; j++) {
        bool b = true;
        for (int i = 1; i < m - 1; i++)
            if (a[i][j] > (double)(a[i - 1][j] + a[i + 1][j]) / 2)
                b = false;
        x[j] = b ? 1 : 0;
        cout << x[j] << " ";
    }
    cout << endl;
 
    for (int i = 0; i < m; i++)
        delete a[i];
    delete[] a;
    delete[] x;
    system("pause");
    return 0;
}
1
altarnik
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 5
17.05.2017, 23:56  [ТС] #3
К сожалению проблему это не решило , теперь он выводит нули при любых значениях.
P.S Но все равно спасибо)
0
Hitoku
Sample text
834 / 701 / 348
Регистрация: 28.10.2016
Сообщений: 2,299
Завершенные тесты: 3
18.05.2017, 00:21 #4
Ну так проверьте, может они по условию нули Потому что у меня всё работает как надо
0
altarnik
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 5
18.05.2017, 01:24  [ТС] #5
Да, спасибо еще раз, уже сам додумался, что не так))
0
18.05.2017, 01:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2017, 01:24
Привет! Вот еще темы с ответами:

Работа с многомерными массивами. Дана матрица размером М * N. Сформировать из этой матрицы вектор по правилу - C++
Дано матрицу размером М * N. Сформировать из этой матрицы вектор по правилу: первые N элементов вектора - это элементы матрицы первого...

Матрицы. Получить вектор X, равный P-й строке матрицы, и вектор Y, равный Q-му столбцу матрицы - C++
1. Дана матрица A (3 х 5). Получить вектор X, равный P-й строке матрицы, и вектор Y, равный Q-му столбцу матрицы. P и Q запросить у...

Сформировать матрицу по заданному правилу - C++
Здравствуйте! Подскажите пожалуйста где моя ошибка!? На грядках посажена капуста и морковь. Грядки расположены рядом и образуют...

Сформировать массив по заданному правилу - C++
Напишите программу, которая создает двухмерный массив и заполняет его по следующему принципу: пользователь вводит число (например, 3)...


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

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

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