Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 21.02.2017
Сообщений: 23
1

Возвращение массива в функции с переменным количеством параметров

09.04.2017, 14:22. Показов 632. Ответов 3
Метки нет (Все метки)

задание
Пoследoвaтeльнocть вещeствeнныx пoлoжитeльныx пеpeмeнных, ограничeннaя пeремeннoй co знaчeниeм -1. Функция вoзврaщaeт динaмичecкий мaссив, сoдержaщий знaчeния этих пeремeнныx.

То есть, как я понимаю, нужно переписать все входящие параметры в отдельный динамический массив. а после возвратить его (return массив). Но что-то я делаю не так, т.к. программа не работает.

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
#include <stdio.h>
#include <stdlib.h>
 
double max(double a, ...)
{
    double *p = &a; /* указатель на значение параметра */
    double *str = (double*)malloc(1024 * sizeof(double));
 
    while (*p != -1)
    {
        *str = *p;  /* перезаписываем в массив */
 
        str++;      /*переходим к следующему индексу в массиве*/
        p++;        /* переходим к следующемк параметру */
    }
 
    /* возвращаем переписанные значенияв массиве*/
    return *str;
}
 
void main()
{
 
    printf("result = %.2f\n\n", max(100.5, 25.5, 30.76, 9.1, 22.45));
 
    system("pause");
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2017, 14:22
Ответы с готовыми решениями:

функции с переменным количеством параметров
для некоторого класса необходимо чтобы его конструктор принимал переменное количество параметров....

Функции с переменным количеством параметров
Прописываю в заголовке: void __fastcall TestClass::Test(int x, ...); компилятор выдает ошибку:...

Функции по переменным количеством параметров
нужна помощь по работе с такой функцией .. Искал в книге Страуструпа, не понял пример, помогите,...

Массив в функции с переменным количеством параметров
Добрый день. Не могу разобраться, как в функции с переменным количеством параметров сделать...

3
1746 / 1003 / 435
Регистрация: 12.05.2016
Сообщений: 2,492
09.04.2017, 14:38 2
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//gcc 5.4.0
 
#include  <stdio.h>
#include  <stdlib.h>
#include  <stdarg.h>
 
#define END_PARAM -1.0
 
double * f(double d, ...)
{
    va_list argptr;
 
    va_start (argptr, d);
    
    size_t i = 0;
    
    double *arr = realloc(NULL, sizeof(double));
    
    arr[i++] = d;
    
    while ((d = va_arg(argptr,double)) != END_PARAM) {
        arr = realloc(arr, sizeof(double) * (i+1));
        arr[i++] = d;
    }
    
    arr = realloc(arr, sizeof(double) * (i+1));
    arr[i] = END_PARAM;
    
    va_end(argptr);
    
    return arr;
}
 
int main(void)
{
    double *arr = f(100.5, 25.5, 30.76, 9.1, 22.45, END_PARAM);
    
    for (size_t i=0; arr[i] != END_PARAM; i++)
        printf("%lf ", arr[i]);
    
    return 0;
}
1
0 / 0 / 0
Регистрация: 21.02.2017
Сообщений: 23
09.04.2017, 15:42  [ТС] 3
shvyrevvg, вылезает ряд ошибок связанных с realloc
IntelliSense: значение типа "void *" нельзя использовать для инициализации сущности типа "double *"
IntelliSense: значение типа "void *" нельзя присвоить сущности типа "double *"
0
1746 / 1003 / 435
Регистрация: 12.05.2016
Сообщений: 2,492
09.04.2017, 15:49 4
Bot_01, так надо c компилятором компилировать, а не c++. Перед realloc поставьте (double*).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2017, 15:49

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Функции с переменным количеством параметров в языке C ++
Реализовать функцию конкатенации (сцепления) произвольного количества C-строк с динамическим...

Шаблон функции с переменным количеством параметров и среднее арифметическое
Никак не могу придумать, как вычислить среднее арифметическое. Получилось найти сумму, а вот...

Функции с переменным количеством параметров, stdarg.h. Исправить код
Почему не работает? В итоге получается 0, а если в функции все что надо заменить с float на int, то...

Функция с переменным количеством параметров
Доброго времени суток! Я озадачился таким вопросом - как производится компиляция функций с...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.