Другие языки программирования и технологии
Помогите написать программу в c++
В одномерном массиве А, состоящем из n<=16 целых чисел, найти среднее гармоническое нечетных элементов. Создать массив b из положительных нечетных элементов исходного массива, подсчитав число элементов в нем.
#include <iostream>
#include <random>
#include <iomanip>
using namespace std;
void fill(int* box, const size_t n, int a, int b) {
if (b < a) swap(a, b);
uniform_int_distribution<> uid(a, b);
random_device rd;
mt19937 gen(rd());
for (auto i = 0U; i < n; ++i) {
do box[i] = uid(gen); while (!box[i]);
}
}
void show(int* box, const size_t n) {
for (auto i = 0U; i < n; ++i) cout << setw(4) << box[i];
cout.put('\n');
}
double harmonic_mean(int* box, const size_t n) {
auto s = 0.0;
auto x = 0;
for (auto i = 0U; i < n; ++i) {
if (box[i] & 1) {
++x;
s += 1.0 / box[i];
}
}
return s? x / s : 0;
}
int odd_pos(int* dest, int* box, const size_t n) {
auto k = -1;
for (auto i = 0U; i < n; ++i) {
if (box[i] > 0 && box[i] & 1) dest[++k] = box[i];
}
return ++k;
}
int main() {
const auto m = 16;
int a[m], b[m];
size_t n;
do {
cout << " n: ";
cin >> n;
} while (!n || n > m);
fill(a, n, -10, 10);
show(a, n);
auto hm = harmonic_mean(a, n);
if (hm) cout << " Harmonic mean: " << hm << '\n';
else cout << " Not found!\n";
auto k = odd_pos(b, a, n);
if (k) show(b, k);
cout << " k: " << k << "\n ";
system("pause");
}
#include <random>
#include <iomanip>
using namespace std;
void fill(int* box, const size_t n, int a, int b) {
if (b < a) swap(a, b);
uniform_int_distribution<> uid(a, b);
random_device rd;
mt19937 gen(rd());
for (auto i = 0U; i < n; ++i) {
do box[i] = uid(gen); while (!box[i]);
}
}
void show(int* box, const size_t n) {
for (auto i = 0U; i < n; ++i) cout << setw(4) << box[i];
cout.put('\n');
}
double harmonic_mean(int* box, const size_t n) {
auto s = 0.0;
auto x = 0;
for (auto i = 0U; i < n; ++i) {
if (box[i] & 1) {
++x;
s += 1.0 / box[i];
}
}
return s? x / s : 0;
}
int odd_pos(int* dest, int* box, const size_t n) {
auto k = -1;
for (auto i = 0U; i < n; ++i) {
if (box[i] > 0 && box[i] & 1) dest[++k] = box[i];
}
return ++k;
}
int main() {
const auto m = 16;
int a[m], b[m];
size_t n;
do {
cout << " n: ";
cin >> n;
} while (!n || n > m);
fill(a, n, -10, 10);
show(a, n);
auto hm = harmonic_mean(a, n);
if (hm) cout << " Harmonic mean: " << hm << '\n';
else cout << " Not found!\n";
auto k = odd_pos(b, a, n);
if (k) show(b, k);
cout << " k: " << k << "\n ";
system("pause");
}
double sum=0;
for (int i=0;i<n;i++)
if(a[i] % 2 != 0)
sum+=1./a[i];
if (sum!=0)
cout<<"Среднее гармоническое:" <<1/sum<<'\n';
else
cout<<"Нечётных элементов нет! \n";
int nb=0;
for (int i=0;i0)
{
b[nb]=a[i];
nb++;
};
if (nb!=0)
{
cout<<"Количество нечётных элементов"<<nb<<'\n';
cout<<"b:";
for (int i=0;i<nb;i++)
cout<<' '<<b[i];
cout<<'\n';
}
else
cout<<"Нечётных элементов нет! \n";
Возможно, потребуется обработка напильником
for (int i=0;i<n;i++)
if(a[i] % 2 != 0)
sum+=1./a[i];
if (sum!=0)
cout<<"Среднее гармоническое:" <<1/sum<<'\n';
else
cout<<"Нечётных элементов нет! \n";
int nb=0;
for (int i=0;i0)
{
b[nb]=a[i];
nb++;
};
if (nb!=0)
{
cout<<"Количество нечётных элементов"<<nb<<'\n';
cout<<"b:";
for (int i=0;i<nb;i++)
cout<<' '<<b[i];
cout<<'\n';
}
else
cout<<"Нечётных элементов нет! \n";
Возможно, потребуется обработка напильником
Акылбек Алдыраков
Это полная программа или нужно будет еще что-то помимо дописывать? А так же Среднее гармоническое и кол-во нечетных самому нужно просто придумать?
Иван Нилогов
Хорошо потрудился, молодец.
Жаль, что в формуле оплошность: в числителе не 1, а количество усредняемых (то есть в данной задаче необходимо параллельно подсчитывать количество нечётных).
Жаль, что в формуле оплошность: в числителе не 1, а количество усредняемых (то есть в данной задаче необходимо параллельно подсчитывать количество нечётных).
Иван Нилогов
ИМХО.
Думается, проще отсеять чётные элементы в процессе ввода массива.
Тимур, а можно ли использовать vector?
Думается, проще отсеять чётные элементы в процессе ввода массива.
Тимур, а можно ли использовать vector?
Иван Нилогов
В этой задаче две подзадачи.
Ещё при считывании массива можно частично решить каждую из них:
• В массив A помещать только нечётные, параллельно подсчитать их количество.
• В массив B помещать только положительные из нечётных, параллельно подсчитать количество.
Более того, вторая подзадача решается полностью!
Ещё при считывании массива можно частично решить каждую из них:
• В массив A помещать только нечётные, параллельно подсчитать их количество.
• В массив B помещать только положительные из нечётных, параллельно подсчитать количество.
Более того, вторая подзадача решается полностью!
Тимур, прошу прощения, это не ответ на поставленный вопрос.
Хочу поинтересоваться, доступны ли Вам мои комментарии, которые я помещаю в «Мой мир»?
Лично я при входе в «Мир» вижу их все. Но хотелось бы знать, увидит ли их кто-нибудь еще.
Приходят ли Вам хотя бы уведомления о комментировании Вашего вопроса в «Мире»?
Дело в том, что я этого не знаю.
Спасибо.
Хочу поинтересоваться, доступны ли Вам мои комментарии, которые я помещаю в «Мой мир»?
Лично я при входе в «Мир» вижу их все. Но хотелось бы знать, увидит ли их кто-нибудь еще.
Приходят ли Вам хотя бы уведомления о комментировании Вашего вопроса в «Мире»?
Дело в том, что я этого не знаю.
Спасибо.
Похожие вопросы
- Помогите написать программу на C/C++
- Помогите написать программу по C++
- помогите написать программу на c++
- Помогите написать программу в C++
- Помогите написать программу в C# пожалуйста!
- Помогите написать программу на C++
- Помогите написать программу на C++
- Помогите написать программу в C# !!
- Ребята, помогите написать программу в C++
- помогите написать программу на C++
Неплохо было бы прежде спросить у Тимура, разрешено ли инкапсулировать код в функции.