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

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

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

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

Купить рекламу на форуме 85 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2021, 04:13   #1
fdsdsdsdsfjfj
Новичок
Джуниор
 
Регистрация: 01.07.2021
Сообщений: 1
Сообщение Массивы

Здравствуйте. Помогите, пожалуйста, с заданием:
Как передать в функцию массив из трёх элементов и функция должна вернуть среднее значение.
fdsdsdsdsfjfj вне форума Ответить с цитированием
Старый 01.07.2021, 17:16   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 667
По умолчанию

Классически массив передается по указателю, но т.к. у Вас 3 элемента, то можно и по значениям.
Передача по указателю
Код:
double Func(int *s, int n)
{
    //s - массив
    //n - число элементов массива
    double SrAr;    
    int i, U = 0;

    SrAr = (double)(s[0] + s[1] + s[2])/3;
    return SrAr;

    /*//или так
    for(i = 0; i < 3; i++)
        U += s[i];
    SrAr = (double)U/3;
    return SrAr;
    */
}
Но для Билдера еще нужно добавить TForm1:: перед функцией и в заголовочнике ее заголовок прописать.
Cuprum5 вне форума Ответить с цитированием
Старый 13.08.2021, 14:13   #3
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Но для Билдера еще нужно добавить TForm1:: перед функцией и в заголовочнике ее заголовок прописать.
Нет. Функция не обязана быть членом класса формы. А вот как раз если просто так добавить TForm1::, то билдер будет ругаться. Тогда уж надо и в голову класса вносить.

Объявлено:
Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
int n)
и тут же сделано:
Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
SrAr = (double)(s[0] + s[1] + s[2])/3;
. Так делать нельзя. Или n и в цикле, или массив из фиксированного количества элементов. Но одномерный всё равно превратится в передачу по указателю, только без n. Но хоть формально в заголовке будет записано, что функция предназначена для трёх элементов. А если n, то перебирать индексы. И size_t, а не int. Ну и делить надо на 3.0, а приводить или числитель, или каждое слагаемое. Если привести частное, то оно так и останется фактически целым, точность будет соответствовать.

Последний раз редактировалось BDA; 13.08.2021 в 21:21.
taras-proger77 вне форума Ответить с цитированием