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

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

09.04.2017, 14:22. Просмотров 392. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2017, 14:22
Ответы с готовыми решениями:

Функция с переменным количеством параметров
Почему выводит всякую ерунду #include &lt;stdio.h&gt; #include &quot;stdio.h&quot; #include...

Функция с переменным количеством параметров
Привет всем. Возникла проблема с указателем в функции. Стоит задача: создать...

Разработать функцию с переменным количеством параметров
Разработать функцию с переменным количеством параметров. Для извлечения...

Написать функцию с переменным количеством параметров
Написать функцию NOK с переменным количеством параметров которая находит...

Разработать функцию с переменным количеством параметров
Добрый день, уважаемые программисты! Прошу помочь в поиске ошибки задание:...

3
shvyrevvg
723 / 539 / 270
Регистрация: 12.05.2016
Сообщений: 1,567
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
Bot_01
0 / 0 / 0
Регистрация: 21.02.2017
Сообщений: 23
09.04.2017, 15:42  [ТС] 3
shvyrevvg, вылезает ряд ошибок связанных с realloc
IntelliSense: значение типа "void *" нельзя использовать для инициализации сущности типа "double *"
IntelliSense: значение типа "void *" нельзя присвоить сущности типа "double *"
0
shvyrevvg
723 / 539 / 270
Регистрация: 12.05.2016
Сообщений: 1,567
09.04.2017, 15:49 4
Bot_01, так надо c компилятором компилировать, а не c++. Перед realloc поставьте (double*).
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2017, 15:49

Разработать функцию с переменным количеством параметров для подсчета вещественных чисел
День добрый! Задание: Целая переменная - счетчик, затем последовательность...

Функции с переменным числом параметров
Ребят, всем привет. У меня к вам небольшой вопрос. Я ищу теоретический материал...

Ошибка в функции с переменным числом параметров
В функции Тask у меня не работает второй цикл, не могу понять как исправить....


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

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

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