Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2012, 21:42   #1
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию Среднее арифметическое значение функции

Вот код
Код:
#include <stdio.h>
#include <conio.h>
const int N = 5;
int srednee(int mas[], int N)
{int i, sr=0;
for (i=0; i<N; i++)
{sr+=mas[i];
return (float(sr/N));
}

}
int main()
{int A[N];
for (int i=0;i<N;i++)
	scanf("%d", &A[i]);
printf("\n");
int sred=srednee(A,N);
printf("srednee arifmiti4eskoe zna4enie = %d", srednee);
getch();
return 0;
}


ввожу 1 2 3 4 5
выдает бредовое большое число
в чем ошибка?
sidestep вне форума Ответить с цитированием
Старый 06.03.2012, 21:46   #2
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию

ошибка в названии
не функции, а массива
sidestep вне форума Ответить с цитированием
Старый 06.03.2012, 23:29   #3
mrNobody
 
Аватар для mrNobody
 
Регистрация: 24.07.2011
Сообщений: 5
По умолчанию

Для начала, странный фрагмент кода:

Код:
for (i=0; i<N; i++)
{
  sr+=mas[i];
  return (float(sr/N));
}
настоятельно рекомендую вытащить return из тела цикла, иначе функция будет возвращать просто деление первого элемента массива на его длину (N)

Кроме того, взгляните по внимательнее на строку
Код:
printf("srednee arifmiti4eskoe zna4enie = %d", srednee);
Подозреваю, что вторым параметром вы хотели передать не srednee (указатель на функцию), а sred - то, что вам вернула функция (строкой выше).

И ещё кое-что... наверное лучше, чтобы функция srednee возвращала тип float или double, иначе вы теряете в точности, причём значительно. К тому же, на это намекает ваша же строка кода:
Код:
return (float(sr/N));
До тех пор пока srednee возвращает int, такая типизация в ретёрне бессмысленна.
"Восемнадцать лет, пять месяцев и утро ещё одного дня прожила на свете Люба Шевцова."

Последний раз редактировалось mrNobody; 06.03.2012 в 23:37. Причина: Дополню
mrNobody вне форума Ответить с цитированием
Старый 07.03.2012, 15:58   #4
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию

Код:
int srednee(int mas[], int N)
{
   int i, sr=0;
   double otvet;

   for (i=0; i<N; i++)
         sr+=mas[i];

   otvet=(double)sr/N;
   return (otvet);
}

/* и на экран не то ты выводил. надо: */

int sred=srednee(A,N);
printf("srednee arifmiti4eskoe zna4enie = %d", sred);
попробуй так может.. чуть что помидорами не кидатся, недавно учу язык
Я могу, Я хочу, Я буду!
ArmanPrestige вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Найти среднее арифметическое положительных и среднее арифметическое отрицательных чисел, минимальное по модулю число. Юрик 530 Помощь студентам 4 03.12.2011 16:26
среднее арифметическое значение элементов массива F(n) (Визуал Бейсик) Богдан Величко Помощь студентам 4 21.05.2011 18:54
C++ среднее значение или средне арифметическое Donatello Общие вопросы C/C++ 6 04.01.2011 02:47
как посчитать среднее арифметическое значение CraZZy RabbIt Общие вопросы Delphi 5 14.03.2009 13:59