Подскажите, как правильно решить. Я когда ввожу данные в програму Паскаль, мне высвечивается, что в 17 строке ошибка и я не могу дальше понять, что делать. Ввести номер месяца и вывести количество дней в этом месяце.
Решение: Число дней по месяцам:
28 дней – 2 (февраль)
30 дней – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь)
31 день – 1 (январь), 3 (март), 5 (май), 7 (июль),
8 (август), 10 (октябрь), 12 (декабрь)
Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от
номера месяца.
program qq;
var M, D: integer;
begin
writeln('Введите номер месяца:');
read ( M );
case M of
2: begin D := 28; end;
4,6,9,11: begin D := 30; end;
1,3,5,7,8,10,12: D := 31;
else D := -1;
end;
if D > 0 then
writeln('В этом месяце',D, ' дней.')
else
writeln('Неверный номер месяца');
end.
Алгоритм печатает сначала L, потом M. По программе понятно, что L Это количество раз, когда число не кратно 10 (каждый раз число делится на 10), а M - общее количество цифр. Понятно, что раз число должно быть наименьшее, а всего 8 цифр, значит может быть как минимум 4 нуля. Больше нулей быть не может, т.к. если в числе есть значимый ноль, то при делении он будет давать кратность десяти. 4 цифры уже есть, осталось подобрать 4 цифры, которые в числе при делении его на 10 не будут давать остаток 0. Это любые цифры от 1 до 9, но так как число минимальное, значит это цифры "1". Получается, 11110000. Переставляем цифры так, чтобы число было минимальное и получается 10000111.
ответ: 10000111
//PascalABC.NET v3.3 1633
var arr: array [1..6, 1..6] of integer;
begin
for var i:=1 to 6 do
for var j:=1 to 6 do
arr[i, j]:=random(-49, 50);
writeln('Исходный массив: ');
for var i:=1 to 6 do
arr[i].PrintLn(', ');
var num:=0;
for var i:=1 to 6 do
if arr[i, 2] < 0 then num += 1;
writeln('Количество отрицательных элементов второго столбца: '+num);
for var i:=1 to 6 do
for var j:=1 to 6 do
if arr[i, j] > 0 then arr[i, j]:=-49;
writeln('Новый массив: ');
for var i:=1 to 6 do
arr[i].PrintLn(', ');
end.