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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ C++ или C#? Что учить первым? http://www.cyberforum.ru/cpp-beginners/thread352574.html
Привет всем! Не могу выбрать что учить первым. Хотелось бы выучить язык основательно, и что бы он стал основой для изучения других технологий. C++ говорят что трудный для новичков(знаю Pascal, PHP(немного)). C# легче намного, но потом перейти с него на тот же C++ не получится. Так ли это и что вы лично посоветуете. Плз писать тем кто уже сталкивался с таким вопросом. Не холиварить!!!
C++ Как передать в функцию строку и инициализировать ею структуру? #include <iostream> using namespace std; struct bar { char name; double ves; int kollors; }; void funk(bar& konf, char n , double v, int k); int main() http://www.cyberforum.ru/cpp-beginners/thread352569.html
C++ Работа с файлом
Доброго времени суток . Нужна помощь . Суть задания заключается в том , чтобы считать информацию из файла , записать ее в какую-то переменную , а потом уже только работать с этой переменной и подсчитать число вхождений в эту переменную сочетания "ab" . Записать инфу из файла в переменную вроде бы получилось , а вот вторая часть задания не получается (если бы нужно было искать вхождение ab в...
Code::Blocks+template ошибка C++
#ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED template<class T> class btree { public: btree():parent(0),left(0),right(0),data(0){}; ~btree(){}; btree*insert(btree*,T);
C++ Считывание числа из текстовика посимвольно http://www.cyberforum.ru/cpp-beginners/thread352550.html
в текстовом файле забито число(например 1368), нужно посимвольно его подсчитать и вывести на экран. цикл написал: for (i=strlen(text),i>0,i--) {if(text=='0')sum=sum=0*L ... if(text=='9')sum=sum=9*L
C++ Магический квадрат Опишу проблему, первая лаба по Си++, в прошлом году был просто Си, в Си немного понимаю, а теперь прога которую над сделать, ну не обязательно сделать просто подсказать с чего начать чтоли подробнее

Показать сообщение отдельно
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.09.2011, 17:26     В парных строках матрицы заменить все отрицательные элементы на ноль
Цитата Сообщение от 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;
}
При условии, что нумерация строк с нуля.
 
Текущее время: 05:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru