Другие языки программирования и технологии
Помогите, пожалуйста, решить задачу по С++, тема "Массивы".
Дана вещественная матрица А (N,M). Составить программу замены всех отрицательных элементов матрицы на элемент, имеющий максимальное значение.
Как понимаю, вещественная матрица это двумерный массив, скажем double matrix[n][m];
Ищем вначале максимальный элемент, просто берём переменную max, записываем туда какое-нибудь число, желательно такое, чтобы оно было меньше всех элементов матрицы и идём по циклу и сравниваем, если число больше максимального, то присваиваем максимуму число.
Затем идём и ищем отрицательные элементы, если находим, меняем просто на максимальное.
Ищем вначале максимальный элемент, просто берём переменную max, записываем туда какое-нибудь число, желательно такое, чтобы оно было меньше всех элементов матрицы и идём по циклу и сравниваем, если число больше максимального, то присваиваем максимуму число.
Затем идём и ищем отрицательные элементы, если находим, меняем просто на максимальное.
Алексей Полушин
Максимальное число. Записываем первое число массива и идем по массиву проверяя что бы это число не было меньше. Если находим число большее то записываем его в переменную. Нет смысла писать какое то число в max кроме первого в массиве. Даже если оно и будет максимальным, то остальные числа его не изменят.
алгоритм поиска максимального числа:
int max;
max = arr[0];
for(int i = 1; i < sizeof(arr); i++){
if(max<arr[i]) max = arr[i];
}
алгоритм поиска отрицательных чисел:
for(int i = 0; i<sizeof(arr); i++){
if(arr[i]<0){
//сделать что то
}
}
int max;
max = arr[0];
for(int i = 1; i < sizeof(arr); i++){
if(max<arr[i]) max = arr[i];
}
алгоритм поиска отрицательных чисел:
for(int i = 0; i<sizeof(arr); i++){
if(arr[i]<0){
//сделать что то
}
}
http://coliru.stacked-crooked.com/a/b59928ddc7d4127f
#include
#include
#include
#include
#include
#include
#include
template
using matrix_t = std::array<std::array, N>;
namespace std
{
template
constexpr auto size(const matrix_t &) noexcept
{
return M * N;
}
}
template
std::ostream & operator <<( std::ostream & os, const matrix_t & matrix )
{
for (auto&& row : matrix) [&]{for (auto&& elem : row) std::cout << std::setw( 7 ) << elem << " ";}(), std::cout << "\n";
return os;
}
int main(int argc, char * argv[])
{
constexpr size_t M = 7;
constexpr size_t N = 3;
using type = double;
matrix_t matrix{};
auto begin = (type *)std::data( matrix );
auto end = (type *)std::data( matrix ) + std::size( matrix );
std::random_device engine;
std::uniform_real_distribution<> dist{-13, 42};
std::generate( begin, end, std::bind(dist, std::ref(engine)) );
std::cout << matrix << std::endl;
if ( auto max_elem = std::max_element( begin, end ); max_elem != end )
{
std::cout << "max_elem: " << *max_elem << std::endl;
std::replace_if( begin, end, [](auto&&v){return v < 0;}, *max_elem );
}
std::cout << matrix << std::endl;
}
#include
#include
#include
#include
#include
#include
#include
template
using matrix_t = std::array<std::array, N>;
namespace std
{
template
constexpr auto size(const matrix_t &) noexcept
{
return M * N;
}
}
template
std::ostream & operator <<( std::ostream & os, const matrix_t & matrix )
{
for (auto&& row : matrix) [&]{for (auto&& elem : row) std::cout << std::setw( 7 ) << elem << " ";}(), std::cout << "\n";
return os;
}
int main(int argc, char * argv[])
{
constexpr size_t M = 7;
constexpr size_t N = 3;
using type = double;
matrix_t matrix{};
auto begin = (type *)std::data( matrix );
auto end = (type *)std::data( matrix ) + std::size( matrix );
std::random_device engine;
std::uniform_real_distribution<> dist{-13, 42};
std::generate( begin, end, std::bind(dist, std::ref(engine)) );
std::cout << matrix << std::endl;
if ( auto max_elem = std::max_element( begin, end ); max_elem != end )
{
std::cout << "max_elem: " << *max_elem << std::endl;
std::replace_if( begin, end, [](auto&&v){return v < 0;}, *max_elem );
}
std::cout << matrix << std::endl;
}
Похожие вопросы
- Помогите пожалуйста решить задачи по информатике, одномерные массивы. Си шарп. Очень срочно. Пожалуйста!!!!
- Помогите,пожалуйста,решить задачу на двумерные массивы,в паскале.(задача вн.)Спасибо.
- Помогите пожалуйста, решить задачу на двумерный массив, с++. Спасибо.
- помогите пожалуйста решить задачу по работе компьютера!
- Помогите пожалуйста решить задачу по программированию. В чем я ошибаюсь?
- Помогите,пожалуйста,решить задачу в Паскале.
- Pascal. Помогите пожалуйста решить задачу в паскале !
- Помогите пожалуйста решить задачи по программированию. P.S: задачи по паскалю.
- Помогите пожалуйста решить задачу С++
- Помогите пожалуйста решить задачу в Pascal ABC