Написать программу, придерживаясь следующих правил: использовать
динамические массивы; реальные размеры массива n и m вводить с клавиатуры; элементы
массива – псевдослучайные числа на интервале [a,b], где a и b (a<b) вводятся с
клавиатуры; все входные данные, элементы входного и выходного массивов выводятся на
экран.
Заполнить матрицу А случайными действительными числами.
Создать матрицу В, которая имеет столько же строк, как и матрица А, и 5 столбцов:
1-й столбец будет содержать минимальные элементы соответствующей строки, 2-й –
максимальные, 3-й – средние арифметические значения, 4-й – количество положительных
элементов, 5-й – количество отрицательных элементов соответствующей строки.
C/C++
Помогите написать программу на C++
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
#include <numeric>
using namespace std;
unsigned integer(const char* msg) {
cout << msg;
unsigned value;
cin >> value;
return value;
}
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
return value;
}
double** create(size_t n, size_t m) {
auto mx = new double* [n];
for (auto i = 0U; i < n; ++i) {
mx[i] = new double[m];
}
return mx;
}
void fill(double** mx, size_t n, size_t m, double a, double b) {
uniform_real_distribution<> uid(a, b);
mt19937_64 gen{ random_device()() };
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < m; ++j) {
mx[i][j] = uid(gen);
}
}
}
double** destroy(double** mx, size_t n) {
if (mx != nullptr) {
for (auto i = 0U; i < n; ++i) {
if (mx[i] != nullptr) {
delete[] mx[i];
}
}
delete mx;
}
return mx;
}
void statistics(double* vb, double* va, size_t m) {
vb[0] = *min_element(va, va + m);
vb[1] = *max_element(va, va + m);
vb[2] = accumulate(va, va + m, 0.) / m;
vb[3] = count_if(va, va + m, [](double x) { return x > 0; });
vb[4] = count_if(va, va + m, [](double x) { return x < 0; });
}
void statistics(double** mb, size_t x, double** ma, size_t m, size_t n) {
for (auto i = 0U; i < n; ++i) {
statistics(mb[i], ma[i], m);
}
}
void show(double* v, size_t m) {
for (auto i = 0U; i < m; ++i) {
cout << setw(8) << v[i];
}
puts("");
}
void show(double** mx, size_t n, size_t m) {
for (auto i = 0U; i < n; ++i) {
show(mx[i], m);
}
puts("");
}
int main() {
size_t n, m;
do n = integer("n: "); while (!n);
do m = integer("m: "); while (!m);
auto a = real("a: ");
auto b = 0.;
do b = real("b: "); while (a >= b);
puts("");
auto ma = create(n, m);
fill(ma, n, m, a, b);
cout << fixed << setprecision(2);
show(ma, n, m);
const auto x = 5;
auto mb = create(n, x);
statistics(mb, x, ma, m, n);
show(mb, n, x);
mb = destroy(mb, n);
ma = destroy(ma, n);
system("pause > nul");
}
#include <iostream>
#include <iomanip>
#include <random>
#include <numeric>
using namespace std;
unsigned integer(const char* msg) {
cout << msg;
unsigned value;
cin >> value;
return value;
}
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
return value;
}
double** create(size_t n, size_t m) {
auto mx = new double* [n];
for (auto i = 0U; i < n; ++i) {
mx[i] = new double[m];
}
return mx;
}
void fill(double** mx, size_t n, size_t m, double a, double b) {
uniform_real_distribution<> uid(a, b);
mt19937_64 gen{ random_device()() };
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < m; ++j) {
mx[i][j] = uid(gen);
}
}
}
double** destroy(double** mx, size_t n) {
if (mx != nullptr) {
for (auto i = 0U; i < n; ++i) {
if (mx[i] != nullptr) {
delete[] mx[i];
}
}
delete mx;
}
return mx;
}
void statistics(double* vb, double* va, size_t m) {
vb[0] = *min_element(va, va + m);
vb[1] = *max_element(va, va + m);
vb[2] = accumulate(va, va + m, 0.) / m;
vb[3] = count_if(va, va + m, [](double x) { return x > 0; });
vb[4] = count_if(va, va + m, [](double x) { return x < 0; });
}
void statistics(double** mb, size_t x, double** ma, size_t m, size_t n) {
for (auto i = 0U; i < n; ++i) {
statistics(mb[i], ma[i], m);
}
}
void show(double* v, size_t m) {
for (auto i = 0U; i < m; ++i) {
cout << setw(8) << v[i];
}
puts("");
}
void show(double** mx, size_t n, size_t m) {
for (auto i = 0U; i < n; ++i) {
show(mx[i], m);
}
puts("");
}
int main() {
size_t n, m;
do n = integer("n: "); while (!n);
do m = integer("m: "); while (!m);
auto a = real("a: ");
auto b = 0.;
do b = real("b: "); while (a >= b);
puts("");
auto ma = create(n, m);
fill(ma, n, m, a, b);
cout << fixed << setprecision(2);
show(ma, n, m);
const auto x = 5;
auto mb = create(n, x);
statistics(mb, x, ma, m, n);
show(mb, n, x);
mb = destroy(mb, n);
ma = destroy(ma, n);
system("pause > nul");
}
Гасан Аскеров
Здравствуйте, посмотрите пожалуйста мою последнюю задачу, она очень простая даже алгоритм составила, вам не сложно, а мне просто надо разобраться (
#include "iostream"
#include "iomanip"
#include "ctime"
#include "cstdlib"
#include "algorithm"
#include "functional"
#include "numeric"
using namespace std;
int main(){
int n,m; float a,b; srand(time(NULL));
cout<<"n m a b: "; cin>>n>>m>>a>>b; cout<< endl;
float **A=new float*[n]; for(int i=0;i< m;i++)A[i]=new float[m];
for(int i=0;i< n;i++){for(int j=0;j< m;j++)cout<< setw(7)<<(A[i][j]=(rand()%10*(b-a))/10.+a); cout<< endl;}
float **B=new float*[n]; for(int i=0;i< n;i++)B[i]=new float[5];
cout<< endl;
for(int i=0;i< n;i++){
B[i][0]=*min_element(A[i],A[i]+m);
B[i][1]=*max_element(A[i],A[i]+m);
B[i][2]=accumulate(A[i],A[i]+m,0.)/m;
B[i][3]=count_if(A[i],A[i]+m,bind2nd(greater< float>(),0));
B[i][4]=count_if(A[i],A[i]+m,bind2nd(less< float>(),0));}
for(int i=0;i< n;i++){for(int j=0;j< 5;j++)cout<< setw(9)<< setprecision(3)<< B[i][j]; cout<< endl;}}
#include "iomanip"
#include "ctime"
#include "cstdlib"
#include "algorithm"
#include "functional"
#include "numeric"
using namespace std;
int main(){
int n,m; float a,b; srand(time(NULL));
cout<<"n m a b: "; cin>>n>>m>>a>>b; cout<< endl;
float **A=new float*[n]; for(int i=0;i< m;i++)A[i]=new float[m];
for(int i=0;i< n;i++){for(int j=0;j< m;j++)cout<< setw(7)<<(A[i][j]=(rand()%10*(b-a))/10.+a); cout<< endl;}
float **B=new float*[n]; for(int i=0;i< n;i++)B[i]=new float[5];
cout<< endl;
for(int i=0;i< n;i++){
B[i][0]=*min_element(A[i],A[i]+m);
B[i][1]=*max_element(A[i],A[i]+m);
B[i][2]=accumulate(A[i],A[i]+m,0.)/m;
B[i][3]=count_if(A[i],A[i]+m,bind2nd(greater< float>(),0));
B[i][4]=count_if(A[i],A[i]+m,bind2nd(less< float>(),0));}
for(int i=0;i< n;i++){for(int j=0;j< 5;j++)cout<< setw(9)<< setprecision(3)<< B[i][j]; cout<< endl;}}
Cas Per
Помогите, пожалуйста с моим заданием, прошу, оно сложное хочу с ним разобраться
Похожие вопросы
- Помогите написать программу на C++
- Помогите написать программу на C++
- ПОМОГИТЕ НАПИСАТЬ ПРОГРАММУ НА C++ ИСПОЛЬЗУЯ ТОЛЬКО ЦИКЛЫ.
- ПОМОГИТЕ НАПИСАТЬ ПРОГРАММУ НА C++
- Помогите написать программу на C++ Нето мои знания по программированию равны 0 а зачёт нужен
- Помогите написать программу на c++
- Помогите написать программу на C++
- Помогите написать программу на c++
- Помоги пожалуйста написать программу на C++
- Написать программу на c++