#c #function #modulo
#c #функция #modulo
Вопрос:
Я в замешательстве, почему Visual Studios говорит, что после century)
того, как прямо перед % 7;
там должна быть точка с запятой. В нем говорится, что я допустил синтаксическую ошибку. Но я хочу заключить все это в круглые скобки, а затем применить к нему значение по модулю 7.
int determineDay(int month, int day, int year) {
const int HUNDRED_YEARS = 100;
int newYear = year % HUNDRED_YEARS;
int century = (year - newYear) / HUNDRED_YEARS;
if (month == 1) {
const int ONE_YEAR = 1;
month = 13;
year = year - ONE_YEAR;
int zellerNumber = (day floor((13 * (month 1)) / 5)) year
floor(year / 4) floor(century / 4) 5 * century) % 7;
return zellerNumber;
}
else if (month == 2) {
const int ONE_YEAR = 1;
month = 14;
year = year - ONE_YEAR;
int zellerNumber = (day floor((13 * (month 1)) / 5)) year
floor(year / 4) floor(century / 4) 5 * century) % 7;
return zellerNumber;
}
else {
int zellerNumber = (day floor((13 * (month 1)) / 5)) year
floor(year / 4) floor(century / 4) 5 * century) % 7;
return zellerNumber;
}
}
Комментарии:
1. Раньше вы пропускали открывающую скобку (
(
)day
.2. вы делаете код нечитаемым. не усложняйте ситуацию, чтобы не заблудиться
3. хорошая вещь для множественных круглых скобок — поместить небольшой комментарий рядом с каждой:
(/*1*/ (/*2*/ )/*a*/ )/*b*/)/*c*/
итак, у вас есть 3 (и 2), которыми так легко управлять
Ответ №1:
Как уже говорилось ранее, у вас отсутствует открытая скобка day
.
Добавление к этому…
Это незначительная синтаксическая ошибка, но она будет продолжать возникать, если вы не приложите усилий для упрощения своей логики. Обратите внимание, что во всех путях вашего if-else-if
:
int zellerNumber = (day floor((13 * (month 1)) / 5)) year
floor(year / 4) floor(century / 4) 5 * century) % 7;
Как и в математике, вы можете «учесть» это. Поскольку вы знаете, что логика вычисления zellerNumber
одинакова независимо от случая (меняются только переменные), вы можете переместить ее ниже своей if-else-if
. Это также позволит вам иметь только один return
оператор. Чаще всего вы должны стремиться к этому.
Упростите свою логику, и вы увидите гораздо меньше синтаксических ошибок, а те, с которыми вы столкнетесь, будет легче найти.