Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 23.09.2019
Сообщений: 107

Ваш день рождения очень счастливый, просто счастливый или обычный?

21.02.2020, 16:38. Показов 2453. Ответов 24
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Введите свой год, месяц и день рождения. Ваш день
рождения очень счастливый, просто счастливый или обычный?
Очень счастливый – если все остатки от деления на 7 сумм цифр
года, месяца и дня совпадают. Просто счастливый – если совпадают два
любых остатка. Обычный - если совпадений нет.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2020, 16:38
Ответы с готовыми решениями:

Определить очень счастливый день рождения или обычный
Введите свой год, месяц и день рождения, Ваш день рождения очень счастливый, просто счастливый или обычный? Очень счастливый – если все...

Проверить, верно ли, что или предыдущий или следующий билет счастливый
#include <iostream> using namespace std; const int size = 6; int main() { freopen("INPUT.TXT", "r", stdin); ...

Счастливый билет
Всем привет помогите с решением задачи.Вводится шестизначное число .Определить является ли билет с этим номером счастливым ?Нужно...

24
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
21.02.2020, 19:17
Цитата Сообщение от fYm13 Посмотреть сообщение
Очень счастливый – если все остатки от деления на 7 сумм цифр
года, месяца и дня совпадают.
ДД+ММ+ГГ - сумма цифр, т.е. сумма одна. Или надо отдельно суммировать цифры дня, месяца и года?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.02.2020, 19:31
Цитата Сообщение от Argus19 Посмотреть сообщение
Или надо отдельно суммировать цифры дня, месяца и года?
Судя по условию, отдельно.
Меня смущает другое. Почему год двузначный? Кто не берется в расчет, кого лишают возможности быть счастливым?
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
21.02.2020, 19:40
Цитата Сообщение от Байт Посмотреть сообщение
Кто не берется в расчет, кого лишают возможности быть счастливым?
Это я пожадничал, а потом лень было редактировать. Код ТС пока не показывает.
Я начну, пожалуй:
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>
using namespace std;        //Использовать пространство имён std::
//Взято и переработано в функцию здесь:
//https://www.cyberforum.ru/cpp-beginners/thread40759.html
unsigned short summa (unsigned short n)
{
//Объявляем локальную переменные функции summa
   unsigned short sum = 0;      //Для результата суммирования цифр числа
    while (n!=0)
    {
        sum += n%10;    //Прибавить к переменной sum остаток от деления n на 10.
        n /= 10;
    }
    return sum;
}
int main()
 {
     setlocale(LC_ALL, "Rus");  //Устанавливаем русский шрифт
//Объявляем переменные
    unsigned short day, mon, year;      //Для ввода чисел ДР
    unsigned short sday, smon, syear;       //Для сумм чисел
    cout << "День: ";
    cin >> day;
    cout << "Месяц: ";
    cin >> mon;
    cout << "Год: ";
    cin >> year;
//Получаем суммы цифр
   sday = summa(day);
   smon = summa(mon);
   syear = summa(year);
// Проверяем
   cout << sday << "  " << smon << "  " << syear <<endl;
system ("pause");
    return 0;
 }
Работает
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.02.2020, 19:50
Цитата Сообщение от Argus19 Посмотреть сообщение
Я начну, пожалуй:
Да, остатки посчитаны. Теперь надо бы их как-то между собой сравнить... Перебирать все варианты - в лом как-то... Нельзя ли через массив как-нибудь изловчиться?
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
21.02.2020, 19:54
Цитата Сообщение от Байт Посмотреть сообщение
Перебирать все варианты - в лом как-то...
Их всего 3
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
21.02.2020, 19:54
Цитата Сообщение от Байт Посмотреть сообщение
Да, остатки посчитаны.
Неа. Только суммы. Надо их поделить на 7, а уже потом.....

Цитата Сообщение от Байт Посмотреть сообщение
Нельзя ли через массив как-нибудь изловчиться?
Овчинка будет стоить выделки?
Может ТС хоть какое-нибудь решение накидает
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.02.2020, 20:02
О! Придумал! Составляем массив из разностей остатков.
Если их сумма ==0 - Super Luck!
Else if произведение == 0 - Simple Luck
Else - No Luck
Как говорят у нас в малороссии - Нехай гаже, та инче.
Цитата Сообщение от valen10 Посмотреть сообщение
Их всего 3
Цитата Сообщение от Argus19 Посмотреть сообщение
Овчинка будет стоить выделки?
Вот путь ТС и считает...
1
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
21.02.2020, 20:26
Цитата Сообщение от Байт Посмотреть сообщение
Вот путь ТС и считает...
Он куда-то пропал.
правомерна ли такая запись?
C++
1
if (a == b == c)
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.02.2020, 20:44
Кстати, по поводу овчинки. Тут пришла в голову любопытная идейка. А может и дурная...
Вот есть массив. Можно составить такое число
Code
1
2
3
4
NumChar = 0;
for(i=0,k=0; i<n-1; i++)
  for(j=i+1; j<n; j++, k++)
    NumChar += 2^k * (a[i]!=a[j]);
Это число, по идее, должен полностью рассказать о составе (в смысле - сколько одинаковых и групповая разбивка) исходного массива.
Даже более того, оно избыточно. Не любое число может стать NumChar. Так, для n=3 такими числами могут быть 0,3,5,6,7
Ничего о комбинаторных свойствах этого числа сказать не могу. Может, там и нет никаких свойств. Но для досужего ума - небольшое развлеченье.
ЗЫ. Хочу заметить, что в слове "досужий" для меня нет никакой отрицательной окраски. Это просто - имеющий досуг, свободное время. А ведь известно, что Лень и Досуг - два главных двигателя прогресса!
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
21.02.2020, 20:49
Цитата Сообщение от Argus19 Посмотреть сообщение
правомерна ли такая запись?
Смотря с какой точки зрения. Для ЯП, полагаю, вполне. Из a == b получим false или true, которые преобразуются в 0 или 1 соответственно, и с этим значением сравним c. Но Вы не этого хотели?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.02.2020, 20:49
Цитата Сообщение от Argus19 Посмотреть сообщение
правомерна ли такая запись?
Вроде бы, синтаксически она правильна. А семантически означает
C++
1
if (a== (b==c))
То есть. Если b==c скобка = true = 1, иначе = false = 0
Далее число a сравнивается с 1 или 0
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
21.02.2020, 21:02
Цитата Сообщение от Байт Посмотреть сообщение
А ведь известно, что Лень и Досуг - два главных двигателя прогресса!
"Полностью согласен с предыдущим оратором!"
У меня сейчас включена VS2010 c вышеприведённым исходником. Могу попробовать.

Добавлено через 11 минут
Цитата Сообщение от valen10 Посмотреть сообщение
Но Вы не этого хотели?
Проверить равенство остатков.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.02.2020, 21:11
Цитата Сообщение от Argus19 Посмотреть сообщение
Проверить равенство остатков.
Не, так не выйдет. Придется
C++
1
if (a == b && b== c)
Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Argus19 Посмотреть сообщение
Он куда-то пропал.
Да и без него хорошо!

0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
21.02.2020, 21:44
Цитата Сообщение от Байт Посмотреть сообщение
Почему год двузначный?
Догадался..... Если год четырёхзначный, то фигушки сумма его цифр совпадёт с суммой цифр дня и месяца, за исключением лиц, родившихся не позднее 12 лет от Рождества Христова.
0
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
21.02.2020, 21:47
Цитата Сообщение от Argus19 Посмотреть сообщение
то фигушки сумма его цифр совпадёт с суммой цифр дня и месяца
Ну совпасть должна не сумма цифр, а остаток от деления этой суммы на 7
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
21.02.2020, 21:52
Лучший ответ Сообщение было отмечено fYm13 как решение

Решение

Цитата Сообщение от fao Посмотреть сообщение
совпасть должна не сумма цифр, а остаток от деления этой суммы на 7
Согласен.
Вот решение, правда с лишним кодом. Проверял решение из другого топа. Лень удалять. Особо не помешает:
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
#include <ctime>
#include <iostream>
using namespace std;        //Использовать пространство имён std::
//Взято и переработано в функцию здесь:
//https://www.cyberforum.ru/cpp-beginners/thread40759.html
unsigned short summa (unsigned short n)
{
//Объявляем локальную переменные функции summa
   unsigned short sum = 0;      //Для результата суммирования цифр числа
    while (n!=0)
    {
        sum += n%10;    //Прибавить к переменной sum остаток от деления n на 10.
        n /= 10;
    }
    return sum;
}
int main()
 {
     setlocale(LC_ALL, "Rus");  //Устанавливаем русский шрифт
 
 time_t result = time(nullptr);
    cout << asctime(localtime(&result))
              << result << " seconds since the Epoch\n";
 
//Объявляем переменные
    unsigned short day, mon, year;      //Для ввода чисел ДР
    unsigned short sday, smon, syear;       //Для сумм чисел
    cout << "День: ";
    cin >> day;
    cout << "Месяц: ";
    cin >> mon;
    cout << "Год: ";
    cin >> year;
//Получаем суммы цифр
   sday = summa(day);
   smon = summa(mon);
   syear = summa(year);
// Проверяем
   cout << sday << "  " << smon << "  " << syear <<endl;
//Раз числа ДР нам больше не нужны, используем их для хранения остатков
   day = sday % 7;
   mon = smon % 7;
   year = syear % 7;
// Проверяем
   cout << day << "  " << mon << "  " << year <<endl;
//Сравниваем
   if (day == mon && mon == year)
       cout <<"Ваш день рождения очень счастливый!\n";
   else if (day == mon ||  mon == year || day == year)
       cout <<"Ваш день рождения счастливый.\n";
   else
       cout <<"Ваш день рождения обычный.\n";
system ("pause");
    return 0;
 }
1
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
21.02.2020, 22:06
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <set>
using namespace std;
 
int main()
{
    const int ddmmyy[] = { 22, 04, 70 };
    set<int> s;
 
    for (int d : ddmmyy)
    {       
        s.insert((d / 10 + d % 10) % 7);        
    }   
    switch (s.size())
    {
    case 1: cout << "Super Happy"; break;
    case 2: cout << "Happy"; break;
    default: cout << "Simple";
    }
}
1
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
21.02.2020, 22:46
Пусть будет еще такой вариант.
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>
#include <regex>
#include <set>
#include <string>
 
using namespace std;
 
unsigned f(unsigned long x) {
    return ((x < 10) ? x : (x % 10 + f(x / 10))) % 7;
}
 
int main() {
    cout << "Введите дату в формате dd.mm.yyyy: ";
    string input;
    getline(cin, input);
 
    smatch matches;
    if (regex_match(input, matches, regex("([0-2]\\d|3[0-1])\\.(0\\d|1[0-2])\\.(\\d{4})"))) {
        const set<unsigned> s{f(stoul(matches[1])), f(stoul(matches[2])), f(stoul(matches[3]))};
        cout << vector<string>{"Super Luck!", "Simple Luck", "No Luck"}[s.size() - 1] << endl;
    }
    else {
        cerr << "Введена неправильная дата, попробуйте еще раз" << endl;
    }
 
    return 0;
}
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.02.2020, 00:01
Цитата Сообщение от Байт Посмотреть сообщение
пришла в голову любопытная идейка.
И вот никак уходит. Топчется...
Дело в том, что любое отношение на множестве n элементов можно описать последовательностью из n2 нулей и единиц. Рефлексивное и симметричное отношение (что я и пытался сделать), ему нужно чуток поменьше - n(n-1)/2 . Но в данном случае нас интересуют отношения эквивалентности, то есть еще и обладающие транзитивностью. А их совсем "чуть-чуть" - 2n-1 + 1
А вот отношений порядка, их n! (это я не кричу, это - факториал)
Мысля о том, что каждому отношению такого рода можно поставить в соответствие (взаимно-однозначно) число. Может быть даже и большое, не в этом суть. Можно перенумеровать. Но нумерация должна быть зффективной. В том смысле,
что по номеру за конечное (или не очень большое) количество шагов можно восстановить исходную конфигурацию. И это не всегда тривиальная задача.
Господа! Надеюсь, вы меня простите, что я ушел чуток "не в ту степь". Не знаю, насколько эти проблемы имеют отношение к программированию Возможно, небольшое. То есть к элементарному кодингу - вообще никакого. Но к алгоритмам, которые имеют очень даже тесную связь с нашей работой, отношение есть.
А я, с вашего позволения, помещу ссылочку на эту тему в мою любимую коллекцию
В защиту Оффтопа
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2020, 00:01
Помогаю со студенческими работами здесь

счастливый билет
нам дается номер билета ,нужно проверить ,если мы будем разделять этот номер ,сумма цифр до раздела должна быть равна сумме цифр после...

Счастливый билетик
Пожалуйста помогите решить задачу. Нужно решить её через if. Билет с шестизначным номером является «счастливым», если сумма трех первых...

Счастливый билетик
Написать программу, которая будет определять, счастливый билетик или нет. Сообразил набросок кода: #include...

Счастливый билет!
билет с шестизначным номером считается счастливым если сумма трех старших цифр совпадает с суммой трех младших. допустим что в билетной...

Счастливый билет
Ув. программисты, помогите пожалуйста несчастному студенту решить задачу. (о вознаграждении договоримся) Дан массив из 6 целых чисел от...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru