ℹ️ Дайте развернутый ответ.
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран минимальную цифру числа, кратную 6. Если в числе нет цифр, кратных 6, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Напоминание: 0 делится на любое натуральное число.
Бейсик
|
Python
DIM N, DIGIT, MINDIGIT AS LONG
INPUT N
MINDIGIT = N MOD 10
WHILE N > 0
DIGIT = N MOD 10
IF DIGIT MOD 6 = 0 THEN
IF DIGIT < MINDIGIT THEN
MINDIGIT = DIGIT
END IF
END IF
N = N \ 10
WEND
IF MINDIGIT = 0 THEN
PRINT "NO"
ELSE
PRINT MINDIGIT
END IF
|
N = int(input())
minDigit = N % 10
while N > 0:
digit = N % 10
if digit % 6 == 0:
if digit < minDigit:
minDigit = digit
N = N // 10
if minDigit == 0:
print("NO")
else:
print(minDigit)
Алгоритмический язык
|
Паскаль
алг
нач
цел N, digit, minDigit
ввод N
minDigit := mod(N,10)
нц пока N > 0
digit := mod(N,10)
если mod(digit, 6) = 0 то
если digit < minDigit то
minDigit := digit
все
все
N := div(N,10)
кц
если minDigit = 0 то
вывод "NO"
иначе
вывод minDigit
все
кон
|
var N,digit,minDigit: longint;
begin
readln(N);
minDigit := N mod 10;
while N > 0 do
begin
digit := N mod 10;
if digit mod 6 = 0 then
if digit < minDigit then
minDigit := digit;
N := N div 10;
end;
if minDigit = 0 then
writeln('NO')
else
writeln(minDigit)
end.
Си
#include <stdio.h>
int main()
{
int N, digit, minDigit;
scanf("%d", &N);
minDigit = N % 10;
while (N > 0)
{
digit = N % 10;
if (digit % 6 == 0)
if (digit < minDigit)
minDigit = digit;
N = N / 10;
}
if (minDigit == 0)
printf("NO");
else
printf("%d",minDigit);
return 0;
}
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 125.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку
и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе,
а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Напоминание: 0 делится на любое натуральное число.
Бейсик
|
Python
DIM N, DIGIT, MINDIGIT AS LONG
INPUT N
MINDIGIT = N MOD 10
WHILE N > 0
DIGIT = N MOD 10
IF DIGIT MOD 6 = 0 THEN
IF DIGIT < MINDIGIT THEN
MINDIGIT = DIGIT
END IF
END IF
N = N \ 10
WEND
IF MINDIGIT = 0 THEN
PRINT "NO"
ELSE
PRINT MINDIGIT
END IF
|
N = int(input())
minDigit = N % 10
while N > 0:
digit = N % 10
if digit % 6 == 0:
if digit < minDigit:
minDigit = digit
N = N // 10
if minDigit == 0:
print("NO")
else:
print(minDigit)
Алгоритмический язык
|
Паскаль
алг
нач
цел N, digit, minDigit
ввод N
minDigit := mod(N,10)
нц пока N > 0
digit := mod(N,10)
если mod(digit, 6) = 0 то
если digit < minDigit то
minDigit := digit
все
все
N := div(N,10)
кц
если minDigit = 0 то
вывод "NO"
иначе
вывод minDigit
все
кон
|
var N,digit,minDigit: longint;
begin
readln(N);
minDigit := N mod 10;
while N > 0 do
begin
digit := N mod 10;
if digit mod 6 = 0 then
if digit < minDigit then
minDigit := digit;
N := N div 10;
end;
if minDigit = 0 then
writeln('NO')
else
writeln(minDigit)
end.
Си
#include <stdio.h>
int main()
{
int N, digit, minDigit;
scanf("%d", &N);
minDigit = N % 10;
while (N > 0)
{
digit = N % 10;
if (digit % 6 == 0)
if (digit < minDigit)
minDigit = digit;
N = N / 10;
}
if (minDigit == 0)
printf("NO");
else
printf("%d",minDigit);
return 0;
}
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 125.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку
и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе,
а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
📋 Спецификация и методические указания КИМ:
Темы кодификатора:
- Оценка сложности вычислений. Время работы и объём используемой памяти, их зависимость от размера исходных данных. Оценка асимптотической сложности алгоритмов. Алгоритмы полиномиальной сложности. Переборные алгоритмы. Примеры различных алгоритмов решения одной задачи, которые имеют различную сложность
- Язык программирования (Паскаль, Python, Java, C++, C#). Типы данных: целочисленные, вещественные, символьные, логические. Ветвления. Сложные условия. Циклы с условием. Циклы по переменной. Обработка данных, хранящихся в файлах. Текстовые и двоичные файлы. Файловые переменные (файловые указатели). Чтение из файла. Запись в файл. Разбиение задачи на подзадачи. Подпрограммы (процедуры и функции). Использование стандартной библиотеки языка программирования
Формат ответа: long
📚 Похожие разобранные задания по предмету:
ID 140494 • Задание №7
Доступ к файлу org.docx, находящемуся на сервере rez.ua, осуществляется по протоколу http. Фрагменты адреса фа...
ID 31704 • Задание №12
Исполнитель КОРАБЛИК «живет» в ограниченном прямоугольном водоеме-лабиринте, разделенном на клетки и изображен...