Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 42
1

Вычислить среднее арифметическое отрицательных элементов массива

06.02.2017, 11:54. Показов 4747. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создать функцию, параметром которой является одномерный массив и его размерность. Тело функции реализовать двумя способами: через обращение к элементам массива через указатели и обычным способом. Продемонстрировать возможность применения созданной функции к строкам двумерного массива. Элементы матрицы задать случайным образом, не забыв вывести их на экран.
1.Вычислить среднее арифметическое отрицательных элементов массива. Использовать функцией для каждой строки матрицы А (4, 8).
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2017, 11:54
Ответы с готовыми решениями:

Вычислить среднее арифметическое отрицательных элементов массива
Помогите студенту!!!!) ___________________________ Вычислить среднее арифметическое...

Вычислить среднее арифметическое всех отрицательных элементов массива
Даны вещественные массивы А, F. Для каждого массива определить: среднее арифметическое...

Вычислить среднее арифметическое отрицательных элементов массива. Использовать функцией для каждой строки матрицы А (4, 8)
Здравствуйте. Вычислить среднее арифметическое отрицательных элементов массива. Использовать...

Среднее арифметическое отрицательных элементов массива
Дано: Со стандартного потока ввода данных считываются значения одномерного массива размером 20...

21
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
06.02.2017, 12:15 2
C++11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <random>
 
void GenAndPrintNegAve(int *arr, const size_t N)
{
    static std::mt19937 gen{ std::random_device()() };
    static std::uniform_int_distribution<> dist(-9, 9);
    int negCounter = 0, sum = 0;
 
    for (size_t i = 0; i < N; i++)
    {
        arr[i] = dist(gen);
        std::cout << *(arr + i) << " ";
        if (arr[i] < 0)
        {
            negCounter++;
            sum += *(arr + i);
        }
    }
    if (negCounter)
        std::cout << "with neg ave " << static_cast<double>(sum) / negCounter << std::endl;
    else
        std::cout << "without neg elements\n";
}
 
int main()
{
    int A[4][8];
    for (auto &l : A)
        GenAndPrintNegAve(l, sizeof(l) / sizeof(*l));
}
0
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 42
07.02.2017, 10:17  [ТС] 3
Мы не проходили библиотеку random(
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
07.02.2017, 10:54 4
Цитата Сообщение от Таксист Посмотреть сообщение
Мы не проходили библиотеку random
А это и не библиотека.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
07.02.2017, 10:58 5
Цитата Сообщение от GbaLog- Посмотреть сообщение
А это и не библиотека.
А что это?
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
07.02.2017, 10:59 6
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
А что это?
Заголовочный файл.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
07.02.2017, 11:21 7
Цитата Сообщение от GbaLog- Посмотреть сообщение
Заголовочный файл.
И как нам узнать кто прав?) Давайте обратимся к офиц источникам где написано что это либа?)
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
07.02.2017, 12:23 8
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Давайте обратимся к офиц источникам
Стандарт:
26.5.2 Header <random> synopsis
cppreference
Standard library header <random>
C++ Standard Library header files
This header is part of the pseudo-random number generation library.
random, конечно, заголовочный файл, однако речь скорее шла о библиотеке для генерации СЧ.
0
GbaLog-
07.02.2017, 14:18
  #9

Не по теме:

Ну я говорил о хедере. )))

0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
07.02.2017, 21:12 10
Цитата Сообщение от MrGluck Посмотреть сообщение
Standard library header <random>
А почему надо читать через слово?
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
07.02.2017, 23:29 11
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
А почему надо читать через слово?
Потому что я хотел подчеркнуть именно что этот хедер часть библиотеки для генерации (П)СЧ, которая входит в стандартную библиотеку. Таким образом, то что он принадлежит к более широкому множеству, итак очевидно.
Да и то, что это хедер стандартный итак очевидно (такая же информация, как и что iostream, string, numeric являются Standard library header)
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
08.02.2017, 00:03 12
MrGluck, получается как и <algorithm> это часть
библиотеки, но не правильно это называть "подключение библиотеки" потому
что это очевидно? А что тогда подключение библиотеки? Подключить header'ы
где подключены весь интерфейс библиотеки? К чему я клоню - подключить 1 файл
для работы с файлами fstream не является подключением библиотеки?

P.S. Как же я люблю С++ за философские рассуждения
0
729 / 435 / 66
Регистрация: 22.12.2013
Сообщений: 2,292
Записей в блоге: 19
28.02.2017, 19:32 13
Лучший ответ Сообщение было отмечено Таксист как решение

Решение

Примерно так. Написал, но не проверял.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
 
using namespace std;
 
float middle(int *ar, int sz){ // sz - размер барби
    float sum = 0.0;// переменная для суммы чисел в массиве
    for (int i=0; i<sz; i++){
        sum +=ar[i];
    }
    float result = sum/sz;
 
    return result;
}
 
int main()
{
     setlocale(LC_CTYPE, "Russian");
 
    cout << "Привет, Мир!" << endl;
    int num = 12;
    float result = 0;
    int *p_barby = new int[num]; // содать барби
 
    // заполнить барби
    for(int i=0; i<num; i++){
        p_barby[i] = (-1 * i);
 
    }
    // перадать барби для вычисления среднего и получить среднее
      result = middle(p_barby , num);
  cout << "Привет, Мир! Результат равен " << result  << endl;
 
    delete [] p_barby; // очистка памяти , удалить барби
    return 0;
}
1
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
28.02.2017, 19:53 14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <algorithm>
#include <iterator>
#include <numeric>
#include <random>
#include <ctime>
#include <iomanip>
using namespace std;
double avg(const vector<int> &v, int n) {
    int c=0;
    return static_cast<double>(accumulate(v.begin(),v.begin()+n,0,[&c](const int &x,const int &y) {
        return y<0 && ++c? x+y:x;
    }))/c;
}
int main() {
    mt19937 gen(time(nullptr));
    uniform_int_distribution<> dist(-20,20);
    vector<vector<int>>val;
    for(int i=0; i!=5; i++) {
        vector<int>t;
        for(int j=0; j!=5; j++) {
            t.push_back(dist(gen));
        }
        val.push_back(t);
    }
    cout<<endl;
    for_each(val.begin(),val.end(),[](const vector<int> &v) {
        for_each(v.begin(),v.end(),[](const int &x) {
            cout<<setw(4)<<x;
        });
        cout<<endl;
    });
    cout<<endl;
    //////////////////////////////////////////////////////
    for_each(val.begin(),val.end(),[](const vector<int> &v) {
        cout<<avg(v,5)<<endl;
    });
    return 0;
}
0
729 / 435 / 66
Регистрация: 22.12.2013
Сообщений: 2,292
Записей в блоге: 19
28.02.2017, 20:25 15
У меня неправильно было.
Вот поправил.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
float middle(int *ar, int sz){ // sz - размер барби
    float sum = 0.0;// переменная для суммы чисел в массиве
    int coutn = 0;
        for (int i=0; i<sz; i++){
         
       if(ar[i]<0) // тут нужно проверить на отрицательность
           {
              sum +=ar[i];
              coutn++;  // считаем сколько отрицательных
           } 
        }
    float result = sum/coutn;
 
    return result;
}
0
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 42
05.03.2017, 11:26  [ТС] 16
Еще бы вывод массива добавить и будет замечательно)
0
729 / 435 / 66
Регистрация: 22.12.2013
Сообщений: 2,292
Записей в блоге: 19
05.03.2017, 21:02 17
Таксист, самый простой способ:
C++
1
2
3
4
5
6
7
8
// показать
void showBarby(int *ar, int sz){
  cout<<endl;
  for(int i=0; i<sz; i++){
       cout << ar[i] <<" ";
    }
    cout<<endl;
}
вызов из main()
C++
1
 showBarby(p_barby,num); // показать барби
0
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 42
06.03.2017, 06:37  [ТС] 18
Элементы матрицы задать случайным образом, не забыв вывести их на экран. Одно и тоже среднее арифметическое получается.
0
729 / 435 / 66
Регистрация: 22.12.2013
Сообщений: 2,292
Записей в блоге: 19
06.03.2017, 13:29 19
Цитата Сообщение от Таксист Посмотреть сообщение
Элементы матрицы задать случайным образом, не забыв вывести их на экран. Одно и тоже среднее арифметическое получается.
Покажите ваши наработки. Вы хоть что-нибудь сделали?
0
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 42
18.03.2017, 18:31  [ТС] 20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include<cstdlib>
 using namespace std;
 float middle(int *ar, int sz)
 {
    float sum = 0;
    int coutn=0;
    for (int i=0; i<sz; i++)
    {
        if(ar[i]<0)
        {
        sum +=ar[i];
        coutn++;
        cout << ar[i] << endl;
    }
    }
    float result = sum/coutn; 
    return result;
}
int main()
{setlocale(LC_CTYPE, "Russian");
int n=4, m=8, i, j, ar[i];
srand((unsigned)time(0));
for(i=0;i<n;i++)
   { for(j=0;j<m;j++)
   ar[i]=rand()%40-20;
   cout<<sate(4)<<ar[i][j];// счетчик случайных чисел
   }
}
for(i=0;i<n;i++)
{for(j=0;j<m;j++) 
cout<<setw(4)<<*ar[i][j];
cout<<endl;
}
    int num = 12;
    float result = 0;
    int *p = new int[num];
    for(int i=0; i<num; i++)
    {
        p[i] = (-1 * i);
    }
      result = middle(p , num);
  cout << "Результат равен" << result  << endl;
    return 0;
}
Вот что у меня получилось при попытке соединить с вашим алгоритмом. Еще нужно доработать
0
18.03.2017, 18:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2017, 18:31
Помогаю со студенческими работами здесь

Вычислить среднее арифметическое отрицательных элементов динамических массивов A и B
Помогите дописать Сформировать массив B(k), записав в него каждый второй элемент массива A(N)....

Вычислить среднее арифметическое отрицательных элементов каждой строки
Она должна вычислять среднее арифметическое отрицательных элементов. Проверьте на ошибки,...

Посчитать среднее арифметическое отрицательных элементов массива
Помогите пожалуйста!!!! Задача: посчитать среднее арифметическое отрицательных числе массива.

Посчитать среднее арифметическое отрицательных элементов массива
Условие: K (6) - массив действительных чисел. Посчитать среднее арифметическое отрицательных...

Определить среднее арифметическое отрицательных элементов массива
Дано одномерный массив действительных чисел, состоящий из 10 элементов. Определить среднее...

Функция: среднее арифметическое положительных элементов массива и отрицательных элементов массива
задача:найти среднее арифметическое положительных элементов массива и отрицательных элементов...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru