Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
/*
Найти среднее геометрическое положительных элементов массива a[i],
причем все элементы вводятся с клавы и вводить нужно при проверке и отрицательные и положительные,
а среднее геометрическое чтобы только положительных считалось+через функцию надо сделать используя только вот эти библиотеки
*/
 
float avg_geom()
{    
    size_t nArraySize; // количество элементов в массива
 
    // ввод количества элеметов в массиве
    printf("Enter number of elements: ");
    scanf("%d", &nArraySize);
 
    // инициализация массива
    float* arr = (float*) malloc(nArraySize * sizeof(float));
    if (arr == NULL)
    {
        puts("Can't allocate memory for array");
        return (0.0f);
    }
 
    // ввод данных
    for(size_t i=0; i<nArraySize; i++)
    {
        printf("Enter %d-th element: ", i);
        scanf("%f", &arr[i]);
    }
 
    // вычисление среднего геометрического
    size_t positiveCount = 0; // количество положительных элементов
    float avg = 1.0f;    // среднее геометрическое
    float eps = 0.0001f; // ошибка вычисления чисел с плавающей запятой
    for (size_t i=0; i<nArraySize; i++)
    {
        // учитываем только положительные числа
        if (arr[i] > eps)
        {
            positiveCount++;
            avg *= arr[i];
        }
    }
 
    // завершающая стадия вычисления
    if (positiveCount > 0)
    {
        avg = pow(avg, 1.0f / (float) positiveCount);
    }
 
    // освобождение памяти
    free(arr);
 
    // возвращение результата
    return (avg);
}

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 17:18 29-03-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru