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

Рекурсивная функция для расчета числа Y - C++

Восстановить пароль Регистрация
 
Zo_0m
24 / 24 / 12
Регистрация: 22.10.2011
Сообщений: 160
03.05.2012, 11:05     Рекурсивная функция для расчета числа Y #1
написать рекурсивную функцию:
Определить величину Y, как наибольший из индексов элементов массива X, равных 1.
массив вводится в отдельной функции и его элементами являются 1 и -1.

помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2012, 11:05     Рекурсивная функция для расчета числа Y
Посмотрите здесь:

C++ Рекурсивная функция вычисления разрядности числа в двоичном виде
Рекурсивная функция для расчета суммы всех двузначных чисел C++
Рекурсивная функция для вывода цифр натурального числа в обратном порядке C++
Рекурсивная функция, расчет степени числа C++
C++ Рекурсивная функция: нахождение числа квадратов, на которые можно разбить прямоугольник
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
03.05.2012, 12:15     Рекурсивная функция для расчета числа Y #2
Цитата Сообщение от Zo_0m Посмотреть сообщение
написать рекурсивную функцию:
Определить величину Y, как наибольший из индексов элементов массива X, равных 1.
массив вводится в отдельной функции и его элементами являются 1 и -1.
помогите пожалуйста
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
#include <iostream>
using namespace std;
 
int getIndex(int * arr, int i)
{
    if((0 < (i = i - 1)) && arr[i] != 1)
        getIndex(arr, i);
    return i;
}
 
 
int main()
{
    int i, n = 0;
    int * arr = NULL;
    cout<<"Enter number elements in array : ";cin>>n;
    arr = new int[n];//Âûäåëèëè ГЇГ*ìÿòü ïîä Г¬Г*Г±Г±ГЁГў
    for(i = 0; i < n; i++)
    {
        cout<<"X["<<i + 1<<"] = ";
        cin>>arr[i];
    }
    cout<<"Y = "<<getIndex(arr, n)<<endl;
    system("pause");
    return 0;
}
Миниатюры
Рекурсивная функция для расчета числа Y  
Zo_0m
24 / 24 / 12
Регистрация: 22.10.2011
Сообщений: 160
03.05.2012, 14:03  [ТС]     Рекурсивная функция для расчета числа Y #3
-=ЮрА=-, не работает... Функция выдает Y=i-1, то есть например если если элементов 5, выведет 4, если 6 - 5. -1 и 1 в массиве вообще не влияет на Y по-вашему
-=ЮрА=-
Заблокирован
Автор FAQ
03.05.2012, 16:20     Рекурсивная функция для расчета числа Y #4
Цитата Сообщение от Zo_0m Посмотреть сообщение
-=ЮрА=-, не работает... Функция выдает Y=i-1, то есть например если если элементов 5, выведет 4, если 6 - 5. -1 и 1 в массиве вообще не влияет на Y по-вашему
сейчас посмотрю, писал быстро возможно что то упустил
-=ЮрА=-
Заблокирован
Автор FAQ
03.05.2012, 16:33     Рекурсивная функция для расчета числа Y #5
Zo_0m, вот так уже норм работает
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
#include <iostream>
using namespace std;
 
int getIndex(int * arr, int i)
{
    int k = i == 0 ? i : i - 1;
    if((i = i - 1) && arr[i] != 1)
        k = getIndex(arr, i);
    return k;
}
 
 
int main()
{
    int i, n = 0;
    int * arr = NULL;
    cout<<"Enter number elements in array : ";cin>>n;
    arr = new int[n];//Âûäåëèëè ГЇГ*ìÿòü ïîä Г¬Г*Г±Г±ГЁГў
    for(i = 0; i < n; i++)
    {
        cout<<"X["<<i<<"] = ";
        cin>>arr[i];
    }
    cout<<"Y = "<<getIndex(arr, n)<<endl;
    system("pause");
    return 0;
}
Миниатюры
Рекурсивная функция для расчета числа Y  
Zo_0m
24 / 24 / 12
Регистрация: 22.10.2011
Сообщений: 160
03.05.2012, 19:03  [ТС]     Рекурсивная функция для расчета числа Y #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
int k = i == 0 ? i : i - 1;
* * if((i = i - 1) && arr[i] != 1)
Объясните пожалуйста, а что значат эти строчки? вернее для чего они.. почему k=i или k=i-1 и зачем i=i-1?

Добавлено через 32 минуты
-=ЮрА=-, если сделать так:
C++
1
2
3
4
5
6
7
int getIndex(int *arr, int i)
{
           int k=i;        
       if (arr[i] != 1) { i=i-1;
       k = getIndex(arr, i);}
    return k;
}
что изменится?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.05.2012, 19:26     Рекурсивная функция для расчета числа Y #7
C++
1
2
3
int getIndex( const int *const arr, const int i ) {
    return ( i >= 0 ? ( arr[ i ] == 1 ? i : getIndex( arr, i - 1 )) : -1 );
}
Я вот так вижу решение. Если 1 нет в массиве, то возвращается -1.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2012, 11:34     Рекурсивная функция для расчета числа Y
Еще ссылки по теме:

C++ Рекурсивная функция, выводящая все четные числа от заданного n до 1
Рекурсивная функция, вычисляющая количество нечетных цифр данного числа C++
Рекурсивная функция вычисляющая факториал числа C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
04.05.2012, 11:34     Рекурсивная функция для расчета числа Y #8
Цитата Сообщение от Zo_0m Посмотреть сообщение
Объясните пожалуйста, а что значат эти строчки? вернее для чего они.. почему k=i или k=i-1 и зачем i=i-1?
- посмотри на вызов функции

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
<getIndex(arr, n)
если передавать n то без i - 1 будет ситуация выхода за пределы отведенной под массив области

Цитата Сообщение от Zo_0m Посмотреть сообщение
arr[i = n] != 1
У нас нет arr[n]!
Вчера уже пояснял в одном топике что значит тернарный оператор
Цитата Сообщение от Zo_0m Посмотреть сообщение
int k = i == 0 ? i : i - 1;
Подсчет числа четных цифр, используемых в написании N-значного числа М (функции)

Лан сейчас попробую попроще задание реализовать...

Добавлено через 2 минуты
Zo_0m, думаю нынешний вариант что проще, что понятней будет
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
#include <iostream>
using namespace std;
 
int getIndex(int * arr, int i)
{
    int k = i;
    if(arr[i] != 1)
        k = getIndex(arr, i = i - 1);
    return k;
}
 
 
int main()
{
    int i, n = 0;
    int * arr = NULL;
    cout<<"Enter number elements in array : ";cin>>n;
    arr = new int[n];//Âûäåëèëè ГЇГ*ìÿòü ïîä Г¬Г*Г±Г±ГЁГў
    for(i = 0; i < n; i++)
    {
        cout<<"X["<<i<<"] = ";
        cin>>arr[i];
    }
    cout<<"Y = "<<getIndex(arr, n - 1)<<endl;
    system("pause");
    return 0;
}
Yandex
Объявления
04.05.2012, 11:34     Рекурсивная функция для расчета числа Y
Ответ Создать тему
Опции темы

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