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

Рекурсия - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программы pascal переписать под c++ http://www.cyberforum.ru/cpp-beginners/thread631358.html
Доброго времени суток. вот последняя программа которую нужно сделать под c++ Я знаю парни я вам надоел уже :) Больше не буду вас мучать) Задание: В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов, с нечетными номерами; Сумма элементов массива, расположенных между первым и последним отрицательными элементами. Program Eto_konec; uses crt; var A :...
C++ Подскажите, как сделать сдвиг массива вправо для вставки нового элемента? // После каждого четного числа добавить число 0. const int n=10; int ar,k=n,t; for(int i=0;i<n;i++){ ar=rand()%10+1; cout<<ar<<"\t"; } cout<<endl<<endl; http://www.cyberforum.ru/cpp-beginners/thread631356.html
Проверка на корректность операции C++
Добрый день. Не знаю как лучше задать вопрос. Смысл идеи таков: Есть интерфейс типа данных (IVariable) и наследники от него, например: Number, Complex, Matrix. Необходимо реализовать функцию сложения Sum(IVariable a, IVariable b), так чтобы можно было определить возможность сложения и вернуть значение IVariable суммы чисел. Пример: #include <iostream> #include "Math"
C++ Матрицы. Бесконечный цикл. Проверка ввода
В конструкторе класса матриц пользователю предлагается выбрать ввода с клавиатуры или автоматически. При выборе ручного ввода возникает цикл непонятного характера. Вот фото консоли во вложении. Вот конструктор: Matrix::Matrix(int s, char type){ int i,j; char ch;
C++ Ссылка на ссылку http://www.cyberforum.ru/cpp-beginners/thread631318.html
Можно ли говорить, что t это ссылка на ссылку? int y=2; int &q=y; int& t = q;
C++ Программы pascal переписать под c++ Всем доброго времени суток помогите переписать программы под c++ Условие Дано натуральное число n, и действительное число x. Вычислить. program laba3_2; uses crt; var x,s:real; n,i:integer; подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
01.08.2012, 12:31     Рекурсия
Как то так
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <cmath>
#include <iostream>
using namespace std;
 
//ÔóГ*êöèÿ ïîëó÷Г*ГҐГІ ГЁ Г±Г·ГЁГІГ*ГҐГІ êîë-ГўГ® Г°Г*çðÿäîâ Г·ГЁГ±Г«Г*
//åñëè ïîä arr âûäåëåГ*Г* ГЇГ*ìÿòü ГІГ® Гў Г*ГҐГЈГ® Г§Г*Г*îñÿòüñÿ Г°Г*çðÿäû
int * splitDigit(int val, int *arr, int &n);
void rekursBinom(int pos, int *arr, int n, int k);
 
int main()
{
    int val = 0;
    int k   = 0;
    int n   = 0;//Áóäåò ñîäåðæГ*ГІГј ÷èñëî Г°Г*çðÿäîâ Г·ГЁГ±Г«Г*
    int *arr= 0;//ÓêГ*Г§Г*òåëü Г*Г* Г¬Г*Г±Г±ГЁГў Г± Г°Г*ççðÿäГ*ìè Г·ГЁГ±Г«Г*
    cout<<"Enter value(val): ";cin>>val;
    cout<<"Enter number(k) : ";cin>>k;
    //ÓçГ*Г*ëè ÷èñëî Г°Г*çðÿäîâ
    arr = splitDigit(val, arr, n);
    arr = new int[n];//Âûäåëèëè ГЇГ*ìÿòü ïîä Г¬Г*Г±Г±ГЁГў
    //Г‡Г*ГЇГЁГ±Г*ëè Г°Г*çðÿäû Гў Г¬Г*Г±Г±ГЁГў
    arr = splitDigit(val, arr, n);
    rekursBinom(0, arr, n, k);
    return 0;
}
 
int * splitDigit(int val, int *arr, int &n)
{
    if(val < 0)
        val *= -1;
    n = 1;//Г‚ ÷èñëå Г¤Г*æå 0 ГўГ±ГҐГЈГ¤Г* ГҐГ±ГІГј 1 öèôðГ*
    //Ïîäñ÷¸ò êîë-ГўГ* öèôð Гў ÷èñëå val
    //ГЁ åñëè arr ГўГ*ëèäГ*ûé ГІГ® Г§Г*ïîëГ*ГҐГ*ГЁГҐ ГҐГЈГ® Г°Г*çðГ*Г¤Г*ìè
    if(arr)
        arr[0] = val % 10;//Г‡Г*ïèñûâГ*ГҐГ¬ ГІГҐГЄГіГ№ГЁГ© Г°Г*çðÿä
    while(0 < (val /= 10))
    {
        if(arr)
            arr[n] = val % 10;
        n = n + 1;//Óâåëè÷èâГ*ГҐГ¬ Г±Г·ВёГІГ·ГЁГЄ Г°Г*çðÿäîâ
    }
    return arr;
}
 
void rekursBinom(int pos, int *arr, int n, int k)
{
    int i, j;
    int val = arr[pos];
    for(i = 0; i < n;     i++)
    {
        if(i == pos)
            continue;
        val = arr[pos];
        for(j = 0; j < k - 1; j++)
        {
            val *= 10;
            if(i + j < n)
                val += arr[i +     j];
            else
                val += arr[0 + n - j];  
        }
        cout<<val<<endl;
    }
    while((pos += 1) < n)
        rekursBinom(pos, arr, n, k);
}
Отработка
Enter value(val): 12345
Enter number(k) : 3
543
532
521
511
454
432
421
411
354
343
321
311
254
243
232
211
154
143
132
121
154
143
132
121
254
243
232
211
154
143
132
121
154
143
132
121
354
343
321
311
254
243
232
211
154
143
132
121
154
143
132
121
254
243
232
211
154
143
132
121
154
143
132
121
Press any key to continue
Миниатюры
Рекурсия  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru