Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LAans
1 / 1 / 0
Регистрация: 29.04.2010
Сообщений: 46
#1

Функции с переменным числом параметров - C++

10.01.2011, 00:59. Просмотров 852. Ответов 7
Метки нет (Все метки)

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
#include <iostream.h>
#include <conio.h>
 
int max(int k,...)
{
int *p=&k;
int maxi;
 
 
    for(;k!=0;k--)
    {
        if (maxi<(*p))
        {
            maxi=(*p);
        }
        p++;
    }
return maxi;
}
 
void main()
{
clrscr();
cout << "\nmax (8, 3, 5) = " << max (8, 3, 5);
cout << "\nmax (2, 9, 6) = "<< max (2, 9, 6);
cout << "\nmax (7, 4, 10, 11) = "<< max (7, 4, 10, 11);
getch();
}
подскажите, пожалуйста, в чем проблема ?

результат программы
max (8, 3, 5) = 335
max (2, 9, 6) = 9
max (7, 4, 10, 11) = 335
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2011, 00:59     Функции с переменным числом параметров
Посмотрите здесь:

Функции с переменным числом параметров - C++
Функция должна принимать переменное количество аргументов, последним из которых является 0, и скажем просто их печатает. Делаю по примеру...

Функции с переменным числом параметров - C++
Подскажите как работают функции с переменным числом параметров, как их составлять. Почитал немного в инете про это, кажется только больше...

Функции с переменным числом параметров - C++
Прошу помочь знатоков С++ в решении задачи, т.к. только начал изучать данный язык. Решить задачу, используя функции с переменным...

Функции с переменным числом параметров - C++
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле: S=a1*a2+a3*a4+a5*a6+. . . . . ...

Функции с переменным числом параметров - C++
Написать функцию max с переменным числом параметров, которая находит минимальное из чисел типа int или из чисел типа double, тип параметров...

Функции с переменным числом параметров - C++
Добрый день, уважаемые знатоки С++! Подскажите пожалуйста, что не правильно в моем коде? Необходимо написать функцию с переменным...

Функции с переменным числом параметров - C++
Такая проблема есть код который должен выводить поочередно цифры, 1 2 3 4 5, я пытаюсь программировать в dev c++ и компилятор выводит 1 0 2...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
10.01.2011, 01:07     Функции с переменным числом параметров #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
/* va_start example */
#include <stdio.h>
#include <stdarg.h>
 
void PrintFloats ( int amount, ...)
{
  int i;
  double val;
  printf ("Floats passed: ");
  va_list vl;
  va_start(vl,amount);
  for (i=0;i<amount;i++)
  {
    val=va_arg(vl,double);
    printf ("\t%.2f",val);
  }
  va_end(vl);
  printf ("\n");
}
 
int main ()
{
  PrintFloats (3,3.14159,2.71828,1.41421);
  return 0;
}
LAans
1 / 1 / 0
Регистрация: 29.04.2010
Сообщений: 46
10.01.2011, 01:35  [ТС]     Функции с переменным числом параметров #3
спасибо, конечно
но пока не могу понять чем этот пример может помочь

мне надо сделать с помощью указателей и ссылок , я так понимаю в них проблема что выводит такой результат , а пример сделан без их использования (
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
10.01.2011, 01:48     Функции с переменным числом параметров #4
Цитата Сообщение от LAans Посмотреть сообщение
не могу понять чем этот пример может помочь
сочувствую

то, что вы пишите - это Си вариант. а в Си, как известно, единственный способ получить доступ к списку аргументов - использовать va_start, va_list, va_arg, va_end.

так что курите, батенька.

Добавлено через 1 минуту
вам случаем не массив в функцию передавать нужно?
Байт
Эксперт C
15676 / 10003 / 1502
Регистрация: 24.12.2010
Сообщений: 18,792
10.01.2011, 02:57     Функции с переменным числом параметров #5
LAans, в твоем коде нет начального присвоения maxi
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
10.01.2011, 03:22     Функции с переменным числом параметров #6
niXman, Правда единственный? Серьезно?
Ммм... Но честно говоря не знаю как на это будет реагировать Си. На codepad.org реагирует странно


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
void foo(int t,...)
{
    int* p=&t;
    while(*(p) != 0)
        printf("%d\n", *(p++));
}
 
int main(void)
{
    foo(1,2,3,4,5,6,7,0);
    return 0;
}
G-Cat
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
10.01.2011, 03:25     Функции с переменным числом параметров #7
niXman, серьёзно, батенька, Вы что то напутали)
Вот мой вариант...сто лет в C++ (а тем более в его подмножестве C) не практиковался)))

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
#include <iostream>
using namespace::std;
 
int max(int k, ...) {   
    int amount = k; /* первый аргумент нашей функции - количество
                       передаваемых в неё аргументов */
    
    // проверка количества аргументов                  
    if(k < 1) {
      cout << "Usage: max( number_of_arguments, arg1, arg2, ... [argN] )" << endl;
      return 0;
    }
                       
    int *p = &k;
    p++; // указываем на первый аргумент, после аргумента - количества
    
    int maxi = *p; /* по умалчанию присваиваем максимальное
                      значение - первый из всех аргументов */
        
    for(int i = 0; i < amount; i++) {
      if(maxi < *p) {
        maxi = *p;
      }
      
      p++;
    }
    
    return maxi;
}
 
int main() {
  cout << "max (8, 3, 5) = " << max(3, 8, 3, 5) << endl;
  cout << "max (2, 9, 6) = "<< max(0) << endl;
  cout << "max (7, 4, 10, 11) = "<< max(4, 7, 4, 10, 11) << endl;
  
  return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2011, 12:14     Функции с переменным числом параметров
Еще ссылки по теме:

Функции с переменным числом параметров - C++
Написать функцию prost с переменным числом параметров, которая находит все простые числа из нескольких интервалов. Интервалы задаются...

Функции с переменным числом параметров - C++
функции с переменным числом параметров в качестве параметра форматная строка,как задать это дело в Cи и что можно сказать преподу

Функции с переменным числом параметров - C++
помогите доработать пожалуйсто Написать функцию kvadr с переменным числом параметров, которая определяет количество чисел,...

Работа функции с переменным числом параметров - C++
Добрый вечер! Есть функция создающая квадратную матрицу, по числу параметров и самим элементам. Опущу все проверки и другое, не важное...

Поддерживает ли текущий стандарт функции с переменным числом параметров? - C++
Я читал в книге Герберта Шилдта «C++. Полный справочник», что C++ поддерживает функции с переменным числом параметров, но в Сети я нашёл...


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

Или воспользуйтесь поиском по форуму:
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
10.01.2011, 12:14     Функции с переменным числом параметров #8
ForEveR, G-Cat, в данном случае вы правы. я всего дважды писал реализацию функции с переменным числом аргументов, и оба раза, как сказано в документации, с использованием va_start, va_list, va_arg, va_end.

но остается не ясным вопрос о переносимости такого кода.
Yandex
Объявления
10.01.2011, 12:14     Функции с переменным числом параметров
Ответ Создать тему
Опции темы

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