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

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

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

В парных строках матрицы заменить все отрицательные элементы на ноль - C++

17.09.2011, 16:02. Просмотров 655. Ответов 9
Метки нет (Все метки)

помогите пожалуйста с задачей на С++
строки 6 столбцов 4,
b [i] [j] = (sqrt (i)-sqrt (j)) / a [i] [j]
в парных строках матрицы заменить все отрицательные элементы на ноль
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2011, 16:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В парных строках матрицы заменить все отрицательные элементы на ноль (C++):

В четных строках матрицы заменить все отрицательные элементы на ноль - C++
в четных строках матрицы заменить все отрицательные элементы на ноль: исходный массив А 6 строк 4 столбцов преобразование массива А в...

Заменить все отрицательные элементы матрицы на ноль - C++
Из произвольной матрицы (3х4) составить новую матрицу ,где все отрицательные элементы будут равны 0. Не могу додуматься как написать...

В матрице упорядочить элементы нечетных столбцов по убыванию. Все отрицательные заменить на ноль - C++
Пожалуйста, помогите! Нужно в матрице в нечетных столбцах упорядочить элементы по убыванию. Все отрицательные элементы заменить на ноль. ...

Все отрицательные элементы матрицы заменить числом 1 - C++
Что делать не пойму, помогите пожалуйста. На самом начальном изучении мы, так что код самый начальный и простой. Учим только строки начали....

Найти строку, содержащую наибольший элемент матрицы и заменить все отрицательные элементы этой строки числом 0 - C++
Здравтсвуйте! помогите пжл решить задачу. Найти строку, содержащую наибольший элемент матрицы и заменить все отрицательные элементы...

Заменить все отрицательные элементы массива их квадратами и отсортировать все элементы по возрастанию - C++
Помогите пожалуйста заменить все отрицательные элементы массива их квадратами и отсортировать все элемнты по возрастанию. Программу я...

9
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.09.2011, 16:29 #2
vital260, что вы имеете виду, когда говорите о парных строках матрицы? Чётные?

Добавлено через 1 минуту
Или, типа, если a[i][j] < 0, тогда b[i][j] = 0?
0
vital260
0 / 0 / 0
Регистрация: 17.09.2011
Сообщений: 15
17.09.2011, 16:33  [ТС] #3
да чётные строки.
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.09.2011, 16:34 #4
vital260, а при адресации первым идёт строка или столбец?

a[строка][столбец]

или

a[столбец][строка]

?
0
vital260
0 / 0 / 0
Регистрация: 17.09.2011
Сообщений: 15
17.09.2011, 16:40  [ТС] #5
первая строка.
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.09.2011, 17:26 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от vital260 Посмотреть сообщение
помогите пожалуйста с задачей на С++
Если на C++, то так:

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
82
83
84
85
86
87
88
89
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> matrix;
 
    int rows, columns;
 
    #define addr( row_n, col_n ) ( (row_n * columns) + col_n )
 
    cout << "Enter matrix rows and columns count:\n";
    cin >> rows >> columns;
 
    cout << "Creating " << rows << "x" << columns << " matrix...\n";
 
    matrix.resize( rows * columns );
 
    for( int r = 0; r < rows; r++ )
    {
        for( int c = 0; c < columns; c++ )
        {
            cout << '[' << r << ", " << c << "] > ";
            cin >> matrix[ addr(r, c) ];
        }
 
        cout << "\n";
    }
 
    // вывод начальной матрицы -----------------------------------------------
    cout << "Original matrix:\n";
 
    int i = 0;
    for_each( matrix.begin(), matrix.end(),
             [&](int a)
             {
                 cout << setw(7) << a << ' ';
                 i++;
 
                 if( i == rows )
                 {
                    cout << '\n';
                    i = 0;
                 }
             }
             );
 
    // присваивание 0 каждому отрицательному элементу каждой чётной строки ---
    i = 0;
    for_each( matrix.begin(), matrix.end(),
             [&](int &a)
             {
                 if( i >= 0 && a < 0 )
                     a = 0;
 
                 i++;
 
                 if( i == rows )
                 {
                    cout << '\n';
                    i = -rows;
                 }
             }
             );
 
    // вывод конечной матрицы ------------------------------------------------
    cout << "Resulting matrix:\n";
 
    i = 0;
    for_each( matrix.begin(), matrix.end(),
             [&](int a)
             {
                 cout << setw(7) << a << ' ';
                 i++;
 
                 if( i == rows )
                 {
                    cout << '\n';
                    i = 0;
                 }
             }
             );
 
    return 0;
}
Добавлено через 3 минуты
Используются лямбда-выражения, нужен компилятор с поддержкой C++0x

Добавлено через 14 минут
Проверял на квадратных матрицах. С прямоугольными - ошибка, вот исправленный вариант:

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
82
83
84
85
86
87
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> matrix;
 
    int rows, columns;
 
    #define addr( row_n, col_n ) ( (row_n * columns) + col_n )
 
    cout << "Enter matrix rows and columns count:\n";
    cin >> rows >> columns;
 
    cout << "Creating " << rows << "x" << columns << " matrix...\n";
 
    matrix.resize( rows * columns );
 
    for( int r = 0; r < rows; r++ )
    {
        for( int c = 0; c < columns; c++ )
        {
            cout << '[' << r << ", " << c << "] > ";
            cin >> matrix[ addr(r, c) ];
        }
 
        cout << "\n";
    }
 
    // вывод начальной матрицы -----------------------------------------------
    cout << "Original matrix:\n";
 
    int i = 0;
    for_each( matrix.begin(), matrix.end(),
             [&](int a)
             {
                 cout << setw(7) << a << ' ';
                 i++;
 
                 if( i == columns )
                 {
                    cout << '\n';
                    i = 0;
                 }
             }
             );
 
    // присваивание 0 каждому отрицательному элементу каждой чётной строки ----
    i = 0;
    for_each( matrix.begin(), matrix.end(),
             [&](int &a)
             {
                 if( i >= 0 && a < 0 )
                     a = 0;
 
                 i++;
 
                 if( i == columns )
                    i = -columns;
             }
             );
 
    // вывод конечной матрицы -----------------------------------------------
    cout << "Resulting matrix:\n";
 
    i = 0;
    for_each( matrix.begin(), matrix.end(),
             [&](int a)
             {
                 cout << setw(7) << a << ' ';
 
                 i++;
 
                 if( i == columns )
                 {
                    cout << '\n';
                    i = 0;
                 }
             }
             );
 
    return 0;
}
При условии, что нумерация строк с нуля.
1
vital260
0 / 0 / 0
Регистрация: 17.09.2011
Сообщений: 15
17.09.2011, 19:36  [ТС] #7
спасибо большое.
а в какой среде была набрана програма?
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.09.2011, 19:46 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
vital260, Code::Blocks 10.05 с обновлённым mingw, чтобы получить gcc 4.5 с поддержкой C++0x. Сейчас попробую проще сделать, чтобы без алгоритмов и лямбд

Добавлено через 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
76
77
78
79
80
#include <iostream>
#include <iomanip>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> matrix;
 
    int rows, columns;
 
    #define addr( row_n, col_n ) ( (row_n * columns) + col_n )
 
    cout << "Enter matrix rows and columns count:\n";
    cin >> rows >> columns;
 
    cout << "Creating " << rows << "x" << columns << " matrix...\n";
 
    matrix.resize( rows * columns );
 
    for( int r = 0; r < rows; r++ )
    {
        for( int c = 0; c < columns; c++ )
        {
            cout << '[' << r << ", " << c << "] > ";
            cin >> matrix[ addr(r, c) ];
        }
 
        cout << "\n";
    }
 
    // вывод начальной матрицы -----------------------------------------------
    cout << "Original matrix:\n";
 
    int i = 0;
    for( vector<int>::iterator it = matrix.begin(); it != matrix.end(); it++ )
    {
         cout << setw(7) << *it << ' ';
         i++;
 
         if( i == columns )
         {
            cout << '\n';
            i = 0;
         }
     }
 
    // присваивание 0 каждому отрицательному элементу каждой чётной строки ----
    i = 0;
    for( vector<int>::iterator it = matrix.begin(); it != matrix.end(); it++ )
    {
        if( i >= 0 && *it < 0 )
         *it = 0;
 
        i++;
 
        if( i == columns )
            i = -columns;
    }
 
    // вывод конечной матрицы -----------------------------------------------
    cout << "Resulting matrix:\n";
 
    i = 0;
    for( vector<int>::iterator it = matrix.begin(); it != matrix.end(); it++ )
    {
        cout << setw(7) << *it << ' ';
 
        i++;
 
        if( i == columns )
        {
            cout << '\n';
            i = 0;
        }
    }
 
    return 0;
}
1
vital260
0 / 0 / 0
Регистрация: 17.09.2011
Сообщений: 15
17.09.2011, 19:59  [ТС] #9
спасибо ещё раз.
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.09.2011, 20:02 #10
vital260, если вам не критично в стиле C++, то matrix из вектора можно превратить в обычный массив, либо так же одномерный, либо уже двумерный... В общем, свобода для творчества. В случае с двумерным массивом - убирайте отрицательные элементы только если счётчик строк имеет чётное значение. Или, если вы это делаете в отдельном цикле, увеличивайте его сразу на два.
1
17.09.2011, 20:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2011, 20:02
Привет! Вот еще темы с ответами:

Все отрицательные элементы массива уменьшить в двое, а все нулевые элементы заменить на... - C++
Задан массив М, состоящий из К строк и N столбцов. Все отрицательные элементы уменьшить в двое, а все нулевые элементы заменить на – 0.1.

Отрицательные элементы массива заменить на их абсолютную величину и все нечётные элементы на корень - C++
Дан массив целых чисел. Каждый отрицательный элемент заменить на его абсолютную величину. Все элементы с нечётными номерами заменить на их...

В одномерном массиве все отрицательные элементы заменить нулями и упорядочить элементы массива по убыванию - C++
В одновимірному масиві всі від’ємні елементи замінити нулями і впорядкувати елементи масиву за спаданням.

В однородном массиве все отрицательные элементы увеличить на 2, а все положительные заменить на 1 - C++
помогите пожалуйста написать программу. В массиве все отрицательные элементы увеличить на 2, а все положительные заменить на 1


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

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

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