0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 13
1

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

26.12.2014, 13:38. Показов 2845. Ответов 4
Метки нет (Все метки)

Написать функцию prost с переменным числом параметров, которая находит все простые числа из нескольких интервалов. Интервалы задаются границами А и В. Написать вызывающую функцию main, которая обращается к функции prost не менее трех раз с количеством параметров 3, 5, 6.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2014, 13:38
Ответы с готовыми решениями:

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

Функции с переменным числом параметров
#include <iostream.h> #include <conio.h> int max(int k,...) { int *p=&k; int maxi; ...

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

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

4
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
26.12.2014, 13:59 2
RiKko_75, чем не нравится перегрузка функции?
0
99 / 81 / 93
Регистрация: 03.12.2013
Сообщений: 217
26.12.2014, 15:21 3
Держы)
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
#include <iostream>
 
using namespace std;
 
void prost(int a, ...)
{
    int *p = &a;        
 
    while (*(p+1))                                  //цыкл будет проходить пока не обойдет все заданые интервалы
    {
        for (int i = (*p); i <= *(p + 1); i++)      //переменной присваиваем нижнее значение интервала
        {                                           //далее увеличиваем его на 1 пока не дойдем к верху интервала
            short k = 0;                                //переменная для контроля простое ли число
            for (int j = 2; j <= i; j++)
            {
                if (i % j == 0)                     //если число делиться нацело на другое число в интервале от 2
                    k++;                            //до того же,что и это число, то переменную увеличиваем
                if (k > 1)                          //если есть больше 1 числа что делиться нацело на взятое нами
                    break;                          //тогда число не являэться простым(на 1 делиться все так что не проверяем)
            }
            if (k == 1)                             //если простое - вывести
                cout << i << " ";
        }
        p += 2;                                     //какбы проскакиваем одно значение,что бы получить нижний интервал следующей строки
        cout << endl;                               //а не верхний предыдущей
    }
}
int main()
{
    prost(2, 20, 11, 21,1,32);
    cout << endl << "------------------------------------------" << endl;
    prost(8, 13, 5, 29, 6, 11, 3, 5, 25, 43);
    cout << endl << "------------------------------------------" << endl;
    prost(1, 10, 4, 18, 2, 7, 3, 22, 11, 24, 7, 9, 11, 19, 8, 14);
 
    
 
    return 0;
}
0
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.12.2014, 17:58 4
В порядке общего бреда:

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
43
44
45
46
47
48
#include <iostream>
#include <utility>
#include <type_traits>
 
constexpr auto is_integer_range() -> bool;
 
template<typename T>
constexpr auto is_integer_range(const T& range) ->
decltype(range.first, range.second, std::is_integral<decltype(range.first)>::value,
      std::is_integral<decltype(range.second)>::value, true);
 
template<typename T>
typename std::enable_if<std::is_integral<T>::value, bool>::type is_simple(const T& arg)
{
   if (arg <= 0 || arg == 1) return false;
   for (int i = 2; i <= arg / 2; ++i)
   {
      if (arg % i == 0)
      {
         return false;
      }
   }
   return true;
}
 
auto calculate() -> void
{
}
 
template<typename T, typename... Args>
auto calculate(const T& arg, const Args&... args) ->
decltype(is_integer_range(arg), void())
{
   std::cout << "process range: " << arg.first << " " << arg.second << std::endl;
   for (typename T::first_type b = arg.first; b != arg.second; ++b)
   {
      if (is_simple(b))
      {
         std::cout << "Simple: " << b << std::endl;
      }
   }
   calculate(args...);
}
 
int main()
{
   calculate(std::make_pair(1, 100), std::make_pair(50, 150), std::make_pair(1, 10));
}
1
1456 / 793 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
26.12.2014, 18:34 5

Не по теме:

ForEveR, а зачем здесь передавать аргументы decltype через запятую?

C++
1
decltype(is_integer_range(arg), void())
всегда же void будет выводится.



Добавлено через 7 минут

Не по теме:

А, все понял - для ошибки компиляции.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2014, 18:34
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru