C/C++
Как написать код для этого задания на языке С++
Дана вещественная матрица размера N×M. Уменьшить на K элементы двух столбцов матрицы, сумма элементов которых максимальна. Значение К вводит пользователь. Полученную матрицу вывести на экран. Только без использования векторов
Пальцами в клавиатуру: тык-тык-тык. Примерно так...
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
const int N = 5, M = 4;
double A[N][M];
srand(time(NULL));
for(int x = 0; x < N; x++)
{
for(int y = 0; y < M; y++)
{
A[x][y] = (rand() % 301 - 150)*.01;
cout << A[x][y] << '\t';
}
cout << endl;
}
cout << endl;
double K;
cout << "Введите K: ";
cin >> K;
double sum[M];
for(int y = 0; y < M; y++)
{
sum[y] = 0.;
for(int x = 0; x < N; x++)
sum[y] += A[x][y];
}
int i_max1 = 0, i_max2 = 0;
for(int y = 0; y < M; y++)
{
if(sum[y] > sum[i_max2]) i_max2 = y;
if(sum[i_max2] > sum[i_max1])
{
int tmp = i_max1;
i_max1 = i_max2;
i_max2 = tmp;
}
else if(sum[i_max2] == sum[i_max1]) i_max2 = y;
}
for(int y = 0; y < M; y++)
for(int x = 0; x < N; x++)
if(y == i_max1 || y == i_max2) A[x][y] -= K;
for(int x = 0; x < N; x++)
{
for(int y = 0; y < M; y++)
{
cout << A[x][y] << '\t';
}
cout << endl;
}
return 0;
}
#include <ctime>
using namespace std;
int main()
{
const int N = 5, M = 4;
double A[N][M];
srand(time(NULL));
for(int x = 0; x < N; x++)
{
for(int y = 0; y < M; y++)
{
A[x][y] = (rand() % 301 - 150)*.01;
cout << A[x][y] << '\t';
}
cout << endl;
}
cout << endl;
double K;
cout << "Введите K: ";
cin >> K;
double sum[M];
for(int y = 0; y < M; y++)
{
sum[y] = 0.;
for(int x = 0; x < N; x++)
sum[y] += A[x][y];
}
int i_max1 = 0, i_max2 = 0;
for(int y = 0; y < M; y++)
{
if(sum[y] > sum[i_max2]) i_max2 = y;
if(sum[i_max2] > sum[i_max1])
{
int tmp = i_max1;
i_max1 = i_max2;
i_max2 = tmp;
}
else if(sum[i_max2] == sum[i_max1]) i_max2 = y;
}
for(int y = 0; y < M; y++)
for(int x = 0; x < N; x++)
if(y == i_max1 || y == i_max2) A[x][y] -= K;
for(int x = 0; x < N; x++)
{
for(int y = 0; y < M; y++)
{
cout << A[x][y] << '\t';
}
cout << endl;
}
return 0;
}
всё дописал теперь
#include iostream
double sum_column(double **arr, const int &n, const int &column){
double res = 0;
for(int i = 0; i < n;++i){
res+=arr[i][column];
}
return res;
}
int main(){
int n,m;
double k;
std::cin >> n >> m >> k;
double **arr = new double*[n];
for(int i = 0; i < n;++i){
arr[i] = new double[m];
}
for(int i = 0; i < n; ++i){
for(int j = 0; j < m; ++j){
std::cin >> arr[i][j];
}
}
int max_index1, max_index2;
double max_sum1, max_sum2;
max_sum1 = sum_column(arr, n,0);
max_sum2 = sum_column(arr, n, 1);
if(max_sum2 > max_sum1) std::swap(max_sum1,max_sum2);
for(int i = 2; i < m;++i){
auto temp = sum_column(arr,n,i);
if(temp > max_sum1){
max_sum2 = max_sum1;
max_sum1 = temp;
max_index2 = max_index1;
max_index1 = i;
}
else if(temp > max_sum2){
max_sum2 = temp;
max_index2 = i;
}
}
for(int i = 0; i < n;++i){
arr[i][max_index1]-=k;
arr[i][max_index2]-=k;
}
for(int i = 0; i < n;++i){
for(int j = 0; j < m;++j){
std::cout << arr[i][j] <<' ';
}
std::cout << std::endl;
}
return 0;
}
#include iostream
double sum_column(double **arr, const int &n, const int &column){
double res = 0;
for(int i = 0; i < n;++i){
res+=arr[i][column];
}
return res;
}
int main(){
int n,m;
double k;
std::cin >> n >> m >> k;
double **arr = new double*[n];
for(int i = 0; i < n;++i){
arr[i] = new double[m];
}
for(int i = 0; i < n; ++i){
for(int j = 0; j < m; ++j){
std::cin >> arr[i][j];
}
}
int max_index1, max_index2;
double max_sum1, max_sum2;
max_sum1 = sum_column(arr, n,0);
max_sum2 = sum_column(arr, n, 1);
if(max_sum2 > max_sum1) std::swap(max_sum1,max_sum2);
for(int i = 2; i < m;++i){
auto temp = sum_column(arr,n,i);
if(temp > max_sum1){
max_sum2 = max_sum1;
max_sum1 = temp;
max_index2 = max_index1;
max_index1 = i;
}
else if(temp > max_sum2){
max_sum2 = temp;
max_index2 = i;
}
}
for(int i = 0; i < n;++i){
arr[i][max_index1]-=k;
arr[i][max_index2]-=k;
}
for(int i = 0; i < n;++i){
for(int j = 0; j < m;++j){
std::cout << arr[i][j] <<' ';
}
std::cout << std::endl;
}
return 0;
}
Похожие вопросы
- Как написать код по этому заданию? Программирование на Си
- Написать код на языке си
- Помогите с заданием по программированию, С++, напишите код для 1 курса
- Написал код для языка C, но работает не правильно
- Задание на c++ ответить на вопросы и написать код
- Написать код на языке Си
- Написать код на языке C++
- С++ Обработка структур. Помогите написать код к заданию ниже!
- Помогите пожалуйста написать код.(C++)
- Написать код для задачи C++
delete[] arr[i;]
}
delete[] arr;
забыл добавить