Автор материалов — Лада Борисовна Есакова.
Самая распространенная ошибка, которую нужно найти и исправить – это неправильное использование вложенных условных операторов. Для усложнения поиска возможно неправильное форматирование текста (неправильно поставленные отступы).
Для того, чтобы найти ошибку, нужно поставить в соответствие друг другу все части условного оператора 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
Всего: 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
Скачать материал
Скачать материал
Бейсик | Паскаль |
---|---|
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
Скачать материал
Скачать материал
- Сейчас обучается 27 человек из 18 регионов
- Сейчас обучается 39 человек из 26 регионов
- Сейчас обучается 29 человек из 22 регионов
Описание презентации по отдельным слайдам:
-
-
2 слайд
С1- 1. Требовалось написать программу, которая решает уравнение ax+b=0 относительно x для любых чисел a и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
-
3 слайд
Program urav; var a, b, x: real; begin readln(a,b,x); If b = 0 then write(‘x = 0’) else If a = 0 then write(‘нет решений’) else write(‘x =’,-b/a); end.
-
4 слайд
Последовательно выполните задания: Приведите пример таких чисел a, b, x , при которых программа неверно решает поставленную задачу. Укажите, какая часть программы является лишней. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. Решение
-
5 слайд
a=0, b=0, x=0 (выдается 0, а должно быть любое число) Лишняя часть программы – использование и ввод переменной x. Program C1_1; var a,b: real; begin write(‘Введите a и b’); readln(a,b); if a = 0 then if b = 0 then write(‘любое число’) else write(‘нет решений’) else write(‘x=’, -b/a:8:2); Readln; End.
-
6 слайд
С1-2. В программе вводятся с клавиатуры три различных целых числа a, b, c. Далее требуется преобразовать данные так, чтобы в переменной а оказалось наименьшее число, в переменной b среднее число, а в переменной с — наибольшее . Программист торопился и написал программу неправильно.
-
7 слайд
Program tri_chisla; Var a, b, c, x : integer; Begin Write(‘Введите a, b, c’); readln(a, b, c); If a>b then begin x:= a; a:= b; b:= x; end; If b>c then begin x:= b; b:= c; c:= x; end; end.
-
8 слайд
Последовательно выполните задания: Приведите пример таких чисел a, b, c , после обработки которых исходной программой соотношение a<b<c не будет выполнено. Исправьте ошибку в программе так, чтобы она полностью соответствовала постановке задачи. Решение
-
9 слайд
1) A=5, b=7, c=2 (Программа работает неправильно, если минимальное число вводится последним и попадает в переменную c). Program C1_2; var a, b, c, x: integer; Begin write(‘Введите три числа’); read(a, b, c); if a > b then begin x:=a; a:=b; b:=x; end; if b > c then begin x:=b; b:=c; c:=x; end; if a > b then begin x:=a; a:=b; b:=x; end; write(‘Упорядоченная последовательность чисел:’); writeln(a:5, b:5, c:5); readln; end.
-
10 слайд
С1-3. Требовалось написать программу, которая решает уравнение а|x|=b относительно х для любых чисел а и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу с ошибками:
-
11 слайд
Program modul; 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.
-
12 слайд
Последовательно выполните задания: Приведите пример таких чисел a, b, x, при которых программа работает неправильно. Укажите, какая часть программы является лишней. Доработайте программу так, чтобы не было случаев ее неправильной работы . Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы. Решение
-
13 слайд
a=1, b=-1, x=0 (a и b не могут иметь разные знаки) Лишняя часть программы – использование и ввод переменной x. Program C1_3; var a,b: real; begin readln(a, b); if a = 0 then if b = 0 then write (‘х — любое число’) else write (‘нет решений’) else if b = 0 then write(‘x = 0’) else if a*b < 0 then write(‘нет решений’) else write(‘x =’,b/a:8:2,’ или x =’,-b/a:8:2); Readln; end.
-
14 слайд
С1- 4. Требовалось написать программу, которая решает неравенство ax + b > 0 относительно х для любых чисел а и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и неправильно написал программу.
-
15 слайд
Program nerav1; Var a, b, x : real; Begin readln(a,b,х); if a=0 then write( ‘любое число’) else if a>0 then write( ‘x > ‘,-b/a) else write( ‘x < ‘,-b/a); End.
-
16 слайд
Последовательно выполните задания: Приведите пример таких чисел а, b, х, при которых программа неверно решает поставленную задачу. Укажите, какая часть программы является лишней. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы). Решение
-
17 слайд
1) a=0, b=-2, x=1 (значение х может быть не указано) 2) Лишняя часть программы – использование и ввод переменной x. Program C1_4; Var a, b : real; Begin readln(a, b); if a=0 then if b>0 then write( ‘любое число’) else write( ‘нет решений’) else if a>0 then write( ‘x >’,-b/a:8:2) else write( ‘x<‘,-b/a:8:2); Readln; End.
-
18 слайд
С1- 5. Требовалось написать программу, которая определяет, лежит ли точка А(х,у) внутри некоторого кольца («внутри» понимается в строгом смысле). Центр кольца находится в начале координат. Для кольца заданы внутренний и внешний радиусы R1 и R2. Известно, что R1 R2, но неизвестно какой из них больше. В том случае, когда точка А лежит внутри кольца, программа должна выводить соответствующее сообщение, в противном случае никакой выходной информации не выдается. Программист сделал в программе ошибки.
-
19 слайд
Program kolco; Var х, у, r1,r2 : real; h: геаl; {расстояние от т.А до начала координат} Begin Readln(х,у,г1,r2); h:=sgrt(x*x+y*y) ; If (h<r1) and (h>r2) then writeln(‘точка А лежит внутри кольца’); End.
-
20 слайд
Последовательно выполните задания: Приведите пример таких чисел X и Y, при которых программа неверно решает поставленную задачу. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой вариант). Решение
-
21 слайд
x=0, y=2, r1=1, r2=3 (В программе предполагается, что r1 > r2, хотя в условии это не оговаривается. Поэтому программа будет выдавать неверный ответ, когда r2 > r1 и полученное расстояние h удовлетворяет условию r1 < h < r2) . Program C1_5; var x, у, rl,r2,h :real; Begin Write(‘Введите координаты точки’); readln (x, у); Write(‘Введите радиусы двух окружностей’); readln (rl, r2); h := sqrt(x*x + y*y); if ((h < rl) AND (h > r2)) OR ((h < r2) AND (h > r1)) then writeln(‘точка А лежит внутри кольца’); Readln; end.
-
22 слайд
С1 — 6. Требовалось написать программу, которая решает неравенство ax — b < 0 относительно х для любых чисел а и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и неправильно написал программу.
-
23 слайд
Program nerav2; Var a,b,x : real; Begin readln(a,b,х); if a=0 then if b>0 then write( ‘любое число’) else write( ‘нет решений’) else write( ‘x < ‘,b/a); End.
-
24 слайд
Последовательно выполните задания: Приведите пример таких чисел а, b, х, при которых программа неверно решает поставленную задачу. Укажите, какая часть программы является лишней. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы). Решение
-
25 слайд
1) a=-5, b=10, x=-3 (a – любое отрицательное число) 2) Лишняя часть программы – использование и ввод переменной x. Program C1_6; Var a,b: real; Begin readln(a,b); if a=0 then if b>0 then write( ‘Любое число’) else write( ‘Нет решений’) else if a>0 then write( ‘x < ‘, b/a:8:2) else write( ‘x > ‘, b/a:8:2); Readln; End.
-
26 слайд
С1- 7. Требовалось написать программу, которая определяет, лежит ли точка А(хn, уn ) внутри треугольной области, ограниченной осями координат и прямой у = 2-х («внутри» понимается в строгом смысле, т.е. случай, когда т.А лежит на границе области, недопустим). В результате программа должна выводить соответствующее текстовое сообщение. Программист сделал в программе ошибки.
-
27 слайд
Var х0, у0,у : real; Begin readln(x0,y0); if (x0<2) then begin if (x0>0) then begin у = 2 — x0; if (y0 < y) then writeln ( ‘точка лежит внутри обл.’) else writeln ( ‘точка не лежит внутри обл.’); end else writeln ( ‘точка не лежит внутри обл.’); End else writeln(‘точка не лежит внутри обл.’); End.
-
28 слайд
Последовательно выполните задания: Приведите пример таких чисел Xо и Yо, при которых программа неверно решает поставленную задачу. Укажите, как нужно доработать программу, чтобы не было случаев правильной работы (можно указать любой способ доработки исходной программы). Решение
-
29 слайд
1) x=1, y=-1( не учитывается условие y>0 ) Program C1_7; var x0, у0, у: real; Begin Write(‘Введите координату точки’); readln (x0, y0); if (x0 > 0) and (x0 <2) and (y0 > 0) and (y0 < 2 — x0) then writeln (‘точка лежит внутри области’) else writein (‘точка не лежит внутри области’); Readln; End.
-
30 слайд
С1-8. Требовалось написать программу, которая решает неравенство (x — а)/(bx)>0 относительно х для любых ненулевых чисел а и b(a 0,b0), введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу с ошибками:
-
31 слайд
Program trud1; Var a, b, x : Real; Begin Readln(a, b, x); If b>0 then Write (‘x>’, a , ’или x<0’) else If a>0 then Write(‘0<x<’, a) else Write( a, ’<x<0’); Readln End.
-
32 слайд
Последовательно выполните задания: Приведите пример таких чисел a, b, x, при которых программа работает неправильно. Укажите, какая часть программы является лишней. Доработайте программу так, чтобы не было случаев ее неправильной работы . Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы. Решение
-
33 слайд
1) a = -7, b = 12, х = 0 (b – любое положительное число, a– любое отрицательное, х можно не указывать). 2) Лишняя часть программы – ввод переменной x. Program C1_8; Var a, b : real; Begin Readln(a, b); If b>0 then If a>0 then Write (‘x>’, a:8:2 , ’или x<0’) else Write (‘x<’, a:8:2 , ’или x>0’) else If a>0 then Write(‘0<x<’, a:8:2) else Write( a:8:2, ’<x<0’); Readln; End.
-
34 слайд
С1-9. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x,y) (действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.
-
35 слайд
Program tochka1; var x,y: real; begin readln(x,y); If y<=1 then If x>=0 then If y>=sin(x) then write(‘принадлежит’) else write(‘не принадлежит’); readln end.
-
36 слайд
Последовательно выполните задания: Приведите пример таких чисел x, y при которых программа работает неправильно. Доработайте программу так, чтобы не было случаев ее неправильной работы. Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы. Решение
-
37 слайд
1. Программа работает неверно для точек: (x=3.14, y=0.5) (не верно определяет принадлежность точки области) (x=0, y=1) (не выдает вообще никакого сообщения). Program C1_9; var x,y: real; begin readln(x,y); if (x >= 0) and (x <= pi/2) and (y <= 1) and (y >= sin(x)) then write(‘принадлежит’) else write(‘не принадлежит’); end.
-
38 слайд
С1_10. Требовалось написать программу, которая решает неравенство (x + а)/(bx)<0 относительно х для любого ненулевого числа b (b0) и любого неотрицательного числа а (a≥0), введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу с ошибками:
-
39 слайд
Program trud2; Var a, b, x : Real; Begin Readln(a, b, x); If a=0 then If b>0 then Write(‘Решений нет’) else Write(‘x>0 или x<0’ ) else Write( -a, ‘<x<0’); Readln End.
-
40 слайд
Последовательно выполните задания: Приведите пример таких чисел a, b, x, при которых программа работает неправильно. Укажите, какая часть программы является лишней. Доработайте программу так, чтобы не было случаев ее неправильной работы. Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы. Решение
-
41 слайд
a=10, b=-2, х=0 (a – любое положительное число, b – любое отрицательное, х можно не указывать). Лишняя часть программы – ввод переменной x. Program C1_10; Var a, b : real; Begin Readln(a, b); If a=0 then If b>0 then Write(‘Решений нет’) else Write(‘x>0 или x<0’ ) else If b>0 then Write( -a:8:2, ‘<x<0’) else Write(‘x>0 или x<’,-a:8:2 ); Readln End.
-
42 слайд
С1- 11. Требовалось написать программу, которая решает уравнение ах2+bх+с=0 относительно x для действительных чисел а, b, с, введенных с клавиатуры, о которых заведомо известно, что а0, b0, c 0. Была написана следующая программа. Известно, что программа написана с ошибками.
-
43 слайд
Program korni; Var a, b, с, D, x1, x2 : real; Begin readln(a,b,c,xl,x2); D:=b*b — 4*a*c; If (D>0) then begin x1:=(-b+sgrt(D))/(2*a); x2: = (-b-sgrt(D) )/ (2*a) ; write( ‘x1 = ‘,x1, ‘x2 = ‘,x2); end else writeln(‘действительных корней нет’); End.
-
44 слайд
Последовательно выполните задания: Приведите пример таких чисел а, Ь, с, при которых программа неверно решает поставленную задачу. Укажите, какая часть программы является лишней. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. Решение
-
45 слайд
a=1 b=2 c=1 (дискриминант равен нулю и должен быть корень, а программа выдает, что корней нет). Лишняя часть программы – ввод переменных x1, х2. Program C1_11; var a, b, с, D, xl, x2: real; begin readln(a, b, с); D := b*b — 4*a*c; if D >= 0 then begin x1 := (-b + sqrt(D)) / (2*a); x2 := (-b — sqrt(D)) / (2*a); writeln(‘xl =’, xl:8:2, ‘x2 =’, x2:8:2); end else writeln (‘действительных корней нет’); Readln; end.
-
46 слайд
С1- 12. Требовалось написать программу, которая определяет, имеется ли среди введенных с клавиатуры целых чисел а и b хотя бы одно четное. Была написана следующая программа, в которой программист сделал ошибки:
-
47 слайд
Program chet; Var a, b : integer; Begin readln(a,b); a:=a mod 2; If a>0 then b:=b mod 2; If b>0 then writeln(‘четных чисел нет’) else writeln(‘четное число есть’); End.
-
48 слайд
Последовательно выполните задания: Приведите пример таких чисел a и b, при которых программа неверно решает поставленную задачу. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы). Решение
-
49 слайд
1) a=2, b=1 (первое число четное, а второе больше 0) Program C1_12; var a, b: integer; Begin write(‘Введите два числа’); readln(a, b); if (a mod 2 = 0) or (b mod 2 = 0) then writeln (‘четное число есть’) else writeln (‘четных чисел нет’); Readln; end.
-
50 слайд
С1-13. Требовалось написать программу, которая решает следующее неравенство a > bx для любых чисел a и b. Входная информация вводится с клавиатуры. Программист торопился и написал программу некорректно:
-
51 слайд
Program ner; VAR a,b,x: real; BEGIN readln(a,b,x); if b=0 then if a<=0 then writeln(‘решения нет’) else writeln(‘x любое число’) else writeln(x,’<’,a/b); readln END.
-
52 слайд
Последовательно выполните задания: Приведите пример таких чисел a, b, x, при которых программа работает неправильно. Укажите лишнюю часть программы и ошибки. Доработайте программу так, чтобы не было случаев ее неправильной работы . Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы. Решение
-
53 слайд
1) a=5, b=-5, x=-3 (b может быть любым отрицательным числом) 2) Лишняя часть программы – использование и ввод переменной x. Program С1_13; VAR a, b: real; BEGIN readln(a,b); if b=0 then if a<=0 then writeln(‘Решения нет’) else writeln(‘x — любое число’) else if b>0 then writeln(‘x<’,a/b:8:2) else writeln(‘x>’,a/b:8:2); Readln; END.
-
54 слайд
С1-14. Требовалось написать программу, которая решает следующее неравенство ax<|b| для любых чисел а и b. Входная информация вводится с клавиатуры. Программист торопился и написал программу некорректно:
-
55 слайд
Program neraven; VAR a, b, x: real; BEGIN readln(a,b,x); If a=0 then writeln(‘x любое число’) else If a>0 then writeln(x,’<’,b/a) else writeln(x,’>’,b/a); readln END.
-
56 слайд
Последовательно выполните задания: Приведите пример таких чисел a, b, x, при которых программа работает неправильно. Укажите лишнюю часть программы и ошибки. Доработайте программу так, чтобы не было случаев ее неправильной работы . Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы. Решение
-
57 слайд
1) a=0, b=0, x=5 (х – любое число, можно не указывать) 2) Лишняя часть программы – использование и ввод переменной x. Program С1_14; VAR a,b: real; BEGIN readln(a,b); If a=0 then if b=0 then writeln(‘решений нет’) else writeln(‘x любое число’) else If a>0 then writeln(‘x<’,abs(b)/a:8:2) else writeln(‘x>’,abs(b)/a:8:2); readln; END.
-
58 слайд
С1- 15. Требовалось написать программу, которая определяет, лежит ли точка А(х0,у0) внутри квадратной области, ограниченной прямыми, параллельными осям координат : у=-2, у=2, х=-2, х=2 («внутри» понимается в строгом смысле). В результате программа должна выводить соответствующее текстовое сообщение. Программист сделал в программе ошибки.
-
59 слайд
Program tochka; Var х0,у0,у : real; Begin readln(х0,у0); If (x0<2) then begin If (x0>-2) then If (y0<2) then writeln(‘точка лежит внутри области’); end else writeln(‘точка не лежит внутри области’); End.
-
60 слайд
Последовательно выполните задания: Приведите пример таких чисел х0 и у0, при которых программа неверно решает поставленную задачу. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы). Решение
-
61 слайд
x=0, y=-7 (точка в область не попала, а программа не выдает никаких сообщений). Program C1_15; var x0, y0: real; Begin write(‘Введите координаты точки’); readln (x0, y0); if (x0 < 2) and (x0 > -2) and (y0 < 2) and (y0 > -2) then writeln(‘точка лежит внутри области’) else writeln(‘точка не лежит внутри области’); readln; end.
-
62 слайд
С1- 16. Требовалось написать программу, которая определяет, можно ли построить треугольник из отрезков с длинами х, у и z. Программа должна выводить соответствующее текстовое сообщение. Программист сделал в программе ошибки:
-
63 слайд
Program treug; Var x,у,z :real; Begin Readln (х,у,z); If (x+y>z) then begin If (x+z>y) then If (y+z>x) then writeln( ‘треугольник построить можно’); end else writeln(‘треугольник построить нельзя’); End.
-
64 слайд
Последовательно выполните задания: Приведите пример таких чисел х, у и z, при которых программа неверно решает поставленную задачу. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы). Решение
-
65 слайд
1) x=2, y=4, z=1 (не выдается никакого сообщения, если первое условие истинно (x + y > z), а одно из других – ложно) Program C1_16; var х, у, z: real; Begin Write(‘Введите длины трех отрезков’); readln (x, у, z); if (x + y > z) and (x + z > y) and (y + z > x) then writeln(‘треугольник построить можно’) else writeln(‘треугольник построить нельзя’); Readln; end.
-
66 слайд
С1- 17. Окружность на плоскости задана координатами центра и радиусом. Даны две окружности. Требовалось определить, имеют ли они точку касания. Программист поторопился и сделал в программе ошибки:
-
67 слайд
Program okrug; Var x1,у1,r1,x2,y2,r2 :real; Begin Readln (х1,у1,r1); Readln (х2,у2,r2); If sqrt(sqr(x2-x1)+sqr(y2-y1))=r1+r2 then writeln( ‘да’) else writeln( ‘нет’); End.
-
68 слайд
Последовательно выполните задания: Приведите пример таких исходных данных, при которых программа неверно решает поставленную задачу. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы). Решение
-
69 слайд
1) x1=4, y1=4, r1=4 , x2=4, y2=2, r2=2 (случай внутреннего касания) Program C1_17; Var x1,у1,r1,x2,y2,r2 :real; Begin Readln (х1,у1,r1); Readln (х2,у2,r2); If (sqrt(sqr(x2-x1)+sqr(y2-y1))=r1+r2) OR (sqrt(sqr(x2-x1)+sqr(y2-y1))=abs(r1-r2)) then writeln( ‘да’) else writeln( ‘нет’); Readln; End.
-
70 слайд
С1- 18. Требовалось написать программу нахождения количества цифр в записи натурального числа А. Программист поторопился и сделал в программе ошибки:
-
71 слайд
Program cifri; Var a,s :longint; Begin write(‘Введите число’); Readln (А); s:=0; while a>=10 do a:= a div 10; s:=s+1; writeln(‘Количество цифр:’,s); readln End.
-
72 слайд
Последовательно выполните задания: Приведите пример таких исходных данных, при которых программа неверно решает поставленную задачу. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы). Решение
-
73 слайд
1) а=124 (любое число большее 9) Program C1_18; Var a,s :longint; Begin write(‘Введите целое число’); Readln(А); s:=0; while a<>0 do begin a:= a div 10; s:=s+1; end; writeln(‘Количество цифр:’,s); readln End.
-
74 слайд
С1-19. Составить программу, которая вводит с клавиатуры координаты точки на плоскости (x,y) и определяет принадлежность точки заштрихованной области, включая ее границы.
-
75 слайд
VAR x, y : real; Begin readln ( x, y ); If Y <= x-1 then if y <= 0 then if y > — sin(x) then Writeln (‘принадлежит’) else Writeln(‘не принадлежит’); end. Найти ошибки в программе. Решение
-
76 слайд
x= 3 , y= 5 {любая пара, для которой выполняются условия: (y>x-1) или (y>0) или ((y>-sinx) и (y<=0) и (x>=2 .)) } Program C1_19; var x, y: real; begin write(‘Введите коорд. точки’); readln(x, y); if (y <= x-1) and (y <= 0)) and (y >= -sin(x)) and (x<=pi) then write(‘принадлежит’) else write(‘не принадлежит’); readln; end. Проверяемые в программе условия выделяют следующие области (закрашены желтым цветом). 2
-
77 слайд
С1-20. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно
-
78 слайд
var x, y: real; begin readln(x, y); if y >= x then if y >= 0 then if y <= 2-x*x then write(‘принадлежит’) else write(‘не принадлежит’); end.
-
79 слайд
Последовательно выполните задания: Приведите пример таких исходных данных, при которых программа неверно решает поставленную задачу. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы (можно указать любой способ доработки исходной программы). Решение
-
80 слайд
1) x=0.5, y=0.2 (проверяемые условия выделяют только область, обозначенную на рисунке синим цветом, а не всю заштрихованную серую область. ) Program C1_20; var x, y: real; begin write(‘Введите координаты точки’); readln(x, y); if ((y >= x) or (y >= 0)) and (y <= 2-x*x) then write(‘принадлежит’) else write(‘не принадлежит’); readln; end.
-
81 слайд
С.С. Крылов, П.А. Якушкин. ЕГЭ 2010. Информатика: сборник экзаменационных заданий. /ФИПИ — М.: Эксмо, 2009. П.А. Якушкин, Д.М. Ушаков. Самое полное издание типовых вариантов реальных заданий ЕГЭ 2010. Информатика. — М.: Астрель, 2009. О.В. Ярцева, Е.Н. Цикина. ЕГЭ-2009. Информатика. Самые новые задания. – М.: АСТ: Астрель, 2009. http:/kpolyakov.narod.ru Евграфова Ольга Владимировна, учитель информатики МОУ гимназии №8 г.о. Коломна Московской области
Краткое описание документа:
В презентации рассматриваются задачи на языке Паскаль, которые могут быть предложены на едином государственном экзамене по информатике во второй части работы. Требуется найти и исправить ошибки в программе.
При выполнении такого задания необходимо осуществить «ручную прокрутку задачи» с использованием трассировочной таблицы. Прослеживая за значениями переменных, необходимо понять алгоритм работы программы. А значит понять, в каком месте допущены ошибки.
Ученики должны хорошо знать правила построения программы, правила работы с переменными, основные операторы и особенности их работы. Ключевая тема этого задания ЕГЭ — использование вложенных условных операторов.
Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:
6 285 025 материалов в базе
- Выберите категорию:
- Выберите учебник и тему
- Выберите класс:
-
Тип материала:
-
Все материалы
-
Статьи
-
Научные работы
-
Видеоуроки
-
Презентации
-
Конспекты
-
Тесты
-
Рабочие программы
-
Другие методич. материалы
-
Найти материалы
Другие материалы
- 22.11.2014
- 1805
- 0
Рейтинг:
5 из 5
- 22.11.2014
- 4687
- 174
- 22.11.2014
- 1075
- 0
- 22.11.2014
- 3560
- 8
- 22.11.2014
- 3606
- 0
Рейтинг:
3 из 5
- 22.11.2014
- 6934
- 93
deadkill 0 / 0 / 1 Регистрация: 03.12.2011 Сообщений: 17 |
||||
1 |
||||
Нужно найти ОШИБКУ в программе06.04.2012, 01:34. Показов 1360. Ответов 2 Метки нет (Все метки)
УСЛОВИЕ:
0 |
8385 / 6147 / 615 Регистрация: 10.12.2010 Сообщений: 28,683 Записей в блоге: 30 |
|
06.04.2012, 02:59 |
2 |
Какие ошибки выдает?
0 |
deadkill 0 / 0 / 1 Регистрация: 03.12.2011 Сообщений: 17 |
||||
08.04.2012, 20:32 [ТС] |
3 |
|||
С той вообще всё не очень пошло, вот попробывал новую, но она тоже до конца не работает, всё таки строковый тип данных мне не даётся.
Может эту поможете до ума довести? Добавлено через 23 часа 30 минут
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
08.04.2012, 20:32 |
Помогаю со студенческими работами здесь Нужно найти ошибку в программе Нужно найти ошибку в программе простенькой задачи (Время: 1 сек. Память: 16 Мб Сложность: 25%) Нужно найти ошибку в программе, встает и не работает дальше Var нужно найти ошибку в программе, буду в крайней степени благодарен Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 3 |
Это архив, который содержит саму практическую работу, дополнительное задание № 4 (для сильных классов) и верное решение всех программ.
Просмотр содержимого документа
«ПР ОШИБКИ»
Практическая работа:
«Поиск и исправление ошибок в программах. Одномерные массивы»
№ 1 Дан линейный массив размерности п действительных чисел. Подсчитать сколько в нём отрицательных, положительных и нулевых элементов. |
program line 1; useс crt; const n1=100; var a:array[1..n] of real; i, n,kpol, kotr, kzero: integer; begin writeln (‘введите размерность вашего массива’); readln(n); randoize; textColor(4); for i:= to n do begin a[i]:=randon(100)-50; if (a[i]or (a[i]30) a[i]:=0; write(a[i],’ ‘); end; writeln; textColor(2); kpol:=0; kotr:=0; kzero:=0; for i:=1 to n do if a[i]000 then kpol:=kpol+1 else if a[i]then kotr:=kotr+1 else kzero:=kzero+1; writeln textColor(3); writeln(‘количество положительных элементов =’, kol); textColor(4); writeln(‘количество отрицательных элементов =’, kotr); textColor(5); writeln(‘количество нулевых элементов =’, kzero); end |
№ 2 Дан линейный массив размерности 20 действительных чисел. Выдать на экране новый массив, сформированный из положительных элементов первоначального массива. |
program masiv1; uses crt; var i;integer; m:array [0..100] of real; begin randomize; textColor(4); writeln (‘ваш массив)‘; textColor(3); for i:=1 to 20 begin; m[i]:=random(20)-10; write([i],’ )‘; end; writelne; textColor(5); writeln (‘ваш новый массив‘); textColor(10); for i:=1 to do begin if m[i]0 write (m[i],’ ‘); end. |
№ 3 Дана последовательность п чисел. Указать наименьшую длину числовой оси, содержащую все эти числа. |
program masiv_dlina; uses crt; var i,n:real; m:array [0..100] of real; dlina, min, max:real; begin writeln (‘введите размерность вашего массива’) readln(n); randomize; textColor(1); writeln(‘ваш массив‘); for i:=1 n do m[i]:=random(100)-50; write(m[i]:6:1,’ ‘); end; writeln; min:=m[1]; max:=m[1]; for i:=1 to n do; if m[i]max then max:=m[i] else if m[i]then min:=m[i]; dlina:=abs(min-max) writeln; textColor(5); writeln(‘наименьший элемент =’,min); writeln(‘наибольший элемент =’,max); writeln; textColor(3); writeln(‘длина отрезка =’,dlina); |
Просмотр содержимого документа
«ПР Поиск ошибок ОДНОМЕРНЫЕ массивы»
Практическая работа:
«Поиск и исправление ошибок в программах. Одномерные массивы»
№ 1 Дан линейный массив размерности п действительных чисел. Подсчитать сколько в нём отрицательных, положительных и нулевых элементов. |
program line1; uses crt; const n1=100; var a:array[1..n1] of real; i, n,kpol, kotr, kzero: integer; begin writeln (‘введите размерность вашего массива’); readln(n); randomize; textColor(4); for i:=1 to n do begin a[i]:=random(100)-50; if (a[i]or (a[i]30) then a[i]:=0; write(a[i],’ ‘); end; writeln; textColor(2); kpol:=0; kotr:=0; kzero:=0; for i:=1 to n do if a[i]0 then kpol:=kpol+1 else if a[i]then kotr:=kotr+1 else kzero:=kzero+1; writeln; textColor(3); writeln(‘количество положительных элементов =’, kpol); textColor(4); writeln(‘количество отрицательных элементов =’, kotr); textColor(5); writeln(‘количество нулевых элементов =’, kzero); end. |
№ 2 Дан линейный массив размерности 20 действительных чисел. Выдать на экране новый массив, сформированный из положительных элементов первоначального массива. |
program masiv1; uses crt; var i:integer; m:array [0..100] of real; begin randomize; textColor(4); writeln (‘ваш массив‘); textColor(3); for i:=1 to 20 do begin m[i]:=random(20)-10; write(m[i],’ ‘); end; writeln; textColor(5); writeln (‘ваш новый массив‘); textColor(10); for i:=1 to 20 do begin if m[i]0 then write (m[i],’ ‘); end; end. |
№ 3 Дана последовательность п чисел. Указать наименьшую длину числовой оси, содержащую все эти числа. |
program masiv_dlina; uses crt; var i,n:integer; m:array [0..100] of real; dlina, min, max:real; begin writeln (‘введите размерность вашего массива‘); readln(n); randomize; textColor(1); writeln(‘ваш массив‘); for i:=1 to n do begin m[i]:=random(100)-50; write(m[i]:6:1,’ ‘); end; writeln; min:=m[1]; max:=m[1]; for i:=1 to n do if m[i]max then max:=m[i] else if m[i]then min:=m[i]; dlina:=abs(min-max); writeln; textColor(5); writeln(‘наименьший элемент =’,min); writeln(‘наибольший элемент =’,max); writeln; textColor(3); writeln(‘длина отрезка =’,dlina); end. |
№ 4 (записать на доске) Замена всех элементов массива, больших заданного числа к.
program masiv_dlina;
uses crt;
var i,k:integer;
m:array [0..100] of integer;
begin
writeln(‘введите число для необходимой замены’);
readln(k);
randomize;
textColor(1);
writeln(‘ваш массив‘);
for i:=1 to 6 do
begin
m[i]:=random(100)-50;
write(m[i],’ ‘);
end;
writeln;
textColor(5);
writeln(‘все элементы большие ‘,k,’ будут заменены на ‘,k);
writeln;
textColor(2);
writeln(‘ваш новый массив‘);
for i:=1 to 6 do
begin
if m[i]k then m[i]:=k;
write(m[i],’ ‘);
end;
end.
Просмотр содержимого документа
«задание 4 НА ЭКРАНЕ»
№ 4 (записать на доске) Замена всех элементов массива, больших заданного числа к.
program masiv dlina;
uses crt
vare i, k integer:
m: array [0..100] of integer;
begin;
writein(‘введите число для необходимой замены’)
readln(k);
randovize;
textColor (1);
writeln (‘ваш массив‘);
for i:=1 6 do
begin
m[i]=random(100)-50;
write (m[i] ‘ ‘);
end
writeln;
textColor(5);
writeln(‘все элементы большие ‘,k,’ будут заменены на ‘, k);
writeln;
textColor(2);
writel (‘ваш новый массив‘);
for i:=1 to 6
begin
if m[i]k then m[i]:=k
write(m[i],’ ‘);
end.