Не правильно выводит дни, должно быть 172, а выводит 0.
program Friday13;
const
pp: array [1..12] of byte = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
function day(m, y, k, n: integer): integer;
begin
n := 0;
k := 0;
m := 1;
for y := 2001 to 2100 do
begin
while m <= 12 do
begin
n := n mod 7;
if n = 0 then k := k + 1;
n := n + pp[m];
if (m = 2) and (y mod 4 = 0) then n := n + 1;
m := m + 1
end;
m := 1
end;
end;
var
k: integer;
begin
writeln('Count of "Friday 13" in 2001..2100: ', k);
end.
Другие языки программирования и технологии
Не корректно работает программа. Что не так?
program Friday13;
const
pp: array [1..12] of byte = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
function day(): integer;
var
n, k, m, y : integer;//объявление переменных для функции
begin
n := 0;
k := 0;
m := 1;
for y := 2001 to 2100 do
begin
while m <= 12 do
begin
n := n mod 7;
if n = 0 then k := k + 1;
n := n + pp[m];
if (m = 2) and (y mod 4 = 0) then n := n + 1;
m := m + 1
end;
m := 1
end;
day := k;//для того, чтобы функция вернула значение
end;
var
k: integer;
begin
k := day();//вызываем функцию и записываем результат в переменную k
writeln('Count of "Friday 13" in 2001..2100: ', k);
end.
const
pp: array [1..12] of byte = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
function day(): integer;
var
n, k, m, y : integer;//объявление переменных для функции
begin
n := 0;
k := 0;
m := 1;
for y := 2001 to 2100 do
begin
while m <= 12 do
begin
n := n mod 7;
if n = 0 then k := k + 1;
n := n + pp[m];
if (m = 2) and (y mod 4 = 0) then n := n + 1;
m := m + 1
end;
m := 1
end;
day := k;//для того, чтобы функция вернула значение
end;
var
k: integer;
begin
k := day();//вызываем функцию и записываем результат в переменную k
writeln('Count of "Friday 13" in 2001..2100: ', k);
end.
1. Ваша функция ничего не возвращает
2. Функция - говнокод. Потому что: переменные не нужно называть одной буквой, когда не очевидно за что она отвечает. Исключение - индекс массива, и то не надо.
3. Внутри функции инициализируются передаваемые в неё параметры. Вопрос: зачем тогда их передавать?
4. k не инициализированно, поэтому 0 по умолчанию для Pascal. В Си был бы вообще жуткий мусор из кучи.
5. Функция нигде не вызывается и не передает своего посчитанного значения дальше
2. Функция - говнокод. Потому что: переменные не нужно называть одной буквой, когда не очевидно за что она отвечает. Исключение - индекс массива, и то не надо.
3. Внутри функции инициализируются передаваемые в неё параметры. Вопрос: зачем тогда их передавать?
4. k не инициализированно, поэтому 0 по умолчанию для Pascal. В Си был бы вообще жуткий мусор из кучи.
5. Функция нигде не вызывается и не передает своего посчитанного значения дальше
Вызвать функцию забыл в основном теле программы.
Похожие вопросы
- Нужна помощь в макросе VDA в userform. не корректно работает формула
- Объясните как работает программа в паскаль!!!
- С++ cin cout. Не работает программа.
- С/С++ Неправильно работает программа
- Не работает программа на Cи
- c++ не работает программа
- Будет ли работать программа? ассемблер.
- Почему не работает программа?
- Обьясните пожалуйста как работает программа
- Объясните как работают программы. 2 задачи. Язык с++.
как ее вызвать? хд