Автор материалов — Лада Борисовна Есакова.
Самая распространенная ошибка, которую нужно найти и исправить – это неправильное использование вложенных условных операторов. Для усложнения поиска возможно неправильное форматирование текста (неправильно поставленные отступы).
Для того, чтобы найти ошибку, нужно поставить в соответствие друг другу все части условного оператора if и else.
Помним, что часть else относится к ближайшему if. При этом наличие части else не обязательно.
Кроме того, часто присутствует ошибка при вводе или выводе. Обязательно нужно проверить, та ли информация выводится на экран.
Особого внимания требует инициализация переменных.
Формат книги не позволяет рассмотреть все основные типы задач 2 части, рассмотрим лишь те, которые встречались на проверочных и экзаменационных работах последних двух лет.
Пример 1.
На обработку поступает положительное целое число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр этого числа, меньших 7. Если в числе нет цифр, меньших 7, требуется на экран вывести 0. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик |
Python |
DIM N, DIGIT, SUM AS LONG
INPUT N SUM = 0 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT < 7 THEN SUM = SUM + 1 END IF N = N 10 WEND PRINT DIGIT |
N = int(input())
sum = 0 while N > 0: digit = N % 10 if digit < 7: sum = sum + 1 N = N // 10 print(digit) |
Паскаль |
Алгоритмический язык |
var N, digit, sum: longint;
begin readln(N); sum := 0; while N > 0 do begin digit := N mod 10; if digit < 7 then sum := sum + 1; N := N div 10; end; writeln(digit) end. |
алг
нач цел N, digit, sum ввод N sum := 0 нц пока N > 0 digit := mod(N,10) если digit < 7 то sum := sum + 1 все N := div(N,10) кц вывод digit кон |
Си |
|
#include
int main() { int N, digit, sum; scanf(«%d», &N); sum = 0; while (N > 0) { digit = N % 10; if (digit < 7) sum = sum + 1; N = N / 10; } printf(«%d»,digit); return0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 456.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Решение:
Решение использует запись программы на Паскале. Допускается использование программы на любом из четырёх других языков.
1. Программа выведет число 4.
2. Пример числа, при вводе которого программа выдаёт верный ответ: 835.
Программа работает неправильно из-за неверной выводимой на экран переменной и неверного увеличения суммы. Соответственно, программа будет работать верно, если в числе старшая цифра (крайняя левая) равна сумме цифр, меньших 7.
3. В программе есть две ошибки.
Первая ошибка. Неверное увеличение суммы.
Строка с ошибкой:
sum := sum + 1;
Верное исправление:
sum := sum + digit;
Вторая ошибка. Неверный вывод ответа на экран.
Строка с ошибкой:
writeln(digit)
Верное исправление:
writeln(sum)
Пример 2.
Для заданного положительного вещественного числа A необходимо найти максимальное целое число K, при котором выполняется неравенство
(при K = 0 сумма считается равной 0).
Для решения этой задачи ученик написал такую программу.
Бейсик |
Python |
DIM A, S AS DOUBLE
DIM K AS INTEGER INPUT A K = 1 S = 1 WHILE S < A S = S + 1.0/K K = K + 1 WEND PRINT K END |
a = float(input())
k = 1 s = 1 while s < a: s = s + 1.0/k k = k + 1 print(k) |
Алгоритмический язык |
Паскаль |
алг
нач вещ a, s цел k ввод a k := 1 s := 1 нц пока s<a s := s + 1.0/k k := k + 1 кц вывод k кон |
var a, s: real;
k: integer; begin read(a); k := 1; s := 1; while s<a do begin s := s + 1.0/k; k := k + 1; end; write(k); end. |
Си |
|
#include <stdio.h>
int main(){ double a, s; int k; scanf(«%lf»,&a); k = 1; s = 1; while (s<a) { s = s + 1.0/k; k = k + 1; } printf(«%d», k); return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 1.2.
2. Приведите пример числа, при вводе которого программа даст верный ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько).
Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Обратите внимание: вам нужно исправить приведённую программу, а не написать свою. Вы можете только исправлять ошибочные строки; удалять строки или добавлять новые строки нельзя. Постарайтесь также не внести новые ошибки – за это оценка снижается.
Решение:
Решение использует запись программы на Паскале. Допускается использование программы на других языках.
1. При вводе числа 1.2 программа выведет число 2.
2. Примеры чисел, при вводе которых программа выводит верный ответ: 1.6, 2.05.
Программа содержит две ошибки, одна из которых приводит к увеличению ответа, другая – к уменьшению.
В некоторых случаях эти ошибки компенсируют друг друга, и ответ оказывается правильным. Это происходит, если значение A попадает в один из следующих диапазонов: 1.5 < A < 1.83, 2 < A < 2.08.
3. Программа содержит две ошибки.
1) Неверная инициализация. Начальное значение S должно быть равно нулю.
В приведённом варианте вычисленная сумма оказывается на 1 больше правильного значения.
Строка с ошибкой:
s := 1;
Правильная строка:
s := 0;
2) Неверное определение ответа. Приведённая программа находит не максимальное K, при котором выполняется неравенство, а минимальное, при котором оно не выполняется, то есть увеличивает верное значение на 1.
Кроме того, использованный порядок действий в цикле (увеличение K после увеличения S) приводит к увеличению ещё на 1. Это можно было бы исправить, изменив порядок действий в цикле и уменьшив K после завершения цикла, но эти действия не разрешены по условию задачи.
Поэтому для исправления ошибки можно просто скорректировать значение при выводе.
Строка с ошибкой:
write(k);
Правильная строка:
write(k-2);
Спасибо за то, что пользуйтесь нашими материалами.
Информация на странице «Задача №24. Исправление ошибок в программе.» подготовлена нашими редакторами специально, чтобы помочь вам в освоении предмета и подготовке к ЕГЭ и ОГЭ.
Чтобы успешно сдать нужные и поступить в высшее учебное заведение или техникум нужно использовать все инструменты: учеба, контрольные, олимпиады, онлайн-лекции, видеоуроки, сборники заданий.
Также вы можете воспользоваться другими статьями из разделов нашего сайта.
Публикация обновлена:
07.06.2023
Цели урока:
Образовательная –
- закрепить изученный материал: синтаксис
программ, основные операторы; - изучить новый материл – ошибки и отладка
программ.
Деятельностная –
- сформировать у учащихся способности к анализу,
нахождению, обобщению и приему нужной информации
через решение задач; - отработать навыки нахождения и исправления
ошибок; - развить коммуникативные навыки, память.
Воспитательная – воспитать уверенность в
собственных силах, стремление к познанию.
Задачи урока:
- Изучить новый материал:
- Поиск ошибок и отладка программ.
- Закрепить и проконтролировать ЗУН учащихся при
работе с ошибками:
1) Умение определять ошибки по указанному коду.
2) Умение переводить ошибки с русского языка на
язык программирования.
3) Нахождение ошибок в программе.
4) Умение проводить отладку программ.
Оборудование урока: раздаточный материал,
экран, проектор, тетрадь, ПК.
Междисциплинарные связи: английский язык +
информатика + математика.
Метапредметные связи: Постановка вопроса.
Тип урока: Урок открытия нового знания,
комбинированный.
Ход урока
1. Мотивация учебной деятельности.
Урок сегодня я хотела бы начать с фрагмента из
мультфильма “Вовка в тридевятом царстве”.
Вопрос: “Почему Двое из ларца не смогли
выполнить указания Вовки?” – слайд 2 (2 мин.)
(Потому что Вовка неправильно давал указания,
неверно использовал Систему Команд Исполнителя,
а потом не смог исправить ошибки в своей же
программе.) Мы с вами жители Российского
государства, а не тридевятого, поэтому
постараемся сегодня научиться исправлять свои
ошибки, а заодно научим и Вовку.
2. Актуализация знаний.
3.
“Корзина идей – Системные слова и синтаксис”
– называю системные слова и синтаксис программы
на Pascal учащимся, получаю ответ. (2 мин.) – слайд 3.
- С какого системного слова начинается программа?
- Чем заканчивается каждая строка?
- Какой знак ставится в конце всей программы?
- Как будет “ввести текст”?
- Как будет “считать переменную”?
- С чего начинается описание переменных?
- Какие типы данных вы знаете?
- Как записывается условие?
- Как записывается присваивание переменных?
- Как записывается текст при выводе результата?
4. Изучение нового материала.
4.1. ПРОБНОЕ ДЕЙСТВИЕ:
4.1.1. Перед вами на экране представлена
программа. Я хотела бы, чтобы вы определили,
сколько в ней ошибок, и какие именно ошибки вы
обнаружили? (Обсуждение 1 мин.) – слайд 4.
4.1.2. Теперь давайте обратимся к системным словам
и ошибкам. Давайте посмотрим и проанализируем
системные слова с точки зрения английского
языка. (Обсуждение 2 мин.) Слайд 5.
4.1.3. А кто теперь сможет назвать, как правильно
данные ошибки выдал бы нам отладчик Pascal?
(Обсуждение 2 мин.) Слайд 6
4.2. ФИКСАЦИЯ ЗАТРУДНЕНИЙ
С вариантами ошибок возникли затруднения.
Почему? Потому что чаще мы обращаемся к помощи
учителя или пытаемся исправить программу
самостоятельно, проводя долгий поиск ошибок. (1
мин.)
4.3. ПРИЧИНА ЗАТРУДНЕНИЯ
Мы не знаем коды ошибок, не обращаем внимание на
перевод, не анализируем информацию, которую нам
выдает отладчик. (1 мин.)
4.4. ФОРМУЛИРОВКА ЦЕЛИ ЦЕЯТЕЛЬНОСТИ
Давайте попробуем сегодня с вами поиграть в
игру “Своя игра” и, используя критическое
мышление, определить различные варианты ошибок,
узнать, что же они означают и как их можно
исправить. Итак, мы подошли к теме нашего
сегодняшнего урока. Кто может ее сформулировать?
Правильно! “Ошибки. Отладка программ”. (1 мин.)
Слайд 7.
4.5. ПЛАН ОТКРЫТИЯ Слайд 8. (1 мин.)
4.5.1. Открыть нужную ячейку
4.5.2. Определить тип ошибки, применяя критическое
мышление, знания, полученные раннее на уроках
английского языка и информатики
4.5.3. Решить поставленные задачи
4.6. РЕАЛИЗАЦИЯ ПОСТРОЕННОГО ПРОЕКТА
Предлагаю вам для первого раза разделиться на
три команды. Вытаскиваем жетончик и делимся по
цвету (Физкультминутка).
Запускается игра. СЛАЙД 9.
Еще раз напоминаются правила игры. Первая
команда выбирает категорию и цену вопроса. Если
отвечает, то получает указанное количество
баллов, если нет – баллы снимаются. Дальше идет
выбор вопроса и цены, желающая команда дает
ответ. Баллы также начисляются или снимаются. (2
мин.)
5. Первичное закрепление во внешней
речи (1мин.).
5.1. Ну что ж, как сказал Фредерик Брукс-мл “Чтобы
обнаруживать ошибки, программист должен иметь
ум, которому доставляет удовольствие находить
изъяны там, где, казалось, царят красота и
совершенство”. С ошибками в программах вы будете
сталкиваться столько, сколько будете
программировать. Но не ошибается тот, кто ничего
не делает.
5.2. А значит давайте пробовать и учиться на
своих ошибках.
6. Играем в игру “Своя
игра” (23 мин.).
7. А теперь давайте выполним рефлексию
нашей учебной деятельности (5 мин.) – Слайд
10.
“Я попрошу вас составить синквейн на тему
“Ошибка”. Кто знает, что такое синквейн? Чтобы
вам было проще, я приготовила вам заготовку.
1 существительное | Ошибка |
2 прилагательных | |
3 глагола | |
Свое отношение | |
Заключение в форме |
8. Итог урока. Подведение результатов,
награждение команд при желании. (1 мин.).
Приложение 1 (презентация)
Приложение 2
Приложение 3
Приложение 4
Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
Pascal.doc
Скачиваний:
26
Добавлен:
12.03.2016
Размер:
3.29 Mб
Скачать
Сообщения
об ошибках.Ошибки в
программах делятся на те, которые
Паскаль замечает, и на те, что не замечает
и в принципе заметить не может. К первым
относятся все синтаксические погрешности,
например,BIGINвместоBEGIN.
Их Паскаль замечает еще на стадии
компиляции. На стадии выполнения он
замечает такие ошибки, какSqrt(-25),
то есть квадратный корень из ‑25. Но
вот, если вы, желая возвести числоa
в куб, вместоa*a*aпишетеa*a,
то этого не заметит ни один язык в мире.
Обнаружив
грамматическую ошибку, Паскаль выдает
золотыми буквами на красном фоне краткое
описание ошибки и ставит курсор в то
место программы, где, по его мнению, она
находится.
Обнаружив ошибку
на стадии выполнения, Паскаль выдает
белыми буквами на черном фоне окна
пользователя сообщение Runtime
errorи иногда золотыми буквами
на красном фоне краткое описание ошибки
и ставит курсор в то место программы,
где, по его мнению, она находится.
Вот наиболее
типичные для начинающих сообщения об
ошибках того и другого рода:
Сообщение |
Перевод |
Вероятная |
Unexpected end of file |
Неожиданный |
Вы забыли |
“;” expected |
Ждал точку с |
Вы забыли |
“,” expected |
Ждал запятую |
Вы указали |
“)” expected |
Ждал скобку “)” |
Вы указали |
Unknown identifier |
Неизвестное |
Вы забыли описать
Неправильно |
Type mismatch |
Несовпадение |
В вашей программе |
Duplicate identifier |
Дубль имени |
Одно и то же имя |
Syntax error |
Синтаксическая |
Паскаль |
BEGIN |
Ждал BEGIN |
Возможно, не |
END |
Ждал |
Возможно, не |
String |
Строковая |
Вы забыли закрыть |
Line too long |
Строчка слишком |
Слишком длинная |
Disk full |
Диск заполнен |
На вашем диске |
Lower bound greater than |
Нижняя граница |
Например, вы |
Invalid floating point |
Неправильная |
Sqrt(-25)илиa/0или что-нибудь в этом роде |
Ordinal expression |
Ждал выражение |
Например, вы |
Error in expression |
Ошибка в выражении |
Например, вы |
Range check error |
Ошибка проверки |
Переменная |
Constant out of range |
Константа не в |
Величина |
Invalid numeric format |
Неправильный |
Если, например, |
Более подробное
описание некоторых ошибок вы найдете
в 0.3.
Понять смысл
многих других сообщений об ошибках вам
поможет перевод некоторых часто
встречающихся в сообщениях слов:
expected
ждал
identifier
имя
invalid
неправильный
operation операция
error
ошибка
variable переменная
Невозможно создать
компилятор, который бы всегда точно
находил место и причину ошибки. Поэтому
приготовьтесь к тому, что некоторые
сообщения вы будете долго разглядывать
в недоумении. Считайте их не реальными
ошибками, а намеками на реальные ошибки.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Всего: 44 1–20 | 21–40 | 41–44
Добавить в вариант
Задания Д24 C1 № 3640
Требовалось написать программу, которая решает уравнение «a |x| = b» относительно х для любых чисел а и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
Бейсик | Python |
---|---|
INPUT a, b, x IF a = 0 THEN IF b = 0 THEN PRINT «любое число» ELSE PRINT «нет решений» ENDIF ELSE IF b = 0 THEN PRINT «x =0» ELSE PRINT «x =»,b/a, «или x =»,-b/a ENDIF ENDIF END |
a = float(input()) b = float(input()) x = float(input()) if a == 0: if b == 0: print(‘любое число’) else: print(‘нет решений’) else: if b == 0: print(‘x = 0’) else: print(‘x =’, b/a, ‘или x =’,-b/a) |
Паскаль | Алгоритмический язык |
var a,b,x: real; begin readln(a,b,x); if a = 0 then if b = 0 then write (‘любое число’) else write (‘нет решений’) else if b = 0 then write(‘x = 0’) else write(‘x =’,b/a,’ или x =’,-b/a); end. |
алг нач вещ a,b,x если a = 0 то если b = 0 то вывод «любое число» иначе вывод «нет решений» все иначе если b = 0 то вывод «x = 0» иначе вывод «x =», b/a, «или x =»,-b/a все кон |
Си++ | |
#include <iostream> using namespace std; int main(void) {float a,b,x; cin >> a >> b >> x; if (a==0) if (b==0) cout << «любое число»; else cout << «нет решений»; else if (b==0) cout << «x = 0»; else cout << «x=» << b/a << «или x=» << -b/a << endl; } |
Последовательно выполните три задания:
1) Приведите пример таких чисел a, b, x, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Задания Д24 C1 № 4568
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (x — действительное число) и определяется принадлежность этой точки одному из выделенных отрезков В и D (включая границы). Программист торопился и написал программу неправильно.
Бейсик | Паскаль |
---|---|
INPUT x IF x>=-3 THEN IF x<=9 THEN IF x>1 THEN PRINT «не принадлежит» ELSE PRINT «принадлежит» ENDIF ENDIF ENDIF END |
var x: real; begin readln(x); if x>=-3 then if x<=9 then if x>1 then write(‘не принадлежит’) else write(‘принадлежит’) end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main(void) { float x; cin >> x; if(x>=-3) if(x<=9) if(x>1) cout << «не принадлежит»; else cout << «принадлежит»; } |
алг нач вещ x ввод x если x>=-3 то если x<=9 то если x>1 то вывод ‘не принадлежит’ иначе вывод ‘принадлежит’ все все все кон |
Python | |
x = float(input()) if x >= -3: if x <= 9: if x > 1: print(«не принадлежит») else: print(«принадлежит») |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D и E). Границы (точки –3, 1, 5 и 9) принадлежат заштрихованным областям (B и D соответственно).
В столбцах условий укажите «Да», если условие выполнится; «Нет», если условие не выполнится; «—» (прочерк), если условие не будет проверяться; «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1 (x >= –3) |
Условие 2 (x <= 9) |
Условие 3 (x > 1) |
Программа выведет | Область обрабатывается верно |
A | |||||
B | |||||
C | |||||
D | |||||
E | |||||
Задания Д24 C1 № 5288
Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х — действительное число) и определяется принадлежность этой точки заданной области (включая границы). Программист торопился и написал программу неправильно.
Бэйсик | Паскаль |
---|---|
INPUT х IF х<=30 THEN IF х<=20 THEN IF х<=10 THEN PRINT «не принадлежит» ELSE PRINT «принадлежит» END IF END IF END IF END |
var х: real; begin readln(х); if х<=30 then if x<=20 then if x<=10 then write(‘не принадлежит’) else write(‘принадлежит’) end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { float x; cin >> x; if (x<=30) if (x<=20) if (x<=10) cout << «He принадлежит»; else cout << «принадлежит»; |
алг нач вещ х ввод х если х<=30 то если х<=20 то если х<=10 то вывод ’не принадлежит’ иначе вывод ‘принадлежит’ все все все кон |
Python | |
x = int(input()) if х <= 30: if x <= 20: if х <= 10: print(«не принадлежит») else: print(«принадлежит») |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Точки, лежащие на границах областей (то есть, точки 10, 20, 30 и 40) при заполнении таблицы не рассматриваются.
Область | Условие 1 (x<=30) |
Условие 2 (x<=20) |
Условие 3 (x<=10) |
Программа выведет |
Область обрабатывается верно |
A | |||||
B | |||||
C | |||||
D | |||||
E |
В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, поставьте «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Задания Д24 C1 № 5320
Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х — действительное число) и определяется принадлежность этой точки заданной области (включая границы). Программист торопился и написал программу неправильно.
Бэйсик | Паскаль |
---|---|
INPUT х IF х<=30 THEN IF х<=20 THEN IF х<=10 THEN PRINT «не принадлежит» ELSE PRINT «принадлежит» END IF END IF END IF END |
var х: real; begin readln(х); if х<=30 then if x<=20 then if x<=10 then write(‘не принадлежит’) else write(‘принадлежит’) end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { float x; cin >> x; if (x<=30) if (x<=20) if (x<=10) cout << «He принадлежит»; else cout << «принадлежит»; } |
алг нач вещ х ввод х если х<=30 то если х<=20 то если х<=10 то вывод ’не принадлежит’ иначе вывод ‘принадлежит’ все все все кон |
Python | |
x = int(input()) if х <= 30: if x <= 20: if х <= 10: print(«не принадлежит») else: print(«принадлежит») |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Точки, лежащие на границах областей (то есть, точки 10, 20, 30 и 40) при заполнении таблицы не рассматриваются.
Область | Условие 1 (x<=30) |
Условие 2 (x<=20) |
Условие 3 (x<=10) |
Программа выведет |
Область обрабатывается верно |
A | |||||
B | |||||
C | |||||
D | |||||
E |
В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, поставьте «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Задания Д24 C1 № 5468
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG DIM product AS LONG INPUT N product = N mod 10 WHILE N >= 10 digit = N MOD 10 product = product*digit N = N 10 WEND PRINT product END |
var N, product: longint; digit: integer; begin readln(N); product := N mod 10; while N >= 10 do begin digit := N mod 10; product := product*digit; N := N div 10; end; writeln(product); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int N, product; int digit; cin >> N; product = N % 10; while (N >= 10) { digit = N % 10; product = product*digit; N = N / 10; } cout << product; } |
алг нач цел N, digit, product ввод N product := mod(N, 10) нц пока N >= 10 digit := mod(N, 10) product := product*digit N := div(N, 10) кц вывод product кон |
Python | |
n = int(input()) product = n % 10 while n >= 10: digit = n % 10 product = product*digit n //= 10 print(product) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 532.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5500
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG INPUT N max_digit = 9 WHILE N > 9 digit = N MOD 10 IF max_digit < digit THEN max_digit = digit END IF N = N 10 WEND PRINT max digit END |
var N: longint; digit, max_digit: integer; begin readln(N); max_digit := 9; while N > 9 do begin digit := N mod 10; if max_digit < digit then max_digit := digit; N := N div 10; end; writeln(max_digit); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int N; int digit, max_digit; cin >> N; max_digit = 9; while (N > 9) { digit = N % 10; if (max_digit < digit) max_digit = digit; N = N /10; } cout « max_digit « endl; } |
алг нач цел N, digit, max_digit ввод N max_digit := 9 нц пока N > 9 digit := mod(N, 10) если max_digit < digit то max_digit := digit все N := div(N, 10) кц вывод max_digit кон |
Python | |
n = int(input()) max_digit = 9 while n > 9: digit = n % 10 if max_digit < digit: max_digit = digit n //= 10; print(max_digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 738.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5596
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG DIM product AS LONG INPUT N product = 0 WHILE N >= 10 digit = N MOD 10 product = product*digit N = N 10 WEND PRINT product END |
var N, product: longint; digit: integer; begin readln(N); product := 0; while N >= 10 do begin digit := N mod 10; product := product*digit; N := N div 10; end; writeln(product); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int N, product; int digit; cin >> N; product = 0; while (N >= 10) { digit = N % 10; product = product*digit; N = N / 10; } cout << product; } |
алг нач цел N, digit, product ввод N product := 0 нц пока N >= 10 digit := mod(N, 10) product := product*digit N := div(N, 10) кц вывод product кон |
Python | |
n = int(input()) product = 0 while n >= 10: digit = n % 10 product = product*digit n //= 10 print(product) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 429.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5692
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG INPUT N max_digit = 10 WHILE N >= 10 digit = N MOD 10 IF max_digit < digit THEN max_digit = digit END IF N = N 10 WEND PRINT max_digit END |
var N: longint; digit, max_digit: integer; begin readln(N); max_digit := 10; while N >= 10 do begin digit := N mod 10; if max_digit < digit then max_digit := digit; N := N div 10; end; writeln(max_digit); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main () { long int N; int digit, max_digit; cin >> N; max digit = 10; while (N >= 10) { digit = N % 10; if (max_digit < digit) max_digit = digit; N = N / 10; } cout « max_digit « endl; } |
алг нач цел N, digit, max_digit ввод N max_digit := 10 нц пока N >= 10 digit := mod(N, 10) если max_digit < digit то max_digit := digit все N := div(N, 10) кц вывод max_digit кон |
Python | |
n = int(input()) max_digit = 10 while n >= 10: digit = n % 10 if max_digit < digit: max_digit = digit n //= 10 print(max_digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 528.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5852
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG INPUT N min_digit = 0 WHILE N > 0 digit = N MOD 10 IF digit > min_digit THEN min_digit = digit END IF N = N 10 WEND PRINT min_digit END |
var N: longint; digit, min_digit: integer; begin readln(N); min_digit := 0; while N > 0 do begin digit := N mod 10; if digit > min_digit then min_digit := digit; N := N div 10; end; writeln(min_digit); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main () { long int N; int digit, min_digit; cin >> N; min_digit = 0; while (N > 0) { digit = N % 10; if (digit > min_digit) min_digit = digit; N = N / 10; } cout « min_digit « endl; } |
алг нач цел N, digit, min_digit ввод N min_digit := 0 нц пока N > 0 digit := mod(N, 10) если digit > min_digit то min_digit := digit все N := div(N, 10) кц вывод min_digit кон |
Python | |
N = int(input()) min_digit = 0 while N > 0: digit = N % 10 if digit > min_digit: min_digit = digit N //= 10; print(min_digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 461.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5884
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG INPUT N min_digit = 9 WHILE N >= 10 digit = N MOD 10 IF digit < min_digit THEN digit = min_digit END IF N = N 10 WEND PRINT min_digit END |
var N: longint; digit, min_digit: integer; begin readln(N); min_digit := 9; while N >= 10 do begin digit := N mod 10; if digit < min_digit then digit := min_digit; N := N div 10; end; writeln(min_digit); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int N; int digit, min_digit; cin >> N; min_digit = 9; while (N >= 10) { digit = N % 10; if (digit < min_digit) digit = min_digit; N = N / 10; } cout << min_digit << endl; } |
алг нач цел N, digit, min_digit ввод N min_digit := 9 нц пока N >= 10 digit := mod(N, 10) если digit < min_digit то digit := min_digit все N := div(N, 10) кц вывод min_digit кон |
Python | |
n = int(input()) min_digit = 9 while n >= 10: digit = n % 10 if digit < min_digit: digit = min_digit n //= 10 print(min_digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 823.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5948
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG INPUT N min_digit = 0 WHILE N > 0 digit = N MOD 10 IF digit < min_digit THEN min_digit = digit END IF N = N 10 WEND PRINT digit END |
var N: longint; digit, min_digit: integer; begin readln(N); min_digit := 0; while N > 0 do begin digit := N mod 10; if digit < min_digit then min_digit := digit; N := N div 10; end; writeln(digit); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int N; int digit, min_digit; cin >> N; min_digit = 0; while (N > 0) { digit = N % 10; if (digit < min_digit) min_digit = digit; N = N / 10; } cout « digit « endl; } |
алг нач цел N, digit, min_digit ввод N min_digit := 0 нц пока N > 0 digit := mod(N, 10) если digit < min_digit то min_digit := digit все N := div(N, 10) кц вывод digit кон |
Python | |
n = int(input()) min_digit = 0 while n > 0: digit = n % 10 if digit < min_digit: min_digit = digit n //= 10 print(digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 862.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5980
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бейсик | Паскаль |
---|---|
DIM N AS LONG INPUT N min_digit = 9 WHILE N >= 10 digit = N MOD 10 IF digit < min_digit THEN min_digit = digit END IF N = N 10 WEND PRINT digit END |
var N: longint; digit, min_digit: integer; begin readln(N); min_digit := 9; while N >= 10 do begin digit := N mod 10; if digit < min_digit then min_digit := digit; N := N div 10; end; writeln(digit); end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; int main() { long int N; int digit, min_digit; cin >> N; min_digit = 9; while (N >= 10) { digit = N % 10; if (digit < min_digit) min_digit = digit; N = N / 10; } cout « digit « endl; } |
алг нач цел N, digit, min_digit ввод N min_digit := 9 нц пока N >= 10 digit := mod(N, 10) если digit < min_digit то min_digit := digit все N := div(N, 10) кц вывод digit кон |
Python | |
N = int(input()) min_digit = 9 while N >= 10: digit = N % 10 if digit < min_digit: min_digit = digit N //= 10 print(digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 547.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 6014
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бейсик | Паскаль |
---|---|
DIM N AS LONG INPUT N max_digit = 9 WHILE N >= 10 digit = N MOD 10 IF digit > max_digit THEN max_digit = digit END IF N = N 10 WEND PRINT max_digit END |
var N: longint; digit, max_digit: integer; begin readln(N); max_digit := 9; while N >= 10 do begin digit := N mod 10; if digit > max_digit then max_digit := digit; N := N div 10; end; writeln(max_digit); end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; int main() { long int N; int digit, max_digit; cin >> N; max_digit = 9; while (N >= 10) { digit = N % 10; if (digit > max_digit) max_digit = digit; N = N /10; } cout « max_digit « endl; } |
алг нач цел N, digit, max_digit ввод N max_digit := 9 нц пока N >= 10 digit := mod(N, 10) если digit > max_digit то max_digit := digit все N := div(N, 10) кц вывод max_digit кон |
Python | |
n = int(input()) max_digit = 9 while n >= 10: digit = n % 10 if digit > max_digit: max_digit = digit n //= 10 print(max_digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 423.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 6968
Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех единиц; порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 952025. Число, в котором все цифры — единицы и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно.
Программист торопился и написал программу неправильно.
Бейсик | Паскаль |
---|---|
DIM N, R, T AS LONG DIM d AS INTEGER INPUT N R = 0 T = 1 WHILE N > 0 d = N MOD 10 IF d <> 1 THEN R = R + d * T T = T + 1 END IF N = N 10 WEND PRINT T END |
var N, R, T: longint; d: integer; begin readln(N); R:=0; T:=1; while N>0 do begin d := N mod 10; if d<>1 then begin R := R + d*T; T := T+1 end; N := N div 10; end; writeln(T); end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; int main() { long int N, R, T; int d; cin >> N; R = 0; T = 1; while (N > 0) { d = N % 10; if (d != 1) { R = R + d*T; T = T+1; } N = N / 10; } cout << T; } |
алг нач цел N, R, T, d ввод N R := 0 T := 1 нц пока N > 0 d := mod(N, 10) если d <> 1 то R := R + d*T T := T+1 все N := div(N, 10) кц вывод T кон |
Python | |
N = int(input()) R=0 T=1 while N > 0: d = N % 10 if d != 1: R = R + d*T T = T+1 N //= 10 print(T) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 314.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) Выпишите строку, в которой сделана ошибка.
2) Укажите, как исправить ошибку — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Задания Д24 C1 № 7000
Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех пятёрок, порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 192012. Число, в котором все цифры – пятёрки и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно.
Программист торопился и написал программу неправильно.
Бейсик | Паскаль |
---|---|
DIM N, R, T AS LONG DIM d AS INTEGER INPUT N R = 0 T = 1 WHILE N > 0 d = N MOD 10 IF d <> 5 THEN R = R + d * T T = T + 1 END IF N = N 10 WEND PRINT T END |
var N, R, T: longint; d: integer; begin readln(N); R:=0; T:=1; while N>0 do begin d := N mod 10; if d<>5 then begin R := R + d*T; T := T+1 end; N := N div 10; end; writeln(T); end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; int main() { long int N, R, T; int d; cin >> N; R = 0; T = 1; while (N > 0) { d = N % 10; if (d != 5) { R = R + d*T; T = T+1; } N = N / 10; } cout << T; } |
алг нач цел N, R, T, d ввод N R := 0 T := 1 нц пока N > 0 d := mod(N, 10) если d <> 5 то R := R + d*T T := T+1 все N := div(N, 10) кц вывод T кон |
Python | |
n = int(input()) R=0 T=1 while n > 0: d = n % 10 if d != 5: R += d*T T += 1 n //= 10; print(T) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 354.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) Выпишите строку, в которой сделана ошибка.
2) Укажите, как исправить ошибку — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Задания Д24 C1 № 7469
i
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество нечётных чисел в исходной последовательности и максимальное нечётное число. Если нечётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
CONST n = 4 count = 0 maximum = 999 FOR I = 1 TO n INPUT x IF x mod 2 <> 0 THEN count = count + 1 IF x > maximum THEN maximum = I END IF END IF NEXT I IF count > 0 THEN PRINT count PRINT maximum ELSE PRINT «NO» END IF |
n = 4 count = 0 maximum = 999 for i in range(1, n + 1): x = int(input()) if x % 2 != 0: count += 1 if x > maximum: maximum = i if count > 0: print(count) print(maximum) else: print(«NO») |
Паскаль | Алгоритмический язык |
const n = 4; var i, x: integer; var maximum, count: integer; begin count := 0; maximum := 999; for i := 1 to n do begin read(x); if x mod 2 <> 0 then begin count := count + 1; if x > maximum then maximum := i end end; if count > 0 then begin writeln(count); writeln(maximum); end else writeln(‘NO’) end. |
алг нач цел n = 4 цел i, x цел maximum, count count := 0 maximum := 999 нц для i от 1 до n ввод x если mod(x, 2) <> 0 то count := count + 1 если x > maximum то maximum := i все все кц если count > 0 то вывод count, нс вывод maximum иначе вывод «NO» все кон |
Си++ | |
#include <iostream> using namespace std; int main(void) { const int n = 4; int i, x, maximum, count; count = 0; maximum = 999; for (i = 1; i <= n; i++) { cin >> x; if (x % 2 != 0) { count++; if (x > maximum) maximum = i; } } if (count > 0) { cout << count << endl; cout << maximum << endl; } else cout << «NOn»; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности: 2 9 4 3
2. Приведите пример такой последовательности, содержащей хотя бы одно нечётное число, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 7681
Требовалось написать программу, при выполнении которой с клавиатуры считывается положительное целое число N, не превосходящее 109, и определяется сумма цифр этого числа. Программист торопился и написал программу неправильно.
Бейсик | Python |
---|---|
DIM N AS LONG INPUT N sum = 1 WHILE N > 0 D = N MOD 10 N = N 10 sum = d WEND PRINT sum END |
N = int(input()) sum = 1 while N > 0: d = N%10 N = N // 10 sum = d print(sum) |
Паскаль | Алгоритмический язык |
var N: longint; sum, d: integer; begin readln(N); sum := 1; while N > 0 do begin d := N mod 10; N := N div 10; sum := d; end; writeln(sum); end. |
алг нач цел N, d, sum ввод N sum := 1 нц пока N > 0 d := mod(N, 10) N := div(N, 10) sum := d кц вывод sum кон |
Си++ | |
#include <iostream> using namespace std; int main() { long int N; int sum, d; cin >> N; sum = 1; while (N > 0) { d = N%10; N = N / 10; sum = d; } cout « sum « endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 256.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 7708
Требовалось написать программу, при выполнении которой с клавиатуры считывается положительное целое число N, не превосходящее 109, и определяется сумма цифр этого числа. Программист торопился и написал программу неправильно.
Бейсик | Python |
---|---|
DIM N AS LONG INPUT N sum = 1 WHILE N > 0 D = N MOD 10 N = N 10 sum = sum + 1 WEND PRINT sum END |
N = int(input()) sum = 1 while N > 0: d = N%10 N = N // 10 sum = sum + 1 print(sum) |
Паскаль | Алгоритмический язык |
var N: longint; sum, d: integer; begin readln(N); sum := 1; while N > 0 do begin d := N mod 10; N := N div 10; sum := sum + 1; end; writeln(sum); end. |
алг нач цел N, d, sum ввод N sum := 1 нц пока N > 0 d := mod(N, 10) N := div(N, 10) sum := sum + 1 кц вывод sum кон |
Си++ | |
#include int main() { long int N; int sum, d; cin >> N; sum = 1; while (N > 0) { d = N%10; N = N / 10; sum = sum + 1; } cout « sum « endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 256.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 7769
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество значащих цифр в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)
Бейсик | Python |
---|---|
INPUT x cnt = 0 WHILE x > 0 cnt = cnt + x MOD 2 x = x 10 WEND PRINT cnt END |
x = int(input()) cnt = 0 while x > 0: cnt = cnt+x % 2 x = x // 10 print(cnt) |
Паскаль | Алгоритмический язык |
var x,cnt: integer; begin readln(x); cnt := 0; while x > 0 do begin cnt:=cnt + x mod 2; x := x div 10 end; writeln(cnt); end. |
алг нач цел x, cnt ввод x cnt := 0 нц пока x > 0 cnt := cnt+mod(x,2) x := div(x, 10) кц вывод cnt кон |
Си++ | |
#include <iostream> using namespace std; int main() { int x,cnt; cin >> x; cnt = 0; while (x > 0) { cnt = cnt + x%2; x = x /10; } cout « cnt « endl; } |
Последовательно выполните следующее:
1. Напишите, что выведет эта программа при вводе числа 15.
2. Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.
Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 7796
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество единиц в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)
Бейсик | Python |
---|---|
INPUT x cnt = 0 WHILE x > 0 cnt = cnt + 1 x = x MOD 2 WEND PRINT cnt END |
x = int(input()) cnt = 0 while x > 0: cnt = cnt+1 x = x % 2 print(cnt) |
Паскаль | Алгоритмический язык |
var x,cnt: integer; begin readln(x); cnt := 0; while x > 0 do begin cnt:=cnt + 1; x := x mod 2 end; writeln(cnt) end. |
алг нач цел x, cnt ввод x cnt := 0 нц пока x > 0 cnt := cnt+1 x := mod(x, 2) кц вывод cnt кон |
Си++ | |
#include <iostream> using namespace std; int main() { int x,cnt; cin >> x; cnt = 0; while (x > 0) { cnt = cnt + 1; x = x % 2; } cout « cnt « endl; } |
Последовательно выполните следующее:
1. Напишите, что выведет эта программа при вводе числа 6.
2. Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Всего: 44 1–20 | 21–40 | 41–44
Учитель информатики Еланцев А.Н. и математики Каштанова И.А.
Урок по информатике:
Исправление ошибок в простой программе с условными операторами С1.
Тип урока: применение знаний на практике
Форма урока: практикум; интегрированный.
Цель данного типа урока — применение знаний на практике.
Задачи:
-
образовательные: научить применять полученные знания на практике; оперировать имеющимся потенциалом в конкретной ситуации; закрепить умения и навыки работы с функциями, закрепить правила построения программы на Паскале; научить составлять сложные условия для реализации программы; продолжить работу над понятийным аппаратом (условный оператор); научить отстаивать свою точку зрения; закрепить умения вычленять проблемы.
-
воспитательные: вовлечь в активную деятельность; формировать культуру, в том числе и экологическую, формировать гуманные качества личности учащихся; совершенствовать навыки общения.
-
развивающие: совершенствовать умения работы с источниками знаний; совершенствовать навыки анализа, обобщения и т.п.; умения выступать и защищать свою точку зрения; развивать творческие способности; развивать коммуникативные навыки работы в группах; развивать познавательный интерес к окружающей жизни.
Урок построен на групповой работе. Включение учащихся в разнообразные виды коллективной работы благоприятно сказывается на формировании гуманных качеств личности. Учебная деятельность, развивающаяся под углом решения задач творческого характера, способствует их эффективному развитию. На этих уроках, мобилизуя теоретические знания по математике, учащиеся включаются частично-поисковую деятельность.
Тема урока: Исправление ошибок в простой программе с условными операторами С1.
Цели и задачи урока:
-образовательные
-
способствовать формированию навыков решения практических задач уровня С1 по информатике с использованием знаний свойств и графиков функций;
-
обеспечить в ходе урока формирование навыков работы с графиками функций;
-
повторить свойства функций;
-
закрепить правила построения программы на Паскале;
-
научить составлять сложные условия для реализации программы; продолжить работу над понятийным аппаратом (условный оператор);
-воспитательные
-
воспитывать навыки культуры работы с компьютером;
-
формировать навыки самоконтроля и самопроверки;
-развивающие
-
показать неразрывную связь между науками;
-
развивать чувство ответственности и навыки самостоятельного труда и самоконтроля;
-
развивать логическое мышление, кругозор учащихся;
-
вырабатывать умение классифицировать и обобщать;
Оборудование:
-
мультимедийный проектор;
-
мультимедийная презентация урока;
-
персональные компьютеры;
-
раздаточный материал, тригонометрические круги.
Структура урока
1 этап: организационный, постановки цели.
Тема урока: Исправление ошибок в простой программе с условными операторами С1.
Урок будут вести два учителя математики и информатики. Работать на уроке вы будете в группе по 4 человека, в конце работы коротко представите результаты своей работы.
2 этап: актуализации знаний.
Для решения задач 1 части С необходимо обладать знаниями не только в области программирования, но и в области математики, так как она является основой для составления неравенств и решения задач этого типа.
Для разминки разберем следующие задания по математике, повторим методы решения неравенств. Решите неравенства.
Бейсик | Паскаль |
---|---|
INPUT x IF x>=-3 THEN IF x<=9 THEN IF x>1 THEN PRINT «не принадлежит» ELSE PRINT «принадлежит» ENDIF ENDIF ENDIF END |
var x: real; begin readln(x); if x>=-3 then if x<=9 then if x>1 then write(‘не принадлежит’) else write(‘принадлежит’) end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main(void) { float x; cin >> x; if(x>=-3) if(x<=9) if(x>1) cout << «не принадлежит»; else cout << «принадлежит»; } |
алг нач вещ x ввод x если x>=-3 то если x<=9 то если x>1 то вывод ‘не принадлежит’ иначе вывод ‘принадлежит’ все все все кон |
Python | |
x = float(input()) if x >= -3: if x <= 9: if x > 1: print(«не принадлежит») else: print(«принадлежит») |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D и E). Границы (точки –3, 1, 5 и 9) принадлежат заштрихованным областям (B и D соответственно).
В столбцах условий укажите «Да», если условие выполнится; «Нет», если условие не выполнится; «—» (прочерк), если условие не будет проверяться; «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1 (x >= –3) |
Условие 2 (x <= 9) |
Условие 3 (x > 1) |
Программа выведет | Область обрабатывается верно |
A | |||||
B | |||||
C | |||||
D | |||||
E | |||||
Задания Д24 C1 № 5288
Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х — действительное число) и определяется принадлежность этой точки заданной области (включая границы). Программист торопился и написал программу неправильно.
Бэйсик | Паскаль |
---|---|
INPUT х IF х<=30 THEN IF х<=20 THEN IF х<=10 THEN PRINT «не принадлежит» ELSE PRINT «принадлежит» END IF END IF END IF END |
var х: real; begin readln(х); if х<=30 then if x<=20 then if x<=10 then write(‘не принадлежит’) else write(‘принадлежит’) end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { float x; cin >> x; if (x<=30) if (x<=20) if (x<=10) cout << «He принадлежит»; else cout << «принадлежит»; |
алг нач вещ х ввод х если х<=30 то если х<=20 то если х<=10 то вывод ’не принадлежит’ иначе вывод ‘принадлежит’ все все все кон |
Python | |
x = int(input()) if х <= 30: if x <= 20: if х <= 10: print(«не принадлежит») else: print(«принадлежит») |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Точки, лежащие на границах областей (то есть, точки 10, 20, 30 и 40) при заполнении таблицы не рассматриваются.
Область | Условие 1 (x<=30) |
Условие 2 (x<=20) |
Условие 3 (x<=10) |
Программа выведет |
Область обрабатывается верно |
A | |||||
B | |||||
C | |||||
D | |||||
E |
В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, поставьте «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Задания Д24 C1 № 5320
Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (х — действительное число) и определяется принадлежность этой точки заданной области (включая границы). Программист торопился и написал программу неправильно.
Бэйсик | Паскаль |
---|---|
INPUT х IF х<=30 THEN IF х<=20 THEN IF х<=10 THEN PRINT «не принадлежит» ELSE PRINT «принадлежит» END IF END IF END IF END |
var х: real; begin readln(х); if х<=30 then if x<=20 then if x<=10 then write(‘не принадлежит’) else write(‘принадлежит’) end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { float x; cin >> x; if (x<=30) if (x<=20) if (x<=10) cout << «He принадлежит»; else cout << «принадлежит»; } |
алг нач вещ х ввод х если х<=30 то если х<=20 то если х<=10 то вывод ’не принадлежит’ иначе вывод ‘принадлежит’ все все все кон |
Python | |
x = int(input()) if х <= 30: if x <= 20: if х <= 10: print(«не принадлежит») else: print(«принадлежит») |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D и Е). Точки, лежащие на границах областей (то есть, точки 10, 20, 30 и 40) при заполнении таблицы не рассматриваются.
Область | Условие 1 (x<=30) |
Условие 2 (x<=20) |
Условие 3 (x<=10) |
Программа выведет |
Область обрабатывается верно |
A | |||||
B | |||||
C | |||||
D | |||||
E |
В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, поставьте «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Задания Д24 C1 № 5468
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG DIM product AS LONG INPUT N product = N mod 10 WHILE N >= 10 digit = N MOD 10 product = product*digit N = N 10 WEND PRINT product END |
var N, product: longint; digit: integer; begin readln(N); product := N mod 10; while N >= 10 do begin digit := N mod 10; product := product*digit; N := N div 10; end; writeln(product); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int N, product; int digit; cin >> N; product = N % 10; while (N >= 10) { digit = N % 10; product = product*digit; N = N / 10; } cout << product; } |
алг нач цел N, digit, product ввод N product := mod(N, 10) нц пока N >= 10 digit := mod(N, 10) product := product*digit N := div(N, 10) кц вывод product кон |
Python | |
n = int(input()) product = n % 10 while n >= 10: digit = n % 10 product = product*digit n //= 10 print(product) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 532.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5500
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG INPUT N max_digit = 9 WHILE N > 9 digit = N MOD 10 IF max_digit < digit THEN max_digit = digit END IF N = N 10 WEND PRINT max digit END |
var N: longint; digit, max_digit: integer; begin readln(N); max_digit := 9; while N > 9 do begin digit := N mod 10; if max_digit < digit then max_digit := digit; N := N div 10; end; writeln(max_digit); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int N; int digit, max_digit; cin >> N; max_digit = 9; while (N > 9) { digit = N % 10; if (max_digit < digit) max_digit = digit; N = N /10; } cout « max_digit « endl; } |
алг нач цел N, digit, max_digit ввод N max_digit := 9 нц пока N > 9 digit := mod(N, 10) если max_digit < digit то max_digit := digit все N := div(N, 10) кц вывод max_digit кон |
Python | |
n = int(input()) max_digit = 9 while n > 9: digit = n % 10 if max_digit < digit: max_digit = digit n //= 10; print(max_digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 738.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5596
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG DIM product AS LONG INPUT N product = 0 WHILE N >= 10 digit = N MOD 10 product = product*digit N = N 10 WEND PRINT product END |
var N, product: longint; digit: integer; begin readln(N); product := 0; while N >= 10 do begin digit := N mod 10; product := product*digit; N := N div 10; end; writeln(product); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int N, product; int digit; cin >> N; product = 0; while (N >= 10) { digit = N % 10; product = product*digit; N = N / 10; } cout << product; } |
алг нач цел N, digit, product ввод N product := 0 нц пока N >= 10 digit := mod(N, 10) product := product*digit N := div(N, 10) кц вывод product кон |
Python | |
n = int(input()) product = 0 while n >= 10: digit = n % 10 product = product*digit n //= 10 print(product) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 429.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5692
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG INPUT N max_digit = 10 WHILE N >= 10 digit = N MOD 10 IF max_digit < digit THEN max_digit = digit END IF N = N 10 WEND PRINT max_digit END |
var N: longint; digit, max_digit: integer; begin readln(N); max_digit := 10; while N >= 10 do begin digit := N mod 10; if max_digit < digit then max_digit := digit; N := N div 10; end; writeln(max_digit); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main () { long int N; int digit, max_digit; cin >> N; max digit = 10; while (N >= 10) { digit = N % 10; if (max_digit < digit) max_digit = digit; N = N / 10; } cout « max_digit « endl; } |
алг нач цел N, digit, max_digit ввод N max_digit := 10 нц пока N >= 10 digit := mod(N, 10) если max_digit < digit то max_digit := digit все N := div(N, 10) кц вывод max_digit кон |
Python | |
n = int(input()) max_digit = 10 while n >= 10: digit = n % 10 if max_digit < digit: max_digit = digit n //= 10 print(max_digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 528.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5852
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG INPUT N min_digit = 0 WHILE N > 0 digit = N MOD 10 IF digit > min_digit THEN min_digit = digit END IF N = N 10 WEND PRINT min_digit END |
var N: longint; digit, min_digit: integer; begin readln(N); min_digit := 0; while N > 0 do begin digit := N mod 10; if digit > min_digit then min_digit := digit; N := N div 10; end; writeln(min_digit); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main () { long int N; int digit, min_digit; cin >> N; min_digit = 0; while (N > 0) { digit = N % 10; if (digit > min_digit) min_digit = digit; N = N / 10; } cout « min_digit « endl; } |
алг нач цел N, digit, min_digit ввод N min_digit := 0 нц пока N > 0 digit := mod(N, 10) если digit > min_digit то min_digit := digit все N := div(N, 10) кц вывод min_digit кон |
Python | |
N = int(input()) min_digit = 0 while N > 0: digit = N % 10 if digit > min_digit: min_digit = digit N //= 10; print(min_digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 461.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5884
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG INPUT N min_digit = 9 WHILE N >= 10 digit = N MOD 10 IF digit < min_digit THEN digit = min_digit END IF N = N 10 WEND PRINT min_digit END |
var N: longint; digit, min_digit: integer; begin readln(N); min_digit := 9; while N >= 10 do begin digit := N mod 10; if digit < min_digit then digit := min_digit; N := N div 10; end; writeln(min_digit); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int N; int digit, min_digit; cin >> N; min_digit = 9; while (N >= 10) { digit = N % 10; if (digit < min_digit) digit = min_digit; N = N / 10; } cout << min_digit << endl; } |
алг нач цел N, digit, min_digit ввод N min_digit := 9 нц пока N >= 10 digit := mod(N, 10) если digit < min_digit то digit := min_digit все N := div(N, 10) кц вывод min_digit кон |
Python | |
n = int(input()) min_digit = 9 while n >= 10: digit = n % 10 if digit < min_digit: digit = min_digit n //= 10 print(min_digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 823.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5948
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
---|---|
DIM N AS LONG INPUT N min_digit = 0 WHILE N > 0 digit = N MOD 10 IF digit < min_digit THEN min_digit = digit END IF N = N 10 WEND PRINT digit END |
var N: longint; digit, min_digit: integer; begin readln(N); min_digit := 0; while N > 0 do begin digit := N mod 10; if digit < min_digit then min_digit := digit; N := N div 10; end; writeln(digit); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int N; int digit, min_digit; cin >> N; min_digit = 0; while (N > 0) { digit = N % 10; if (digit < min_digit) min_digit = digit; N = N / 10; } cout « digit « endl; } |
алг нач цел N, digit, min_digit ввод N min_digit := 0 нц пока N > 0 digit := mod(N, 10) если digit < min_digit то min_digit := digit все N := div(N, 10) кц вывод digit кон |
Python | |
n = int(input()) min_digit = 0 while n > 0: digit = n % 10 if digit < min_digit: min_digit = digit n //= 10 print(digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 862.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 5980
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бейсик | Паскаль |
---|---|
DIM N AS LONG INPUT N min_digit = 9 WHILE N >= 10 digit = N MOD 10 IF digit < min_digit THEN min_digit = digit END IF N = N 10 WEND PRINT digit END |
var N: longint; digit, min_digit: integer; begin readln(N); min_digit := 9; while N >= 10 do begin digit := N mod 10; if digit < min_digit then min_digit := digit; N := N div 10; end; writeln(digit); end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; int main() { long int N; int digit, min_digit; cin >> N; min_digit = 9; while (N >= 10) { digit = N % 10; if (digit < min_digit) min_digit = digit; N = N / 10; } cout « digit « endl; } |
алг нач цел N, digit, min_digit ввод N min_digit := 9 нц пока N >= 10 digit := mod(N, 10) если digit < min_digit то min_digit := digit все N := div(N, 10) кц вывод digit кон |
Python | |
N = int(input()) min_digit = 9 while N >= 10: digit = N % 10 if digit < min_digit: min_digit = digit N //= 10 print(digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 547.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 6014
i
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бейсик | Паскаль |
---|---|
DIM N AS LONG INPUT N max_digit = 9 WHILE N >= 10 digit = N MOD 10 IF digit > max_digit THEN max_digit = digit END IF N = N 10 WEND PRINT max_digit END |
var N: longint; digit, max_digit: integer; begin readln(N); max_digit := 9; while N >= 10 do begin digit := N mod 10; if digit > max_digit then max_digit := digit; N := N div 10; end; writeln(max_digit); end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; int main() { long int N; int digit, max_digit; cin >> N; max_digit = 9; while (N >= 10) { digit = N % 10; if (digit > max_digit) max_digit = digit; N = N /10; } cout « max_digit « endl; } |
алг нач цел N, digit, max_digit ввод N max_digit := 9 нц пока N >= 10 digit := mod(N, 10) если digit > max_digit то max_digit := digit все N := div(N, 10) кц вывод max_digit кон |
Python | |
n = int(input()) max_digit = 9 while n >= 10: digit = n % 10 if digit > max_digit: max_digit = digit n //= 10 print(max_digit) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 423.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 6968
Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех единиц; порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 952025. Число, в котором все цифры — единицы и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно.
Программист торопился и написал программу неправильно.
Бейсик | Паскаль |
---|---|
DIM N, R, T AS LONG DIM d AS INTEGER INPUT N R = 0 T = 1 WHILE N > 0 d = N MOD 10 IF d <> 1 THEN R = R + d * T T = T + 1 END IF N = N 10 WEND PRINT T END |
var N, R, T: longint; d: integer; begin readln(N); R:=0; T:=1; while N>0 do begin d := N mod 10; if d<>1 then begin R := R + d*T; T := T+1 end; N := N div 10; end; writeln(T); end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; int main() { long int N, R, T; int d; cin >> N; R = 0; T = 1; while (N > 0) { d = N % 10; if (d != 1) { R = R + d*T; T = T+1; } N = N / 10; } cout << T; } |
алг нач цел N, R, T, d ввод N R := 0 T := 1 нц пока N > 0 d := mod(N, 10) если d <> 1 то R := R + d*T T := T+1 все N := div(N, 10) кц вывод T кон |
Python | |
N = int(input()) R=0 T=1 while N > 0: d = N % 10 if d != 1: R = R + d*T T = T+1 N //= 10 print(T) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 314.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) Выпишите строку, в которой сделана ошибка.
2) Укажите, как исправить ошибку — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Задания Д24 C1 № 7000
Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех пятёрок, порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 192012. Число, в котором все цифры – пятёрки и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно.
Программист торопился и написал программу неправильно.
Бейсик | Паскаль |
---|---|
DIM N, R, T AS LONG DIM d AS INTEGER INPUT N R = 0 T = 1 WHILE N > 0 d = N MOD 10 IF d <> 5 THEN R = R + d * T T = T + 1 END IF N = N 10 WEND PRINT T END |
var N, R, T: longint; d: integer; begin readln(N); R:=0; T:=1; while N>0 do begin d := N mod 10; if d<>5 then begin R := R + d*T; T := T+1 end; N := N div 10; end; writeln(T); end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; int main() { long int N, R, T; int d; cin >> N; R = 0; T = 1; while (N > 0) { d = N % 10; if (d != 5) { R = R + d*T; T = T+1; } N = N / 10; } cout << T; } |
алг нач цел N, R, T, d ввод N R := 0 T := 1 нц пока N > 0 d := mod(N, 10) если d <> 5 то R := R + d*T T := T+1 все N := div(N, 10) кц вывод T кон |
Python | |
n = int(input()) R=0 T=1 while n > 0: d = n % 10 if d != 5: R += d*T T += 1 n //= 10; print(T) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 354.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) Выпишите строку, в которой сделана ошибка.
2) Укажите, как исправить ошибку — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Задания Д24 C1 № 7469
i
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество нечётных чисел в исходной последовательности и максимальное нечётное число. Если нечётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
CONST n = 4 count = 0 maximum = 999 FOR I = 1 TO n INPUT x IF x mod 2 <> 0 THEN count = count + 1 IF x > maximum THEN maximum = I END IF END IF NEXT I IF count > 0 THEN PRINT count PRINT maximum ELSE PRINT «NO» END IF |
n = 4 count = 0 maximum = 999 for i in range(1, n + 1): x = int(input()) if x % 2 != 0: count += 1 if x > maximum: maximum = i if count > 0: print(count) print(maximum) else: print(«NO») |
Паскаль | Алгоритмический язык |
const n = 4; var i, x: integer; var maximum, count: integer; begin count := 0; maximum := 999; for i := 1 to n do begin read(x); if x mod 2 <> 0 then begin count := count + 1; if x > maximum then maximum := i end end; if count > 0 then begin writeln(count); writeln(maximum); end else writeln(‘NO’) end. |
алг нач цел n = 4 цел i, x цел maximum, count count := 0 maximum := 999 нц для i от 1 до n ввод x если mod(x, 2) <> 0 то count := count + 1 если x > maximum то maximum := i все все кц если count > 0 то вывод count, нс вывод maximum иначе вывод «NO» все кон |
Си++ | |
#include <iostream> using namespace std; int main(void) { const int n = 4; int i, x, maximum, count; count = 0; maximum = 999; for (i = 1; i <= n; i++) { cin >> x; if (x % 2 != 0) { count++; if (x > maximum) maximum = i; } } if (count > 0) { cout << count << endl; cout << maximum << endl; } else cout << «NOn»; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности: 2 9 4 3
2. Приведите пример такой последовательности, содержащей хотя бы одно нечётное число, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 7681
Требовалось написать программу, при выполнении которой с клавиатуры считывается положительное целое число N, не превосходящее 109, и определяется сумма цифр этого числа. Программист торопился и написал программу неправильно.
Бейсик | Python |
---|---|
DIM N AS LONG INPUT N sum = 1 WHILE N > 0 D = N MOD 10 N = N 10 sum = d WEND PRINT sum END |
N = int(input()) sum = 1 while N > 0: d = N%10 N = N // 10 sum = d print(sum) |
Паскаль | Алгоритмический язык |
var N: longint; sum, d: integer; begin readln(N); sum := 1; while N > 0 do begin d := N mod 10; N := N div 10; sum := d; end; writeln(sum); end. |
алг нач цел N, d, sum ввод N sum := 1 нц пока N > 0 d := mod(N, 10) N := div(N, 10) sum := d кц вывод sum кон |
Си++ | |
#include <iostream> using namespace std; int main() { long int N; int sum, d; cin >> N; sum = 1; while (N > 0) { d = N%10; N = N / 10; sum = d; } cout « sum « endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 256.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 7708
Требовалось написать программу, при выполнении которой с клавиатуры считывается положительное целое число N, не превосходящее 109, и определяется сумма цифр этого числа. Программист торопился и написал программу неправильно.
Бейсик | Python |
---|---|
DIM N AS LONG INPUT N sum = 1 WHILE N > 0 D = N MOD 10 N = N 10 sum = sum + 1 WEND PRINT sum END |
N = int(input()) sum = 1 while N > 0: d = N%10 N = N // 10 sum = sum + 1 print(sum) |
Паскаль | Алгоритмический язык |
var N: longint; sum, d: integer; begin readln(N); sum := 1; while N > 0 do begin d := N mod 10; N := N div 10; sum := sum + 1; end; writeln(sum); end. |
алг нач цел N, d, sum ввод N sum := 1 нц пока N > 0 d := mod(N, 10) N := div(N, 10) sum := sum + 1 кц вывод sum кон |
Си++ | |
#include int main() { long int N; int sum, d; cin >> N; sum = 1; while (N > 0) { d = N%10; N = N / 10; sum = sum + 1; } cout « sum « endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 256.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 7769
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество значащих цифр в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)
Бейсик | Python |
---|---|
INPUT x cnt = 0 WHILE x > 0 cnt = cnt + x MOD 2 x = x 10 WEND PRINT cnt END |
x = int(input()) cnt = 0 while x > 0: cnt = cnt+x % 2 x = x // 10 print(cnt) |
Паскаль | Алгоритмический язык |
var x,cnt: integer; begin readln(x); cnt := 0; while x > 0 do begin cnt:=cnt + x mod 2; x := x div 10 end; writeln(cnt); end. |
алг нач цел x, cnt ввод x cnt := 0 нц пока x > 0 cnt := cnt+mod(x,2) x := div(x, 10) кц вывод cnt кон |
Си++ | |
#include <iostream> using namespace std; int main() { int x,cnt; cin >> x; cnt = 0; while (x > 0) { cnt = cnt + x%2; x = x /10; } cout « cnt « endl; } |
Последовательно выполните следующее:
1. Напишите, что выведет эта программа при вводе числа 15.
2. Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.
Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 7796
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество единиц в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)
Бейсик | Python |
---|---|
INPUT x cnt = 0 WHILE x > 0 cnt = cnt + 1 x = x MOD 2 WEND PRINT cnt END |
x = int(input()) cnt = 0 while x > 0: cnt = cnt+1 x = x % 2 print(cnt) |
Паскаль | Алгоритмический язык |
var x,cnt: integer; begin readln(x); cnt := 0; while x > 0 do begin cnt:=cnt + 1; x := x mod 2 end; writeln(cnt) end. |
алг нач цел x, cnt ввод x cnt := 0 нц пока x > 0 cnt := cnt+1 x := mod(x, 2) кц вывод cnt кон |
Си++ | |
#include <iostream> using namespace std; int main() { int x,cnt; cin >> x; cnt = 0; while (x > 0) { cnt = cnt + 1; x = x % 2; } cout « cnt « endl; } |
Последовательно выполните следующее:
1. Напишите, что выведет эта программа при вводе числа 6.
2. Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Всего: 44 1–20 | 21–40 | 41–44