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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переставить элементы массива по правилу http://www.cyberforum.ru/cpp-beginners/thread300080.html
Помогите, пожалуйста, как решить эти 3 задачи, незнаю, как решать.Буду очень благодарен. Вот задание на одномерный массив Программа, которая: a. запрашивает необходимые данные в main, b. передает входные данные в соответствующую функцию, c. результат выводится из main. А вот сама задача. 1. Дан одномерный массив В, состоящий из 2n элементов. Переставить его элементы по следующему...
C++ Справка chm Как подключить справку в формате "chm" к проекту? Подскажите пожайлуста... http://www.cyberforum.ru/cpp-beginners/thread300075.html
Данные программы в файле C++
Вот помогите пожалуйста, есть программа, для нее нужно: выходные данные программы должны находиться в текстовому файле Input.txt, а результаты работы должны быть помещины в Оutput.txt; результаты работы этой функции должны быть запианые в текстовый файл Оutput.txt у функции main(); расчет дожен быть сделан в отдельной функции, в которой не выполняется считывание или запись данных у файл;...
C++ Call to undefined function 'strcpy_s'
Использую C++Builder® 2009 при использовании strcpy_s выдает ошибку File1.cpp(10): E2268 Call to undefined function 'strcpy_s' <string.h> подключен в чем проблема? спасибо
C++ Динамический масив http://www.cyberforum.ru/cpp-beginners/thread300068.html
Здравствуйте. Помогите разобраться как сделать это задание при помощи динамического массива ? Написать программу, определяющую для каждого из трех одномерных массивов: A(20),B(10) C(15), сколько раз в них встретились два подряд идущих нулевых элемента. Напишите функции : 1. Заполнения массива случайными числами в диапазоне от –50 до +50. 2. Вывода одномерного массива. 3. Определения...
C++ Оконные приложения на visual studio Помогите плз, завтра зачет, Оконные приложения на visual studio. windows application. 1.формы. Конвертер:преобразование расстояний из английской меры(дюйм фут ярд миля) в метрическую (мм см м км) 2.Массивы. Перестановка строк матрицы. 3.Файлы. Для текстового файла построить вектор числа знака в предложении с учетом и без учета пробелов. 4.Элементы управления. Из поля... подробнее

Показать сообщение отдельно
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
19.05.2011, 23:43     В каждой строке матрицы сменить знак максимального по модулю элемента на противоположный
Лень было думать, поэтому сделано "по-крестьянски"
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>
#include <algorithm>
#include <cmath>
#include <functional>
 
bool Comp(int i, int j)
    {
    return std::abs(i) < std::abs(j);
    }
 
struct Transform
    {
    Transform(int _m)
        : m(_m)
        {
        }
 
    void operator () (int * arr_i)
        {
        int * max = std::max_element(arr_i,arr_i + m, std::ptr_fun(Comp));
        *max = -*max;
        }
    int m;
    };
 
void func(int ** arr, int n, int m,bool var)
    {
    if(var == true)
        {
        // по строкам
        std::for_each(arr,arr + n,Transform(m));
        }
    else
        {
                // по столбцам
        for(int i = 0; i < m ; ++i)
            {
            int * max = &arr[0][i];
            for(int j = 0; j < n; ++j)
                {
                if(std::abs(arr[j][i]) > std::abs(*max))
                    max = &arr[j][i];
                }
            *max = -*max;
            }
        }
    }
 
int main()
    {
    setlocale(LC_ALL,"rus");
    int n,m;
    int ** arr;
 
    bool var;
    std::cout << "Столбцы или строки ?";
    std::cin >> var;
    std::cout << "Введите размеры матрицы";
    std::cin >> n >> m;
 
    arr = new int*[n];
    for(int i = 0; i < n ; ++i)
        arr[i] = new int[m];
 
    for(int i = 0; i < n ; ++i)
        for(int j = 0; j < m ; ++j)
            std::cin >> arr[i][j];
 
    func(arr,n,m,var);
 
    for(int i = 0; i < n ; ++i)
        {
        for(int j = 0 ; j < m ; ++j)
            std::cout << arr[i][j] << ' ';
        std::cout << std::endl;
        }
 
    for(int i = 0; i < n ; ++i )
        delete [] arr[i];
    delete [] arr;
    }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru