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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Rinosky
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
#1

Определить, является ли билет счастливым с помощью рекурсии - C++

14.07.2014, 16:12. Просмотров 682. Ответов 5
Метки нет (Все метки)

Проверка является ли билет счастливым (123123 - ДА, 123124 - НЕТ) с использованием в решении рекурсии.
Хватило только на простенькое решение...
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
#include <stdio.h>
#include <iostream>
using namespace std;
 
int main()
{
    int number;
    int sum = 0;
    cout << " Input number: ";
    cin >> number;
    int rhalf = number % 1000;
    int lhalf = number / 1000;
    for (int i = 0; i < 3; ++i)
    {
        sum += (rhalf % 10 - lhalf % 10);
        rhalf /= 10;
        lhalf /= 10;
    }
    cout << "Number " << number << " is ";
    if (0 != sum)
        cout << " not ";
    cout <<"lucky" << endl;
 
 
    return 0;
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2014, 16:12     Определить, является ли билет счастливым с помощью рекурсии
Посмотрите здесь:

Проверить, является ли билет "счастливым" (while) - C++
1)Билет называют «счастливым», если в его номере сумма первых трех цифр равна сумме последних трех. Проверить есть ли билет «счастливым»....

Определить является ли номер счастливым. - C++
Пользователь вводит 6-ти значный номер автобусного билета, определить является ли данный номер счастливым, если счастливыми считать билеты...

Определить, является ли введенное число счастливым. - C++
Шестизначное число считать счастливым, если первая его цифра совпадает с четвертой, вторая с пятой и третья с шестой, например 194194....

Определить, является ли заданное с клавиатуры шестизначное число четным, счастливым - C++
Определить, является ли заданное с клавиатуры шестизначное число четным, счастливым (сумма первых трех цифр равна сумме последних трех...

Определить является ли заданное шестизначное число счастливым(+ ещё 3 задачи решите мне) - C++
Народ вообщем плиз нужно написать проги на dev c++ для решения задач 1.Определить является ли заданное шестизначное число счастливым...

Массив: С помощью рекурсии определить количество нулевых элементов. - C++
дан массив Х. С помощью рекурсии определить количество нулевых элементов.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mycola
22 / 12 / 13
Регистрация: 23.03.2013
Сообщений: 157
14.07.2014, 16:20     Определить, является ли билет счастливым с помощью рекурсии #2
Вопросик, всегда ли это число будет шестизначным? Или может быть любых размеров например 4545, 19231923 и нечетных размеров?
Rinosky
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 28
14.07.2014, 18:04  [ТС]     Определить, является ли билет счастливым с помощью рекурсии #3
Всегда шестизначное.
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,739
14.07.2014, 18:48     Определить, является ли билет счастливым с помощью рекурсии #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
#include <iostream>
using namespace std;
int fnc(int n)
{
if(n==0)
  return 0;
if(n<0)
  {
n*=-1;
  return n%10-fnc(n/10);
  }
else
 {
  return n%10-fnc(-1*n/10);
 }
 
 
}
 
 
int main() {
    //int arr[512]={0,};
   if(  fnc(123124))
     cout<<"no";
   else
     cout<<"yes";
   
 
 
 
    return 0;
}
Добавлено через 30 минут
другой вариант
C++
1
2
3
4
5
6
7
int fnc(int n)
{
if(n==0)
  return 0;
 
 return n%10+fnc(-1*n/10); 
}
но я сталкивался с тем что остаток от деления отрицательных чисел неверен
Voivoid
674 / 277 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
14.07.2014, 20:45     Определить, является ли билет счастливым с помощью рекурсии #5
Цитата Сообщение от ValeryS Посмотреть сообщение
ну как то так
Жестяной алгоритм Он кстати по-моему неправильно работает, если я конечно не путаю как считается счастливый билет. Скажем 111003 же счатливый?

Мой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <cassert>
#include <iostream>
 
int is_lucky_helper( int a_num, int sum ) {
  return a_num == 0 ? sum : is_lucky_helper( a_num / 10, sum + ( a_num % 10 ) );
}
 
bool is_lucky( int a_num ) {
  assert( a_num >= 0 && a_num <= 999999 );
 
  int left = is_lucky_helper( a_num / 1000, 0 );
  int right = is_lucky_helper( a_num % 1000, 0 );
 
  return left == right;
}
 
int main() {
 
  static const int n = 111003;
  std::cout << n << " is " << ( is_lucky( n ) ? "lucky" : "not lucky" ) << "\n";
 
  return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2014, 21:23     Определить, является ли билет счастливым с помощью рекурсии
Еще ссылки по теме:

Написать функцию, определяющую, является ли число "счастливым" - C++
1. Назовём четырёхзначное число счастливым, если произведение цифр этого числа равно их сумме. Например, число 2114 – счастливое, поскольку...

Дано четырехзначное число. Проверить является ли оно "счастливым билетом" - C++
Дано четырехзначное число. Проверить является ли оно &quot;счастливым билетом&quot;. Примечание: счастливым билетом называется число, в котором при...

a в степени n с помощью рекурсии - C++
Подскажите где ошибся? #include &lt;iostream&gt; using namespace std; int Square(int,int); int main(){ int p,q; ...

. Введите месяц и день своего рождения. Выясните, какой ближайший год будет для вас счастливым. Год называется счастливым, если остаток от деления сум - C++
. Введите месяц и день своего рождения. Выясните, какой ближайший год будет для вас счастливым. Год называется счастливым, если остаток...

Быстрая сортировка с помощью рекурсии - C++
Пытался написать алгоритм быстрой сортировки с помощью рекурсии, но данная программа наотрез отказывается работать //Фибаначчи с...

Возведение в степень n с помощью рекурсии - C++
#include&lt;iostream&gt; using namespace std; int funk(int,int); int main () {setlocale(LC_ALL,&quot;Rus&quot;); int a=2,n=5; cout&lt;&lt;funk(a,n); ...


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,739
14.07.2014, 21:23     Определить, является ли билет счастливым с помощью рекурсии #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Voivoid Посмотреть сообщение
Он кстати по-моему неправильно работает,
может и неправильно
я его на коленке придумал
сейчас подумаю как поправить
главное чтобы в одной функции было

Добавлено через 21 минуту
вот такой вариант зацени
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;
int fnc(int n)
{
  static int sum=0;
 if(n==0)
 {
   sum=0; 
  return 0;
 }
if(n/1000)
 {
    fnc(n/10);
     sum+=n%10;
    return sum;
   
 }
 else
 {
  fnc(n/10);
  sum-=n%10;
  return sum;
   
  }
}
 
int main() {
 
   if(  fnc(111003))
     cout<<"no";
   else
     cout<<"yes";
   
  if(   fnc(123123))
     cout<<"no";
   else
     cout<<"yes";
    return 0;
}
Yandex
Объявления
14.07.2014, 21:23     Определить, является ли билет счастливым с помощью рекурсии
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru