Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


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

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

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

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

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

Классически массив передается по указателю, но т.к. у Вас 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 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программу массивы (C++) - Даны два массива, скопировать эти массивы в 3-й результирующий (размером 10 элементов) так, что Саша1990 Помощь студентам 1 02.02.2015 16:03
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 20:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 15:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 18:51
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12