Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
1

Удалить строки и столбцы матрицы состоящие из отрицательных элементов

29.09.2018, 23:27. Показов 2303. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Задали вот такую задачу. Я понятия не имею что от меня требуется. Помогите пожалуйста

Вывести матрицу размерности m * n. Удалить ее строки и столбцы, состоящие из отрицательных элементов. Вывести входную и получить матрицы
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2018, 23:27
Ответы с готовыми решениями:

Для заданной матрицы найти столбцы, состоящие только из отрицательных элементов
Для заданной матрицы найти столбцы, состоящие только из отри-цательных элементов. Использовать...

Удалить из матрицы все столбцы, содержащие не менее 2 отрицательных элементов
Напишите пожалуйста программу на функциях : Удалить из матрицы А (3х4) все столбцы, содержащие не...

Удалить из матрицы все столбцы, в которых нет отрицательных элементов (Проверить)
Удалить из матрицы все столбцы, в которых нет отрицательных элементов int otr=0; j=0;...

Есть ли у матрицы столбцы состоящие из нулевых элементов
Дан массив В размерности n*m. Определить, есть ли у матрицы столбцы состоящие из нулевых элементов.

8
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
02.10.2018, 12:16  [ТС] 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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
#define n 6
#define m 6
int main() 
{
    srand(time(NULL));
    int mas[n][m];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            mas[i][j] = rand() % 70 -7;
            cout << mas[i][j] << " ";
        }
        cout << endl;
    }
 
    cout << "____________________" << "\n"<< endl;
 
    for (int i = 0; i < n; i++) 
    {
        for (int j = 0; j < m; j++) 
        {
 
            if (mas[i][j] > 0)
            {
                delete mas[i][j] ;
            cout << mas[i][j] << " " ;
            }
        }
        cout << endl;
    }
    
    system("pause");
    return 0;
 
}
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
02.10.2018, 12:29 3
DragonBorn88, здравстуйте. Я бы использовал динамические двумерные массивы, для этой задачи, это как самый простой вариант: сначала создавал бы исходную матрицу(у вас так в принципе и есть, только у вас статически), затем проходил по строкам и искал бы отрицательные элементы, когда находим, то создаём второй массив размерности (m-1)*(n-1) и в него переписывал все строки и столбцы кроме того где найден отрицательный элемент, ну и так далее.
А то как у вас сделано, можно делать сдвиг по строкам и столбца, а освободившиеся заполнять, к примеру 0.

Добавлено через 4 минуты
DragonBorn88, и нужно уточнить по поводу состоящие из отрицательных элементов, должна вся строка или столбец быть отрицательными или только 1 элемент?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
02.10.2018, 12:34 4
Цитата Сообщение от qwe123qwea Посмотреть сообщение
нужно уточнить по поводу состоящие из отрицательных элементов, должна вся строка или столбец быть отрицательными или только 1 элемент?
qwe123qwea, если строка состоит из отрицательных элементов, все элементы в ней отрицательные - что тут ещё уточнять ?
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
02.10.2018, 12:42 5
Yetty, тогда придётся массив ручками вбивать, либо диапазон менять, рандомно получить строку(столбец) из всех отрицательных элементов будет сложно в указанном диапазоне.
0
Yetty
02.10.2018, 13:00
  #6

Не по теме:

Цитата Сообщение от qwe123qwea Посмотреть сообщение
либо диапазон менять
менять ничего не нужно. диапазон не задан - устанавливайте такой, как считаете нужным. для этой задачи естественно
лучше задать диапазон, где больше отрицательных. но даже если строк и столбцов с отрицательными не будет - это тоже не противоречит условию. просто в этом случае нужно оставить только исходную матрицу и выдать примерно такое сообщение "В матрице A таких строк и столбцов нет".

0
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
02.10.2018, 13:43  [ТС] 7
Я думаю что не нужно чтобы целая строка была отрицательной. Я вот написал код. Но здесь нужно ручками прописывать что хочешь удалить, запустить это в цикл, что бы оно автоматически делалось у меня не получается. И еще если отрицательные числа больше чем в одной строчке, тогда тоже проблема, так-как моя программа может удалить только одну строчку.
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
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <ctime>
using namespace std;
void main()
{
    setlocale(LC_ALL, "ru");
    srand(time(NULL));
    float **a;
    int  n, h, l, i, j;
    cout << "Введите размер матрици: ";
    cin >> n;
    cout << endl;
    a = new float*[n];
    for (i = 0; i < n; i++)
    {
        a[i] = new float[n];
        for (j = 0; j < n; j++)
        {
            a[i][j] = rand() % 100 -7;
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
 
    cout << "Введите номер строки которую хотите удалить : ";
    cin >> h;
    cout << endl;
    cout << "Введите номер столбца который хотите удалить : ";
    cin >> l;
    cout << endl;
 
 
    for (i = 0; i < n; i++)
    {
        for (j = l - 1; j < n - 1; j++)
        {
            a[i][j] = a[i][j + 1];
        }
    }
 
    for (i = h - 1; i < n - 1; i++)
        a[i] = a[i + 1];
    cout << endl << endl;
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - 1; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    system("pause");
}
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
02.10.2018, 14:41 8
Цитата Сообщение от Yetty Посмотреть сообщение

Не по теме:


менять ничего не нужно. диапазон не задан - устанавливайте такой, как считаете нужным.

А говорите менять ничего не нужно))
0
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
04.10.2018, 15:52  [ТС] 9
Спасибо за код. Но как оказалось вся строка должна быть отрицательной.
Можете помочь с добавлением цикла, для удаления строки или столбца с отрицательными знаками
Вот я написал код, в котором матрица заполняется ручками.
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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
//функция выводит массив на экран
void printArray(int array[][4], const int row, const int column)
{
    cout << "\n\nPoluchennyj massiv\n";
 
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < column; j++)
            cout << setw(4) << array[i][j];
 
        cout << endl;
    }
}
 
int main()
{
    int h,l;
 
    const int row = 4, column = 4; //размеры массива
    int array[row][column];        //двумерный массив
 
    for (int i = 0; i < row; i++)   //строки массива
    {
        cout << "Vvodim " << i + 1 << " stroku\n"; //подсказка
 
        for (int j = 0; j < column; j++)   //столбцы массива
        {
            cout << "Vvedite celoe chislo: ";  //выводим подсказку
            cin >> array[i][j];                //запоминаем введенное значение
        }
    }
 
    printArray(array, row, column);   //печатаем полученный массив
 
    
    
    system("pause");
    return 0;
}
0
04.10.2018, 15:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2018, 15:52
Помогаю со студенческими работами здесь

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

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

Удалить строки матрицы, состоящие из одних нулей
3. Дана квадратная матрица A(nхn). Построить вектор b, где bi, i=1,…,n – максималь-ный элемент i-ой...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru