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

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

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

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

19.05.2011, 22:19. Просмотров 298. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста.как решать эту задачу.вообще что то не понимаю.помогите.плииииииииииззззззззз

Вот задание.

1. Программа, которая:
a. запрашивает, какую из приведенных в варианте задач следует выполнить,
b. запрашивает необходимые данные в main,
c. передает входные данные в соответствующую функцию,
d. результат выводится из main.

А вот сама задача.
1 В каждой строке (столбце) матрицы сменить знак максимального по модулю элемента на противоположный.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 22:19     В каждой строке матрицы сменить знак максимального по модулю элемента на противоположный
Посмотрите здесь:

Вычислить номер максимального по модулю элемента матрицы C++
C++ Найти минимальные элементы в каждой строке матрицы и номер максимального из них
C++ Вычислить и вывести на экран значение: Максимального элемента массива и в каждой строке
C++ В каждой строке матрицы найти максимальный элемент и заменить его на противоположный
Поиск минимального и максимального элемента в каждой строке (C++ Bulder, консоль) C++
C++ В каждой строке матрицы найти максимум и заменить его на противоположный элемент
Заменить максимальный по модулю элемент каждой строки матрицы на противоположный по знаку C++
Ввести массив A(n,m). В каждой строке массива удвоить элементы, расположенные до максимального элемента C++
C++ В каждой строке матрицы найти максимум и заменить его на противоположный элемент
C++ Перестановка в каждой строке матрицы максимального элемента и элемента главной диагонали
Вывести координаты максимального элемента в каждой строке. C++
C++ В каждой строке текста из файла сменить порядок символов на противоположный

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
19.05.2011, 23:43     В каждой строке матрицы сменить знак максимального по модулю элемента на противоположный #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
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;
    }
artem12
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 17
19.05.2011, 23:44  [ТС]     В каждой строке матрицы сменить знак максимального по модулю элемента на противоположный #3
Спасибо большое.Это точно правильно?
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
19.05.2011, 23:45     В каждой строке матрицы сменить знак максимального по модулю элемента на противоположный #4
Я особо не проверял, но вроде работает.
artem12
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 17
19.05.2011, 23:46  [ТС]     В каждой строке матрицы сменить знак максимального по модулю элемента на противоположный #5
Спасибо большое.Я очень вам благодарен!!!!!!
Yandex
Объявления
19.05.2011, 23:46     В каждой строке матрицы сменить знак максимального по модулю элемента на противоположный
Ответ Создать тему
Опции темы

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