Поиск и исправление ошибок в программе Ответами к заданиям являются слово, словосочетание, число или последовательность слов, чисел. 1 1 Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.) Бейсик DIM N AS LONG INPUT N max digit = 0 WHILE N > 0 digit = N \ 10 IF digit > max digit THEN max digit = digit END IF N = N \ 10 WENDPRINT digit END Паскаль var N: longint;иdigit, max digit: integer; begin readln(N); max digit := 0; while N > 0 do begin digit := N div 10; if digit > max digit then max digit := digit; N := N div 10; end; writeln(digit); end. Си #include <stdio.h> int main(){ long int N; int digit, max digit; scant("%ld", &N); max digit = 0; while (N > 0) { digit = N / 10; if (digit > max digit) max digit = digit; N = N / 10; } printf("%dM, digit);} Алгоритмический язык алгнач цел N, digit, max digit ввод N max digit := 0 нц пока N > 0 digit := div(N, 10) если digit > max digit то max digit := digit все N := div(N, 10) кц вывод digitкон Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 673. 2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, — приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. 2 2 Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.) Бейсик DIM N AS LONGDIM product AS LONGINPUT Nproduct = 0WHILE N > 0 digit = N MOD 10 product = product + digit N = N \ 10 WENDPRINT product END Паскаль var N, product: longint; digit: integer; begin readln(N); product := 0; while N > 0 do begin digit := N mod 10; product := product + digit; N := N div 10; end; writeln(product); end. Си #include <stdio.h> int main(){ long int N, product; int digit; scant("%ld", &N); product = 0; while (N > 0) { digit = N % 10; product = product + digit; N = N / 10; } printf("%d", product);} Алгоритмический язык алг нач цел N, digit, product ввод N product := 0 нц пока N > 0 digit := mod(N, 10) product := product + digit N := div(N, 10) кц вывод productкон Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 133. 2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, — приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. 3 3 Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.) Бейсик DIM N AS LONG INPUT Nmin digit = 10 WHILE N > 0 digit = N \ 10 IF digit < min digit THEN min digit = digit END IF N = N \ 10 WENDPRINT digit END Алгоритмический язык алгнач цел N, digit, min digit ввод N min digit := 10 нц пока N > 0 digit := div(N, 10) если digit < min digit то min digit := digit все N := div(N, 10) кц вывод digitкон Паскаль var N: longint; digit, min digit: integer; begin readln(N); min digit := 10; while N > 0 do begin digit := N div 10; if digit < min digit then min digit := digit; N := N div 10; end;writeln(digit); end. Си #include <stdio.h> int main(){ long int N; int digit, min digit; scant("%ld", &N); min digit = 10; while (N > 0) { digit = N / 10; if (digit < min digit) min digit = digit; N = N / 10; } printf("%d", digit);} Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 642. 2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, — приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. 4 4 На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество чётных чисел в исходной последовательности и максимальное чётное число. Если чётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта написанная им программа для Вашего удобства приведена на пяти языках программирования. Бейсик CONST n = 4count = 0maximum = 1000FOR I = 1 TO n INPUT x IF x mod 2 = 0 THEN count = count + 1 IF x > maximum THEN maximum = I END IF END IFNEXT IIF count > 0 THEN PRINT count PRINT maximumELSE PRINT "NO"END IF Python n = 4count = 0maximum = 1000for i in range (1, n+1): x = int(input()) if x % 2 == 0: count += 1 if x > maximum: maximum = iif count > 0: print (count) print (maximum)else: print ("NO") Алгоритмический язык алгнач цел n = 4 цел i, x цел maximum, count count := 0 maximum := 1000 нц для i от 1 до n ввод x если mod(x, 2) = 0 то count := count + 1 если x > maximum то maximum := i все все кц если count > 0 то вывод count, нс вывод maximum иначе вывод "NO" всекон Паскаль const n = 4;var i, x: integer;var maximum, count: integer;begin count := 0; maximum := 1000; 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. Си #include <stdio.h>#define n 4void main(void){ int i, x; int maximum, count; count = 0; maximum = 1000; for (i = 1; i <= n; i++) { scanf("%d",&x); if (x % 2 == 0) { count++; if (x > maximum) maximum = i; } } if (count > 0) { printf("%d\n", count); printf("%d\n", maximum); } else printf("NO\n");} Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе последовательности: 2 9 4 3 2. Приведите пример такой последовательности, содержащей хотя бы одно чётное число, что, несмотря на ошибки, приведённая программа печатает правильный ответ. 3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки. Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Примечание: 0 – чётное число. 5 5 Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.) Бейсик DIM N AS LONG INPUT N max digit = 0 WHILE N >= 10 digit = N MOD 10 IF digit < max digit THEN max digit = digit END IF N = N \ 10 WENDPRINT max digit END Алгоритмический язык алгнач цел N, digit, max digit ввод N max digit := 0 нц пока N >= 10 digit := mod(N, 10) если digit < max digit to max digit := digit все N := div(N, 10) кц вывод max digitкон Паскаль var N: longint; digit, max digit: integer; begin readln(N); max digit := 0; 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 <stdio.h> int main(){ long int N; int digit, max digit; scant("%ld", &N); max digit = 0; while (N >= 10) { digit = N % 10; if (digit < max digit) max digit = digit; N = N / 10; } printf("%dM, max digit);} Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 762. 2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, — приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. 6 6 На обработку поступает положительное целое число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр этого числа, меньших 7. Если в числе нет цифр, меньших 7, требуется на экран вывести 0. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования. Бейсик DIM N, DIGIT, SUM AS LONGINPUT NSUM = 0WHILE N > 0 DIGIT = N MOD 10 IF DIGIT < 7 THEN SUM = SUM + 1 END IF N = N \ 10WENDPRINT DIGIT Python N = int(input())sum = 0while N > 0: digit = N % 10 if digit < 7: sum = sum + 1 N = N // 10print(digit) Алгоритмический язык алгнач цел N, digit, sum ввод N sum := 0 нц пока N > 0 digit := mod(N,10) если digit < 7 то sum := sum + 1 все N := div(N,10) кц вывод 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. Си #include <stdio.h>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); return 0;} Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 456. 2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ. 3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки. Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. 7 7 Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.) Бейсик DIM N AS LONGDIM product AS LONGINPUT Nproduct = 1WHILE N > 0 digit = N MOD 10 digit = product * digit N = N \ 10WENDPRINT digitEND Паскаль var N, product: longint; digit: integer;begin readln(N); product := 1; while N > 0 do begin digit := N mod 10; digit := product * digit; N := N div 10; end; writeln(digit);end. Си #include <stdio.h>int main(){ long int N, product; int digit; scant("%ld", &N); product = 1; while (N > 0) { digit = N % 10; digit = product * digit; N = N / 10; } printf("%d", digit);} Алгоритмический язык алгнач цел N, digit, product ввод N product := 1 нц пока N > 0 digit := mod(N, 10) digit := product * digit N := div(N, 10) кц вывод digitкон Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 325. 2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, — приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. 8 8 На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр числа, кратных трём. Если в числе нет таких цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования. Бейсик DIM N, DIGIT, SUM AS LONGINPUT NSUM = N MOD 10WHILE N > 0 DIGIT = N MOD 10 IF DIGIT MOD 3=0 THEN SUM = DIGIT END IF N = N \ 10 WENDIF SUM > 0 THEN PRINT SUMELSE PRINT "NO"END IF Python N = int (input())sum = N % 10while N > 0: digit = N % 10 if digit % 3 == 0: sum = digit N = N // 10if sum > 0: print(sum) else: print("NO") Алгоритмический язык алгнач цел N, digit, sum ввод N sum := mod(N,10) нц пока N > 0 digit := mod(N,10) если mod(digit, 3) = 0 to sum : = digit все N := div(N,10) кц если sum > 0 to вывод sum иначе вывод "NO" всекон Паскаль var N, digit, sum: longint;begin readln(N); sum := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 3=0 then sum := digit; N := N div 10; end; if sum > 0 then writeln(sum) else writeln('NO')end. Си #include <stdio.h> int main(){ int N, digit, sum; scanf ("%d", &N); sum = N % 10; while (N > 0) { digit = N % 10; if (digit % 3 == 0) sum = digit; N = N / 10; } if (sum >0) printf("%d",sum); else printf("NO"); return 0;} Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 578. 2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ. 3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки. Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. 9 9 Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.) Бейсик DIM N AS LONGINPUT Nmax digit = 9WHILE N > 0 digit = N MOD 10 IF digit > max digit THEN digit = max digit END IF N = N \ 10WENDPRINT max_digitEND Паскаль var N: longint; digit, max digit: integer;begin readln(N); max digit := 9; while N > 0 do begin digit := N mod 10; if digit > max digit then digit := max digit; N := N div 10; end; writeln(max digit); end. Си #include <stdio.h>int main(){ long int N; int digit, max digit; scant("%ld", &N); max digit = 9; while (N > 0) { digit = N % 10; if (digit > max digit) digit = max digit; N = N / 10; } printf(M%d", max digit);} Алгоритмический язык алгнач цел N, digit, max digit ввод N max digit := 9 нц пока N > 0 digit := mod(N, 10) если digit > max digit to digit := max digit все N := div(N, 10) кцвывод max_digitкон Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 384. 2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, — приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. 10 10 На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество всех чисел исходной последовательности, которые делятся на 11, и сумму таких чисел. Если в последовательности нет чисел, которые делятся на 11, то на экран нужно вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведёна на четырёх языках программирования. Бейсик CONST n = 4 count = 0 sum = 0FOR I = 1 ТО n INPUT x IF x mod 11 = 0 THEN count = count + 1 sum = x END IF NEXT IIF sum > 0 THEN PRINT count PRINT sum ELSE PRINT "NO"END IF Алгоритмический язык алгнач цел n = 4 цел i, х цел sum, count count := 0 sum := 0 нц для i от 1 до n ввод x если mod(x, 11) = 0 то count := count + 1 sum := х все кц если sum > 0 то вывод count, нс вывод sum, нс иначе вывод "NO" всекон Паскаль const n = 4;var i, x: integer;var sum, count: integer;begin count := 0; sum := 0; for i := 1 to n do begin read(x); if x mod 11 = 0 then begin count := count + 1; sum := x end end; if sum > 0 then begin writeln(count); writeln(sum) end else writeln('NO')end. Си #define n 4 void main(void){ int i, x; int sum, count; count = 0; sum = 0; for (i = 1; i <= n; i++) #include <stdio.h> { scanf("%d", &x) ; if (x % 11 == 0) { count++; sum = x; } } if (sum > 0) { printf("%d\n", count); printf("%d\n", sum); } else printf("N0\n");} Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе последовательности: 22 33 65 45 2. Приведите пример такой последовательности, содержащей хотя бы одно число, кратное 11, что, несмотря на ошибки, программа печатает правильный ответ. 3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки. Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Примечание: 0 делится на любое целое число. 0 из 10 № Ваш ответ Правильный ответ Здесь появится результат тестовой части. Нажмите на кнопку «Завершить работу», чтобы увидеть правильные ответы. Завершить работу