0 / 0 / 0
Регистрация: 18.12.2016
Сообщений: 3
1

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

11.05.2018, 08:39. Показов 1329. Ответов 15
Метки нет (Все метки)

Составить функцию нахождения среднего арифметического значения элементов массива, расположенных на нечетных местах, и применить ее для обработки нескольких одномерных массивов.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2018, 08:39
Ответы с готовыми решениями:

Параметризованная функция вычисления среднего арифметического значения массива элементов
Опишите параметризованную функцию вычисления среднего арифметического значения мас- сива элементов

Нахождение среднего арифметического элементов массива
Необходимо решить задачу: Дан целочисленный массив из N элементов (N≤1000). Элементы...

Реализовать нахождение среднего арифметического элементов массива
Решите пожалуйста задачу на С++ Разработайте программу, в которой реализовано нахождение...

Найти сумму элементов массива, расположенных после минимального и стоящих на нечетных местах
В массиве К из 15 элементов, найти сумму элементов, расположенных после минимального и стоящих на...

15
25 / 23 / 34
Регистрация: 22.11.2012
Сообщений: 183
11.05.2018, 09:01 2
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
46
47
48
49
50
51
52
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
float AvgOdd(int* a)
{
    float avg = 0.0;
    int n = sizeof(a) + 1;
    int k=0;
    if (n != 0)
    {
        for(int i = 0; i < n; i++)
            if ((i % 2) != 0)
            {
                avg += a[i];
                k++;
            }
        return avg / k;
    }
    else 
    {
        avg = 0.00;
        return avg;
    }
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
 
 
 
    setlocale(LC_ALL, "Russian");
    int arr[5];
    int a[5];
    float avg;
    cout<<"Введите массив:\n";
    for(int i = 0; i < 5; i++)
    {
        cout<<"arr["<<i<<"] = ";
        cin>>arr[i];
        cout<<"a["<<i<<"] = ";
        cin>>a[i];
    }
 
    cout<<"AvgOdd in arr[]  = "<<AvgOdd(arr)<<"\n";
    cout<<"AvgOdd in   a[] = "<< AvgOdd(a);
        getchar();
    return 0;
}
0
Диссидент
Эксперт C
26948 / 16829 / 3698
Регистрация: 24.12.2010
Сообщений: 37,767
11.05.2018, 11:39 3
Цитата Сообщение от Славуся Посмотреть сообщение
for(int i = 0; i < n; i++)
* * * * * * if ((i % 2) != 0)
C++
1
for(int i=1; i<n; i+=2) {
0
25 / 23 / 34
Регистрация: 22.11.2012
Сообщений: 183
11.05.2018, 11:41 4
Байт, а разница?
0
134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
11.05.2018, 11:43 5
Славуся, нет бесполезного if
0
25 / 23 / 34
Регистрация: 22.11.2012
Сообщений: 183
11.05.2018, 11:55 6
stzer, ну советую тебе тогда совсем отказаться от if, если считаешь данный оператор бесполезным
0
134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
11.05.2018, 11:58 7
Славуся, зачем делать ветвление там, где оно не требуется?
0
25 / 23 / 34
Регистрация: 22.11.2012
Сообщений: 183
11.05.2018, 13:11 8
stzer, а кто сказал, что оно не требуется?
каждый решает по своему, кто - то хочет так, кто - то по - другому
и это не является недостатком, как вы мне пытаетесь это интерепритировать
0
7420 / 5015 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
11.05.2018, 20:50 9
места (позиции) элементов считаются с единицы: первый элемент, второй элемент, третий элемент и т.д., поэтому так:

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
46
47
48
49
50
51
52
#include <iostream>
#include <ctime>
using namespace std;
 
void Ramdom (double*x, int n)
{
    for (int i = 0; i < n; i++)
    x[i]=rand()%9 + 1;      
}
 
double Delta (double*x, int n)
{
    int m;
    double sum=0;
    for (int i = 0; i < n; i+=2)
    sum+=x[i];
    if (n%2==0) m=n/2; else m=n/2+1;    
    return sum/m;    
}
 
void Print (double*x, int n) 
{
    for (int i = 0; i < n; i++)      
    cout <<x[i]<<" ";      
    cout <<endl;
}
 
int main()
{
    srand((int)time(0));
    int nA, nB, nC;
    cout <<"Enter size A: "; cin >>nA;
    cout <<"Enter size B: "; cin >>nB;
    cout <<"Enter size C: "; cin >>nC;
    double *A = new double[nA];
    double *B = new double[nB];
    double *C = new double[nC];
    Ramdom (A, nA);
    Ramdom (B, nB);
    Ramdom (C, nC);
    Print (A, nA);
    cout <<"delta odd A="<<Delta (A, nA)<<endl;
    Print (B, nB);
    cout <<"delta odd B="<<Delta (B, nB)<<endl;
    Print (C, nC);
    cout <<"delta odd C="<<Delta (C, nC)<<endl;
    delete[]A;
    delete[]B;
    delete[]C;
system("pause");
return 0;
}
0
Диссидент
Эксперт C
26948 / 16829 / 3698
Регистрация: 24.12.2010
Сообщений: 37,767
11.05.2018, 20:56 10
Цитата Сообщение от Славуся Посмотреть сообщение
каждый решает по своему, кто - то хочет так, кто - то по - другому
Кто более эффективно, кто менее... Видимо, вы предпочитаете меньшую эффективность и более сложный код. Ваше дело. Только не стоит учить этому других. И так глупо упираться тоже не стоит.

Добавлено через 2 минуты
Опять же, кто-то считает четные нечетными... Дело вкуса, в общем-то
0
Модератор
Эксперт по электронике
8729 / 6522 / 884
Регистрация: 14.02.2011
Сообщений: 22,822
11.05.2018, 20:59 11
Цитата Сообщение от Славуся Посмотреть сообщение
и это не является недостатком,
вы хотите недостатков? их есть у меня
для начала представим массив так миллионов на 10, сколько итераций у Байта и сколько у тебя
далее ветвление которое тормозит процессор, ну и у кого быстрее?
ну и главное
Цитата Сообщение от Славуся Посмотреть сообщение
AvgOdd(int* a)
Цитата Сообщение от Славуся Посмотреть сообщение
int n = sizeof(a) + 1;
что вернет sizeof(a)?
сам то пробовал?
1
1172 / 833 / 359
Регистрация: 26.02.2015
Сообщений: 3,743
11.05.2018, 21:02 12
ValeryS, вы хоть раз в своих задачах использовали массив на 10000000 элементов? Я сейчас не оспариваю ваши слова, просто хочется узнать, когда такие массивы применяются.
0
Модератор
Эксперт по электронике
8729 / 6522 / 884
Регистрация: 14.02.2011
Сообщений: 22,822
11.05.2018, 21:11 13
Цитата Сообщение от Nishen Посмотреть сообщение
ValeryS, вы хоть раз в своих задачах использовали массив на 10000000 элементов?
а прикинь размер массива изображения в формате TIFFс разрешением 4000х4000
то что обычно не используется не значит что не существует
1
Диссидент
Эксперт C
26948 / 16829 / 3698
Регистрация: 24.12.2010
Сообщений: 37,767
11.05.2018, 21:30 14
Цитата Сообщение от Nishen Посмотреть сообщение
вы хоть раз в своих задачах использовали массив на 10000000 элементов?
Понимаете, тут речь идет даже не о конкретной учебной задачке, а о подходе к программированию. Есть ли в мягком месте такой гвоздь - оптимизация кода, или нет. Ежели нет, то вот сумму всех чисел, стоящих на позициях кратных 100 считаем так
C++
1
2
for(int i=0; i<N; i++)
  if (i%100==0) s += A[i];
Ну а если гвоздь все-таки присутствует, тогда по-другому.
Что касается реальной жизни, то подобная задача может быть подзадачей, и к функции, ее вычисляющей, может быть 10000 обращений в цикле. Перемножив, можно получить неплохое число
Я к тому, что даже в таких как-бы мелочах надо приучаться немножко думать...
1
Manowar
11.05.2018, 21:38
  #15

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Я к тому, что даже в таких как-бы мелочах надо приучаться немножко думать...
Байт, а ведь и не поспоришь.

Решили как-то сравнить прапорщика с обезьяной. посадили их в две одинаковые комнаты с деревом и бананом на дереве. Обезьяна потрясла, потрясла дерево - банан не падает. видит палка в углу стоит, зацепила банан палкой, сидит и жрёт довольная.

Прапорщик же трясёт пальму трясёт. трясёт трясёт. час трясёт два трясёт. Ему говорят: "товарищ прапорщик, ну вы подумайте немного", на что тот отвечает: "да х...и тут думать! трясти надо!"

0
Модератор
Эксперт по электронике
8729 / 6522 / 884
Регистрация: 14.02.2011
Сообщений: 22,822
12.05.2018, 07:06 16
Славуся, вот твой подход без использования if
C++
1
2
3
4
5
for(int i = 0; i < n; i++)
            {
                avg += a[i]*((i % 2) != 0);
                k++;
            }
но это так, выпендрежки
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2018, 07:06
Помогаю со студенческими работами здесь

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

Вычисление среднего арифметического значения элементов массива
1.Ввод массива целых чисел. 2.Вывод массива в строку. 3.Вычисление среднего арифметического...

Вычисление среднего арифметического значения положительных элементов массива
пожалуйста, доведите программу до ума!желательно с комментариями, что бы разобраться! Заранее...

Посчитать количество элементов, отличающихся от среднего арифметического значения элементов массива
Подсчитать количество элементов массива Р (60), отличающихся от среднего арифметического значения...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru