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

Найти 1+2+3+...+n рекурсивно и итеративно - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ n>=a в степени k http://www.cyberforum.ru/cpp-beginners/thread162564.html
вот решил задачу таким образом: задача: Напишите программу, находящую для заданных числел n и k максимальное число a, такое, что ak≤ n решение: #include <iostream> #include <cmath> using...
C++ Найти сумму элементов массива, которые больше своих "соседей" справа и слева В массиве из N элементов найти сумму тех элементов, которые больше своих "соседей" справа и слева. http://www.cyberforum.ru/cpp-beginners/thread162561.html
C++ OpenMP, создание потоков
В инете нашел много примеров по распараллеливание циклов, но никак не могу понять, как просто написать чтобы конкретная функция выполнялась в отдельном потоке? int main() { #pragma omp parallel...
Класс комплексных чисел C++
Ребят, помогите пожалуйста написать класс комплексных чисел... Я плохо разбираюсь в объектно-ориентированном программировании, учусь, покажите плиз!
C++ Программа работы с дробями (консоль) http://www.cyberforum.ru/cpp-beginners/thread162536.html
Десятичные дроби. Нужно чтобы программа умела: делить, умножать, складывать и вычитать и построена обязательно на классах, код не мой и разобраться в нём довольно трудно, плюс "консоль" что не мой...
C++ Наследование, классы, хеширование есть у кого простые задачи на эти темы? у меня задания нет, нужны любые... по поиску полазил- не нашёл ничего лёгкого=( подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
01.09.2010, 17:12
Nameless One, а две функции для того, чтобы в вызывающую только одно значение передавать?

Цитата Сообщение от NightmareZ Посмотреть сообщение
Например?
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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
 
class Sum {
        unsigned int nResult;
public:
        Sum() : nResult(0) {}
        Sum(unsigned int start){
                for ( nResult = 0; start; nResult += start-- )
                        ;
        }
        bool operator () (int test){
            return test > nResult;
        }
 
        friend std::ostream & operator << (std::ostream & ost, const Sum & sum){
                ost << sum.nResult;
                return ost;
        }
};
 
int main(){
        const size_t size = 5;
        int arr[size] = { 8, 12, 5, 14, 21 };
        std::vector<int> vec(arr, arr + size);
        int num = 5;
        Sum sum(num);
        std::vector<int>::iterator fnd;
 
        std::cout << "Array:\n";
        std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
        std::cout << "\nGiven number:\n" << num << std::endl;
        std::cout << "Sum of numbers from 1 to " << num << " = " << sum << std::endl;
        if ( ( fnd = std::find_if(vec.begin(), vec.end(), sum) ) == vec.end() )
            std::cout << "All elements in array less than it." << std::endl;
        else
            std::cout << "First element in array greater it is " << *fnd << std::endl;
 
        return 0;
}
Цитата Сообщение от NightmareZ Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
template<int N>
struct Sum
{
    enum { value = N + Sum<N-1>::value };
};
 
template<>
struct Sum<1>
{
    enum { value = 1 };
};
 
int main()
{
    const int sum = Sum<5>::value;
    std::cout << sum;
}
Долго пытался этому практическое применение придумать. Кроме объявления в программе 100500 тысяч констант, представляющих суммы от 1 до исходных 100500 тысяч чисел так и не придумал. Да и в том случае проще заголовочный файл создать например вот таким макаром:
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
#include <stdio.h>
#include <stdlib.h>
 
#define SUM(a) ({ int d = a; int s = 0; while ( d ) s += d--; (s); })
 
#define IN_FILE "constants.txt"
#define OUT_FILE "constants.h"
 
int main(void){
    int val;
    FILE * fin, * fout;
 
    if ( ( fin = fopen(IN_FILE, "r") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    if ( ( fout = fopen(OUT_FILE, "w") ) == NULL ){
        perror("fopen");
        exit(1);
    }
 
    fprintf(fout, "#ifndef _CONSTANTS_H_\n#define _CONSTANTS_H_ 1\n");
    while ( fscanf(fin, "%d", &val) == 1 )
        fprintf(fout, "#define SUM%d %d\n", val, SUM(val));
 
    fprintf(fout, "#endif\n");
 
    fclose(fin);
    fclose(fout);
 
    exit(0);
}
а то мало ли - ещё раз с другими числами понадобится - и чё, блин, делать? Лезть в исходники, править циферки и заново компилировать?
Короче, думаю, что в данном случае всё это метапрограммирование - голый выпендрёж и в принципе нафиг не нужно. Поправьте, если чего-то не понимаю...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru