Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
2 / 2 / 0
Регистрация: 12.12.2013
Сообщений: 83

Алгоритм, который находит и выводит среднее арифметическое всех элементов массива, имеющих нечётное значение

06.05.2014, 15:18. Показов 5100. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит среднее арифметическое всех элементов массива, имеющих нечётное значение.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2014, 15:18
Ответы с готовыми решениями:

Посчитать среднее арифметическое значение всех отрицательное элементов массива
Разработать алгоритм который дозволяэ в одномерном масивидийсних числе длиной N посчитать среднее арифметическое значение всех...

Массивы. Среднее арифметическое всех элементов массива, имеющих нечётное значение
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 1000. Опишите на русском языке или на одном из...

Найти среднее арифметическое всех элементов массива, имеющих нечётное значение
2) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 1000. Найдите и выводите среднее...

38
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
06.05.2014, 16:56
На C#
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
using System;
 
namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args) {
            // Инициализация массива
            int[] array = new int[30];
            // Заполнение массива случайными числами от 0 до 1000
            var randomGen = new Random();
            for (int i = 0; i < array.Length; i++) {
                array[i] = randomGen.Next(1001);
            }
 
            int sum = 0;
            int count = 0;
            foreach (int i in array) {
                if (i % 2 != 0) {
                    sum += i;  // Все нечётные числа складываются
                    count++;   // Их количество считается
                }
            }
 
            Console.WriteLine("Ср. арифм. нечётных: {0}", (double)sum / count);
        }
    }
}
Если возникнут вопросы по коду - спрашивайте. Могу переписать на Python, Java, VB.NET или Си
1
2 / 2 / 0
Регистрация: 12.12.2013
Сообщений: 83
06.05.2014, 17:30  [ТС]
Можно на VB.NET. Так как мы его сейчас проходим
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
06.05.2014, 18:10
Лучший ответ Сообщение было отмечено Ashmotev как решение

Решение

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Module Module1
    Sub Main()
        Dim array(29) As Integer
        Dim randomGen = New Random()
        For i = 0 To array.Length - 1
            array(i) = randomGen.Next(1001)
        Next
 
        Dim sum As Double = 0D
        Dim count = 0
        For Each i In array
            If Not (i Mod 2 = 0) Then
                sum += i
                count += 1
            End If
        Next
 
        Console.WriteLine("Ср. арифм. нечётных: {0}", sum / count)
    End Sub
End Module
2
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
07.05.2014, 13:20
Ради личного интереса переписал на Java :
Java
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
package ru.ildwine;
 
import java.util.Random;
 
public class Program {
    public static void main(String[] args) {
        //Инициализация массива
        Random randomGen = new Random();        
        int[] array = new int[30];
        // Заполнение массива случайными числами от 0 до 1000
        for (int i = 0; i < array.length; i++) {
            array[i] = randomGen.nextInt(1001); 
            System.out.print(array[i] + " ");
        }
        System.out.println();
        int sum = 0;
        int count = 0;
        for (int i : array) {
            if (i % 2 != 0) {
                sum += i; //Все нечетные числа складываются
                count++; //Их кол-во считается
            }
        }
        System.out.println("Ср. арифм. нечетных: " + (double)sum / count);
    }    
}
1
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
17.05.2014, 23:02
А вот и Паскаль.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const n=30;
var a:array[1..n] of Integer;
i,k:Integer;
s:Real;
begin
k:=0;
s:=0;
Writeln('Массив:');
Randomize;
for i:=1 to n do
 begin
  a[i]:=Random(1001);
  Write(a[i],' ');
  if odd(a[i]) then 
   begin
    s:=s+a[i];
    inc(k);
   end;
 end;
s:=s/k;
Writeln;
Writeln('Среднее значение нечетных элементов:',s:0:4);
Readln;
end.
Кто б еще на С++ для полной коллекции написал?
0
354 / 135 / 28
Регистрация: 16.12.2012
Сообщений: 607
Записей в блоге: 1
18.05.2014, 17:31
Цитата Сообщение от Новичок Посмотреть сообщение
А вот и Паскаль.
Можно красивше..

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses Math;
var
    n, i, k : Integer;
    a : array of Int64;
begin
    ReadLn(n); SetLength(a, n-1);
    k := 0;
    for i := 0 to Length(a) do begin
        a[i] := Random(1001);
        Write(i, ' ', a[i], ' ');
        a[k] := a[i]; Inc(k, Ord(Odd(a[i])))
    end;
    
    WriteLn(SumInt(a[0..k-1])/k : 0 : 5)
end.
0
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
03.01.2015, 23:12
Цитата Сообщение от Новичок Посмотреть сообщение
Кто б еще на С++ для полной коллекции написал?
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
#include <iostream>
#include <time.h>
#include <stdlib.h> 
 
using namespace std;
 
int main() {
    setlocale(LC_ALL,"Russian");
    srand(time(0));
    // èíèöèàëèçàöèÿ ìàññèâà
    int array[30];
    // çàïîëíåíèå ìàññèâà ñëè÷àéíûìè ÷èñëàìè îò 0 äî 1000
    for (int i = 0; i < 30; i++) array[i] = rand() % 1000 + 1;
    int sum = 0;
    int count = 0;
    for (int i = 0; i < 30; i++) {
        if (i % 2 != 0) {
            sum += i;  // âñå íå÷åòíûå ÷èñëà ñêëàäûâàáòñÿ
            count++;   // èõ êîë-âî ñ÷èòàåòñÿ
        }
    }
    double res = (double)sum / count;
    cout << "ñðåäíåå àðèôì. íå÷åòíûõ: " << res << endl; 
    return 0;           
}
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,990
Записей в блоге: 32
04.01.2015, 21:55
Чтож так много букв то...
Цитата Сообщение от Ashmotev Посмотреть сообщение
или на одном из языков программирования
Haskell
1
res = (\l -> sum l `div` (length l)).filter odd
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
04.01.2015, 21:58
_Ivana, опять реклама Haskell? И что что букв мало? Сейчас все возьмут, кто на С++, кто на C#, кто на Java и пойдут на Haskell писать...
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,990
Записей в блоге: 32
04.01.2015, 22:02
Новичок, а вы не можете больше терпеть этот произвол и несправедливость? Если у вас есть какие-то претензии, можете изложить их в письменном виде и направить в комитет по защите прав участников форума
0
354 / 135 / 28
Регистрация: 16.12.2012
Сообщений: 607
Записей в блоге: 1
04.01.2015, 22:16
_Ivana, Вы не правильно интерпретировали слова Новичка. Соль в том, чтобы не сказать, что писать код, попутно убивая смысл, не очень кошерно, а в том, что Новичок, как истинный альтруист, заботится, чтобы у Вас, как у высококлассного специалиста по уничтожению читабельности кода, не прибавилось конкурентов. Если Вас что-то не устраивает, то можете изложить свои претензии в письменном вид и направить их в комитет по защите прав участников форума, лишенных понимать фразы с двойным смыслом

P.S.
Code
1
2
3
4
if (i % 2 != 0) {
            sum += i;  // все нечетные числа складывабтся
            count++;   // их кол-во считается
        }
Фи
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
04.01.2015, 22:28
_Ivana, покажите свой код всем кто не знает этот ЯП , пусть попробуют разгадать ребус...
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,990
Записей в блоге: 32
05.01.2015, 00:14
А что, это мысль
Haskell
1
res' l = (`div` sum c).sum.zipWith (*) l $ c where c = map (fromEnum.not.odd) l
Добавлено через 12 минут
Haskell
1
res'' = (\(s,n)->div s n).foldr (\x (s,n) -> let z=1-mod x 2 in (s+z*x,n+z)) (0,0)
Добавлено через 13 минут
Haskell
1
res''' = (\[s,n]->div s n).foldr1 (zipWith (+)).map (\x -> let z=1-mod x 2 in [z*x,z])
Добавлено через 16 минут
Haskell
1
res_ l = (`div` sum c).sum.map (\(s,n)->s*n).zip l $ c where c = map ((1-).flip mod 2) l
Для начала думаю хватит. А там можем продолжить, если будет интерес.

Добавлено через 4 минуты
Блин, четные обрабатывал. Тогда все odd заменить на even и убрать 1-.
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
05.01.2015, 01:19
_Ivana, как говорит мой знакомый,
Бред и ересь!
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
05.01.2015, 14:27
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#coding: utf-8
 
arr = []
 
rnd = Random.new
(1..30).each do |i|
  arr[i] = rnd.rand(50)
end
 
 
summ = 0
count = 0
 
(1..30).each do |i|
  if arr[i] % 2 == 1
    summ += arr[i]
    count += 1
  end
end
 
print "Среднее арифметическое = #{summ / count}"
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
05.01.2015, 14:29
FraidZZ, вот тут можно разобрать код.

Добавлено через 29 секунд
Не то что код _Ivana.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
05.01.2015, 15:13
Новичок, ну в данном случае, мой пример - празднество г-кода.
Уж лучше тогда так (что, впрочем, тоже далеко от идеала...)
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#coding: utf-8
 
arr = []
sum = 0
count = 0
 
rnd = Random.new
(0..29).each do |i|
  arr[i] = rnd.rand(50)
end
 
arr.reject do |i| 
  i.even?
end.each do |i|
  sum += i
  count += 1
end
 
print "Среднее арифметическое = #{sum.to_f / count.to_f}\n"
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
05.01.2015, 16:51
На Erlang:
Code
1
2
3
4
5
6
7
Arr=[random:uniform(1000) || _ <- lists:seq(1, 30)].
N=lists:filter(fun(X)->X rem 2 =/=0 end,Arr).
R=lists:sum(N)/length(N).% используя библиотечную функцию
R1=fun Sum([])->0;Sum([H|T])->H+Sum(T) end (N)/length(N).% с использованием доп.переменной
R2=fun Sum([])->0;
Sum([H|T])when H rem 2=/=0->H+Sum(T);
Sum([H|T])->Sum(T) end (Arr)/length(N).% можно без доп.переменной
3
Заблокирован
05.01.2015, 16:59
Как вариант:

C#
1
2
3
4
5
6
7
           
 Random rand = new Random();
            Console.WriteLine(Enumerable.Range(0, 1000)
                .OrderBy(x => rand.Next())
                .Take(30)
                .Where(y => y % 2 != 0)
                .Average());
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.01.2015, 16:59
Помогаю со студенческими работами здесь

Найдите среднее арифметическое элементов матрицы, имеющих нечётное значение
Тема: Двумерные числовые массивы. Указание: Заполните двумерный числовой массив B(9,9) случайными целыми числами в интервале . Выведите...

Подсчитать среднее арифметическое элементов массива. имеющее нечётное значение
Дан массив из 30 элементов.Элементы принимают значения от 0 до 1000.Как подсчитать среднее арифметическое элементов имеющее нечётное...

Алгоритм поиска количества элементов одномерного массива больших, чем среднее арифметическое значение всех
7. Алгоритм поиска количества элементов одномерного мас- сива больших, чем среднее арифметическое значение всех элементов массива.

Найти среднее арифметическое всех элементов массива х и номера элементов, имеющих минимальное и максимальное значения
Сгенерировать массив из 18 элементов случайных чисел от 0 до 100. Вывести массив на экран в три строки,по 6 элементов в каждой строке....

Найти среднее арифметическое элементов массива, имеющих нечетное значение
Дан массив А(25) на промежутке -20, 10. Найти среднее арифметическое элементов, имеющих несет ное значение. Написать алгоритм к программе.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru