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

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

Восстановить пароль Регистрация
 
ЕвгенийSinkevic
Сообщений: n/a
17.12.2013, 12:48     В каждом столбце прямоугольной матрицы заменить элементы меньше среднего арифмитического этого столбца нулевым значением #1
В каждом столбце прямоугольной матрицы заменить элементы меньше среднего арифмитического этого столбца нулевым значением. Матрицу нужно вводить с консоли. Сколько ни думал, не могу понять, как это сделать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 12:48     В каждом столбце прямоугольной матрицы заменить элементы меньше среднего арифмитического этого столбца нулевым значением
Посмотрите здесь:

Найти в каждом столбце матрицы G элементы, которые больше числа А и меньше числа С C++
Сформировать B, элементы которого Bj равны 1, если хотя бы один элемент j-го столбца матрицы A больше суммы элементов этого столбца... C++
C++ в каждом столбце прямоугольной матрицы обменять местами min и max элементы
Одномерный массив. Найти наименьший элемент, все нулевые элементы заменить значением этого элемента C++
Массивы (в каждом столбце заменить элементы, меньшие по модулю заданного числа на номер столбца) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
 Аватар для Ev_Hyper
1811 / 1632 / 435
Регистрация: 15.12.2013
Сообщений: 5,805
17.12.2013, 12:56     В каждом столбце прямоугольной матрицы заменить элементы меньше среднего арифмитического этого столбца нулевым значением #2
Цитата Сообщение от ЕвгенийSinkevic Посмотреть сообщение
Сколько ни думал, не могу понять, как это сделать.
Что именно сделать?
SatanaXIII
17.12.2013, 13:01
  #3

Не по теме:

Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Что именно сделать?
levfnm/

outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
17.12.2013, 13:05     В каждом столбце прямоугольной матрицы заменить элементы меньше среднего арифмитического этого столбца нулевым значением #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <algorithm>
#include <vector>
 
using namespace std;
 
int main()
{
    const int n = 10;
    int v[n][n];
    for (int i = 0; i < n; ++i)
        for (int j = 0, sum = std::accumulate(v[i], v[i] + n, 0); j < n; ++j)
            if (v[i][j] * n < sum) v[i][j] = 0;
 
    return 0;
}
P.S. это для строк.
P.P.S. если перевернуть массив на 90 и -90 градусов можно обойтись этим вариантом (:
bradobrei
Продам уран 238U
 Аватар для bradobrei
119 / 119 / 23
Регистрация: 22.01.2013
Сообщений: 298
17.12.2013, 13:07     В каждом столбце прямоугольной матрицы заменить элементы меньше среднего арифмитического этого столбца нулевым значением #5
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
#include <iostream>
#include <cstdlib>
using namespace std;
#define n 5
int main(){
    int mas[n][n],sr, sraref;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            //mas[i][j] = rand()% 100 + 1;
            //cout<<mas[i][j]<<" ";
                        cin >> mas[i][j];
        }
    cout<<endl;
    }
    for(int i = 0; i < n; i++){
        sr = 0;
        for(int j = 0; j < n; j++){
            sr += mas[j][i];
        }
        sraref = sr/n;
        for(int k = 0; k < n; k++){
            if(mas[k][i] < sraref)
                mas[k][i] = 0;
        }
    }
    cout<<endl<<"OUT:"<<endl;
        for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            cout<<mas[i][j]<<" ";
        }
    cout<<endl;
    }
return 0;
}
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
17.12.2013, 13:30     В каждом столбце прямоугольной матрицы заменить элементы меньше среднего арифмитического этого столбца нулевым значением #6
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
#include <iostream>
#include <sstream>
#include <iterator>
#include <algorithm>
#include <functional>
#include <string>
#include <vector>
 
using namespace std;
 
int main()
{
    const int n = 10;
    int v[n][n], sum[n] = {0};
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j, sum[j] += v[i][j]);
        
    std::transform(v[0], v[0] + n * n, v[0],
        [&v, n, &sum](const int &value) {
            int j = (&value - v[0]) % n;
            return sum[j] > value * n ? 0 : value;
        }
    );
            
    return 0;
}
Это для столбцов.
Yandex
Объявления
17.12.2013, 13:30     В каждом столбце прямоугольной матрицы заменить элементы меньше среднего арифмитического этого столбца нулевым значением
Ответ Создать тему
Опции темы

Текущее время: 14:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru