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

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

Восстановить пароль Регистрация
 
Dron16
3 / 3 / 0
Регистрация: 03.11.2009
Сообщений: 208
19.04.2013, 20:23     Рекурсивная функция. Преобразовать массив, прибавив к четным числам последний элемент #1
Решить задачу в консольном режиме.
Программирование с использованием функций. Рекурсивная функция

Дан целочисленный массив размера N. Преобразовать его, прибавив к четным числам последний элемент. Последний элемент массива не изменять. Осуществить сдвиг влево на k позиций, где k – число нечетных элементов
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2013, 20:23     Рекурсивная функция. Преобразовать массив, прибавив к четным числам последний элемент
Посмотрите здесь:

C++ Рекурсивная функция и массив...
C++ Дан целочисленный массив размером N. Преобразовать массив, увеличив длину каждой серии на один элемент
C++ задача на массив (найти последний четный элемент и...)
Преобразовать массив, прибавив к четным числам первый элемент C++
C++ Целочисленный массив размера N: прибавить к четным числам последний элемент
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
19.04.2013, 21:21     Рекурсивная функция. Преобразовать массив, прибавив к четным числам последний элемент #2
Dron16, вот первая часть, а вторую часть тоже рекурсивно делать?

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
#include <iostream>
#include <iomanip>
#include <iterator>
#include <algorithm>
using namespace std;
 
void mas_trnsf(int *mas, int size, int idx){
    if(idx < 0)
        return;
    else{
        if(mas[idx] % 2 == 0)
            mas[idx] += mas[size];
 
        return mas_trnsf(mas, size, idx - 1);
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    const int size(5);
    int *mas = new int[size];
    
    for(int i = 0; i < size; ++i)
        mas[i] = i + 1;
 
    cout << "mas: ";
    copy(mas, mas + size, ostream_iterator<int>(cout, " "));
 
    mas_trnsf(mas, size - 1, size - 2);
 
    cout << "\nmas: ";
    copy(mas, mas + size, ostream_iterator<int>(cout, " "));
 
    cout << "\n\n";
    return 0;
}
Dron16
3 / 3 / 0
Регистрация: 03.11.2009
Сообщений: 208
19.04.2013, 21:51  [ТС]     Рекурсивная функция. Преобразовать массив, прибавив к четным числам последний элемент #3
yoghurt92, Да )
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
19.04.2013, 22:34     Рекурсивная функция. Преобразовать массив, прибавив к четным числам последний элемент #4
Dron16, чуть не забыл про вторую задачу, вот

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
#include <iostream>
#include <iomanip>
#include <iterator>
#include <algorithm>
using namespace std;
 
void mas_change(int *mas, int size, int number){
    if(number == 0)
        return;
    else{
        rotate(mas, mas+1, mas+size);
 
        return mas_change(mas, size, number - 1);
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    const int size(5);
    int *mas = new int[size], number(0);
    
    for(int i = 0; i < size; ++i){
        mas[i] = i + 1;
        if(mas[i] & 1)
            ++number;
    }
 
    cout << "mas: ";
    copy(mas, mas + size, ostream_iterator<int>(cout, " "));
 
    mas_change(mas, size, number);
 
    cout << "\nmas: ";
    copy(mas, mas + size, ostream_iterator<int>(cout, " "));
 
    cout << "\n\n";
    return 0;
}
Добавлено через 3 минуты
Dron16, а вот тут вариант уже не с помощью STL а ручками

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 <iomanip>
#include <iterator>
#include <algorithm>
using namespace std;
 
void mas_change(int *mas, int size, int number){
    if(number == 0)
        return;
    else{
        int temp = mas[0];
        for (int i = 0; i < size - 1; i++)
            mas[i] = mas[i + 1];
        mas[size - 1] = temp;
        
 
        return mas_change(mas, size, number - 1);
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    const int size(5);
    int *mas = new int[size], number(0);
    
    for(int i = 0; i < size; ++i){
        mas[i] = i + 1;
        if(mas[i] & 1)
            ++number;
    }
 
    cout << "mas: ";
    copy(mas, mas + size, ostream_iterator<int>(cout, " "));
 
    mas_change(mas, size, number);
 
    cout << "\nmas: ";
    copy(mas, mas + size, ostream_iterator<int>(cout, " "));
 
    cout << "\n\n";
    return 0;
}
Yandex
Объявления
19.04.2013, 22:34     Рекурсивная функция. Преобразовать массив, прибавив к четным числам последний элемент
Ответ Создать тему
Опции темы

Текущее время: 18:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru