#c
#c
Вопрос:
Привет всем, заранее благодарю всех тех, кто пытался ответить или ответить и на часть этого вопроса.
- Вычислите сумму цифр года.
- Вычислите абсолютное значение разницы между годом и «обратным» значением года.
- Вычислите количество четных коэффициентов за день.
- Вычислите наибольший общий делитель дня, месяца и года.
- Вычислите количество шагов, необходимых для решения задачи Collatz за месяц
Это мои задачи, которые мне нужно выполнить, как студенту инженерного факультета, вот как далеко я в этом продвинулся. В следующих кодах я ожидаю чего-то подобного
19
90
0
1
0
T M B B
Ответ, который я получаю, таков
Пожалуйста, введите дату вашего рождения (дд мм гггг): 12 11 1981
19
8468304
Нажмите любую клавишу, чтобы продолжить . .
8468304
Как сделать это правильно Я знаю, что мое уравнение правильное или (формула, метод). Однако это то, что я знаю.
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
cout << "Please enter your birthdate (dd mm yyyy): ";
int day, month, year, count,rev;
int sum = 0;
cin >> day>> month >>year;
while (year!=0)
{
int count = year%10;
sum =count;
year /= 10;
}
while(year>0)
{
rev = year%10;
year=year/10;
}
cout<<sum<<endl;
cout << rev;
system ("pause");
return 0;
}//end main
Пожалуйста, помогите!
Комментарии:
1. Какую задачу вы решаете, используя этот код? Попробуйте решить каждую задачу одну за другой.
Ответ №1:
После вашего первого цикла, while (year != 0)
вы не сбрасываете значение year, поэтому оно остается равным нулю, а второй цикл вообще не выполняется.
Вам нужно сохранить значение year и использовать его при запуске второго цикла.
Комментарии:
1. Правильно. И, поскольку второй цикл не выполняется,
rev
ему никогда не присваивается значение, и поэтому он содержит весь мусор, который изначально был в этой памяти. (Второй цикл также неправильный, посколькуrev
присваивается одна цифра несколько раз, без какой-либо комбинации).
Ответ №2:
Просто замечание по организации: я бы предложил написать подпрограмму / функцию для каждой задачи, например
int digit_sum(int year) {
/* ... */
return sum;
}
int reverse_difference(int year) {
/* ... */
return diff;
}
и так далее. Таким образом, вы также предотвратите ошибки, такие как изменение переменной year во время первого вычисления без сохранения исходного значения (что вы и сделали, как уже указал Дэвид Уайнант).