Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
EgorBIGHI
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 6
1

Все наибольшие элементы квадратной матрицы порядка 10 заменить на ноль

10.04.2019, 18:07. Просмотров 230. Ответов 12
Метки нет (Все метки)

Все наибольшие элементы квадратной матрицы порядка 10 заменить на ноль, подсчитать количество измененных элементов. Ввод элементов массива, вывод измененного массива и количество измененных элементов производить в главной функции, а все остальное в пользовательской
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2019, 18:07
Ответы с готовыми решениями:

В данной целочисленной квадратной матрице порядка N все элементы со значением Z заменить их квадратами
В данной целочисленной квадратной матрице порядка N все элементы со значением Z заменить их...

Все элементы с наибольшим значением в целочисленной квадратной матрице порядка 10 заменить нулями
Все элементы с наибольшим значением в целочисленной квадратной матрице порядка 10 заменить нулями.

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

В парных строках матрицы заменить все отрицательные элементы на ноль
помогите пожалуйста с задачей на С++ строки 6 столбцов 4, b = (sqrt (i)-sqrt (j)) / a в...

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

12
zayats80888
1752 / 979 / 419
Регистрация: 07.02.2019
Сообщений: 2,654
10.04.2019, 19:00 2
Цитата Сообщение от EgorBIGHI Посмотреть сообщение
все остальное в пользовательской
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const int size = 10;
const double eps = 1e-15;
 
int change_n_count(double matrix[size][size])
{
    double max = matrix[0][0];
    for (int i{}; i < size; ++i)
        for (int j{}; j < size; ++j)
        {
            if (matrix[i][j] > max)
                max = matrix[i][j];
        }
    int count{};
    for (int i{}; i < size; ++i)
        for (int j{}; j < size; ++j)
            if (std::abs(matrix[i][j] - max) < eps)
            {
                matrix[i][j] = 0;
                ++count;
            }
    return count;
}
0
Yetty
2805 / 1959 / 1283
Регистрация: 18.12.2017
Сообщений: 6,292
10.04.2019, 21:37 3
zayats80888, не усложняйте - избегайте сравнение double с применением малого числа там где это не нужно
Цитата Сообщение от zayats80888 Посмотреть сообщение
if (std::abs(matrix[i][j] - max) < eps)
элементы сравниваются с одним из них (максимальным). достаточно:
C++
1
if (matrix[i][j]==max)
0
Kuzia domovenok
2839 / 2426 / 621
Регистрация: 25.03.2012
Сообщений: 8,642
Записей в блоге: 1
Завершенные тесты: 1
10.04.2019, 21:58 4
Yetty, А почему бы и не сравнить через модуль?
0
10.04.2019, 21:58
Yetty
2805 / 1959 / 1283
Регистрация: 18.12.2017
Сообщений: 6,292
10.04.2019, 23:22 5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А почему бы и не сравнить через модуль?
в данном случае в этом нет никакого смысла: усложнение кода + подключение доп.библиотеки. через eps сравниваются, если числа double получены, скажем так разными способами и то не всегда.
0
Kuzia domovenok
2839 / 2426 / 621
Регистрация: 25.03.2012
Сообщений: 8,642
Записей в блоге: 1
Завершенные тесты: 1
10.04.2019, 23:39 6
Yetty, вот предположим, что из-за вашего совета у лид-программиста компании физический движок пойдёт в разнос.
Всякие физические симуляции - первое что приходит на ум, когда всяким околонулевым остаткам в переменных надо присваивать ноль.
0
Yetty
10.04.2019, 23:58
  #7

Не по теме:

Kuzia domovenok, сложно комментировать, что Вы предполагаете. например в массиве три числа:
0.800000000000000044408920985006
0.900000000000000022204460492503
0.200000000000000011102230246252
при сравнении с максимальным 0.900000000000000022204460492503 eps применять не нужно

а добавить строк, не влияющих на работу кода можно столько, сколько душа пожелает, тут я с Вами не спорю

0
Kuzia domovenok
2839 / 2426 / 621
Регистрация: 25.03.2012
Сообщений: 8,642
Записей в блоге: 1
Завершенные тесты: 1
12.04.2019, 00:55 8
например в массиве три числа:
0.900000000000000022204460492503
0.900000000000000011104460492503
0.200000000000000011102230246252
при сравнении с максимальным 0.900000000000000022204460492503
в матрице алгоритм заменит только первое число,
и далее в большинстве случаев будет заменять в любой матрице лишь одно число
хотя логично было бы, чтобы алгоритм замены максимумов работал со всеми числами близкими к 0.9, похожими на этот максимум.

я считаю, на выходе должно быть не иначе как
0
0
0.200000000000000011102230246252
0
Yetty
12.04.2019, 01:01
  #9

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
0.900000000000000022204460492503
0.900000000000000011104460492503
в том то и суть, которую я безрезультативно (надеюсь пока) пытаюсь до Вас донести: таких чисел, при одном и том же алгоритме заполнения (с клавиатуры, рандомно) быть не может. только равные:
0.900000000000000022204460492503
0.900000000000000022204460492503

0
Kuzia domovenok
2839 / 2426 / 621
Регистрация: 25.03.2012
Сообщений: 8,642
Записей в блоге: 1
Завершенные тесты: 1
12.04.2019, 01:07 10
Yetty, а кто сказал вообще про ввод с клавиатуры или рандомно? Я изначально привёл конкретный пример: высчитываете вы какую-то симуляцию физики... или у тебя подключена измерительная аппаратура, дающая физические величины с некоторыми погрешностями или ещё что. Кому вообще может потребоваться данные пользователя забивать в матрицу?

А вот хитрую физику или математику для матриц - запросто!
0
Yetty
12.04.2019, 01:11
  #11

Не по теме:

Kuzia domovenok, какие ещё симуляции ? здесь обсуждается задача ТС

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
srand((int)time(0));
int n;
cout << "n="; cin >> n;

double*a = new double[n];

for (int i = 0; i < n; i++)
{
a[i]=0.1*(rand()%3 + 7);
cout << setprecision(30) << fixed << a[i] << "\n";
}
cout << "\n";

delete[]a;
system("pause");
return 0;
}

OUTPUT: ( при n=12 )
0.900000000000000022204460492503
0.900000000000000022204460492503
0.700000000000000066613381477509
0.900000000000000022204460492503
0.900000000000000022204460492503
0.900000000000000022204460492503
0.800000000000000044408920985006
0.800000000000000044408920985006
0.800000000000000044408920985006
0.800000000000000044408920985006
0.700000000000000066613381477509
0.900000000000000022204460492503

0
Kuzia domovenok
2839 / 2426 / 621
Регистрация: 25.03.2012
Сообщений: 8,642
Записей в блоге: 1
Завершенные тесты: 1
12.04.2019, 01:13 12
Yetty, и к чему это? я про реальные программы пишу, а не про примеры с рандомом для школьных лабораторных работ.
0
Yetty
12.04.2019, 01:27     Все наибольшие элементы квадратной матрицы порядка 10 заменить на ноль
  #13

Не по теме:

Kuzia domovenok, предлагаю дискуссию на этом завершить. пусть каждый останется при своём мнении :)

0
12.04.2019, 01:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2019, 01:27
Привет! Вот еще темы с ответами:

Как заменить все элементы главной диагонали в квадратной матрицы на какое-то число?
Как заменить все элементы главной диагонали в квадратной матрицы на какое-то число? и еще один...

В квадратной матрице порядка N все элементы различны
В квадратной матрице порядка N все элементы различны. Найти скалярное произведение строки с...

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


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

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

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