paneev02 0 / 0 / 0 Регистрация: 27.05.2019 Сообщений: 96 |
||||
1 |
||||
Нужно найти ошибки и исправить программу29.01.2023, 13:40. Показов 711. Ответов 3 Метки нет (Все метки)
0 |
rim41 1128 / 296 / 75 Регистрация: 16.03.2020 Сообщений: 930 |
||||
29.01.2023, 13:42 |
2 |
|||
1 |
Parramon 778 / 562 / 146 Регистрация: 04.03.2022 Сообщений: 1,181 |
||||
02.02.2023, 15:12 |
3 |
|||
1 |
OlegChe -415 / 32 / 20 Регистрация: 12.07.2014 Сообщений: 127 |
||||
02.02.2023, 16:21 |
4 |
|||
0 |
Автор материалов — Лада Борисовна Есакова.
Самая распространенная ошибка, которую нужно найти и исправить – это неправильное использование вложенных условных операторов. Для усложнения поиска возможно неправильное форматирование текста (неправильно поставленные отступы).
Для того, чтобы найти ошибку, нужно поставить в соответствие друг другу все части условного оператора 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
Информатика,
вопрос задал Tayxd,
4 года назад
Добавить свой ответ
Ответы на вопрос
Ответил malfoyd620
3
Ответ:
a)
program Examрle1;
var m: integer; h, g, A: real;
begin
m:=10;
g:=9.8;
h:=5.5;
A:=m*g*h;
write( ‘A= ‘, A)
end.
b)
program Examрle2;
var a, b, c: real;
begin
a:=2.5;
b:=3.0;
writeln(a,’ ‘,b);
c:=a;
a:=b;
b:=c;
write (a,’ ‘,b)
end.
Добавить свой ответ
Предыдущий вопрос
Следующий вопрос
Новые вопросы
Английский язык,
2 месяца назад
составь предложение went,bed ,Yesterday,to,she,early. Ann,lays, the, table,morning,in.
Русский язык,
2 месяца назад
Допишите правила которые надо знать что бы правильно раскрыть скобки Имена существительные с предлогами пишутся ……. Местоимения с предлогами пишутся…… Частица не с…
Математика,
4 года назад
Помогиитееее 50 баллов…
Математика,
4 года назад
В магазин завезли овощи.Две девятых всех овощей-огурцы,а пять десятых всех овощей -картофель.СКОЛЬКО кг огурцов завезли в магазин , если картофеля завезли 135кг?
Математика,
6 лет назад
19344/156. 42416/176. 12865/415. 14352/624. столбиком.
Химия,
6 лет назад
Помогите пожалуйста
Установите молекулярную формулу вещества , если известно, что оно содержит по массе : 31,9% C, 5,3% H и 62,8% Cl. Плотность по воздуху равна 3,9. Напишите формулы изомеров и…
Всего: 44 1–20 | 21–40 | 41–44
Добавить в вариант
Задания Д24 C1 № 8112
i
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 3. Если в числе нет цифр, кратных 3, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Напоминание: 0 делится на любое натуральное число.
Бейсик | Python |
---|---|
DIM N, DIGIT, MAXDIGIT AS LONG INPUT N MAXDIGIT = N MOD 10 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT MOD 3 = 0 THEN IF DIGIT > MAXDIGIT THEN MAXDIGIT = DIGIT END IF END IF N = N 10 WEND IF MAXDIGIT = 0 THEN PRINT «NO» ELSE PRINT MAXDIGIT END IF |
N = int(input()) maxDigit = N % 10 while N > 0: digit = N % 10 if digit % 3 == 0: if digit > maxDigit: maxDigit = digit N = N // 10 if maxDigit == 0: print(«NO») else: print(maxDigit) |
Паскаль | Алгоритмический язык |
var N,digit,maxDigit: longint; begin readln(N); maxDigit := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 3 = 0 then if digit > maxDigit then maxDigit := digit; N := N div 10; end; if maxDigit = 0 then writeln(‘NO’) else writeln(maxDigit) end. |
алг нач цел N, digit, maxDigit ввод N maxDigit := mod(N,10) нц пока N > 0 digit := mod(N,10) если mod(digit, 3) = 0 то если digit > maxDigit то maxDigit := digit все все N := div(N,10) кц если maxDigit = 0 то вывод «NO» иначе вывод maxDigit все кон |
Си++ | |
#include <iostream> using namespace std; int main() { int N, digit, maxDigit; cin >> N; maxDigit = N % 10; while (N > 0) { digit = N % 10; if (digit % 3 == 0) if (digit > maxDigit) maxDigit = digit; N = N / 10; } if (maxDigit == 0) cout << «NO»; else cout << maxDigit<< endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 134.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 8672
На обработку поступает последовательность из четырёх целых чисел. Нужно написать программу, которая выводит на экран количество неотрицательных чисел последовательности и их произведение. Если неотрицательных чисел нет, требуется вывести на экран «NO». Известно, что вводимые числа по абсолютной величине не превышают 10. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
count = 0 p = 0 FOR I = 1 TO 4 INPUT x IF x >= 0 THEN p = p*x count = count + 1 END IF NEXT I IF count > 0 THEN PRINT x PRINT p ELSE PRINT «NO» END IF |
count = 0 p = 0 for i in range(1, 5): x = int(input()) if x >= 0: p = p*x count = count + 1 if count > 0: print(x) print(p) else: print(«NO») |
Алгоритмический язык | Паскаль |
алг нач цел p,i,x,count count := 0 p := 0 нц для i от 1 до 4 ввод x если x >= 0 то p := p*x count := count+1 все кц если count > 0 то вывод x, нс вывод p иначе вывод «NO» все кон |
var p,i,x,count: integer; begin count := 0; p := 0; for i := 1 to 4 do begin read (x); if x >= 0 then begin p := p*x; count := count+1; end end; if count > 0 then begin writeln(х); writeln(p); end else writeln(‘NO’); end. |
Си++ | |
#include <iostream> using namespace std; int main(void) { int p, i, x, count; count = 0; p = 0; for (i = 1; i <= 4; i++) { cin >> x; if (x >= 0) { p = p*x; count = count+1; } } if (count > 0) { cout << x << «n»; cout << p << «n»; } else cout << «NOn»; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности -5 2 1 3.
2. Приведите пример такой последовательности, содержащей хотя бы одно неотрицательное число, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 9176
На обработку поступает последовательность из четырёх целых чисел. Нужно написать программу, которая выводит на экран сумму всех отрицательных чисел последовательности и максимальное число в последовательности.
Известно, что вводимые числа по абсолютной величине не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
mx = 0 s = 0 FOR I = 1 TO 4 INPUT x IF x < 0 THEN s = x END IF IF x > mx THEN mx = x END IF NEXT I PRINT s PRINT mx |
mx = 0 s = 0 for i in range(1, 5): x = int(input()) if x < 0: s = x if x > mx: mx = x print(s) print(mx) |
Алгоритмический язык | Паскаль |
алг нач цел s,i,x,mx mx := 0 s := 0 нц для i от 1 до 4 ввод x если x < 0 то s := x все если x > mx то mx := x все кц вывод s, нс вывод mx кон |
var s,i,x,mx: integer; begin mx := 0; s := 0; for i := 1 to 4 do begin read (x); if x < 0 then s := x; if x > mx then mx := x; end; writeln(s); writeln(mx); end. |
Си++ | |
#include <iostream> using namespace std; int main(void) { int s, i, x, mx; mx = 0; s = 0; for (i = 1; i <= 4; i++) { cin >> x; if (x < 0) { s = x; } if (x > mx) { mx = x; } } cout << s << «n»; cout << mx << «n»; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности -5 2 -4 3.
2. Приведите пример такой последовательности, содержащей хотя бы одно неотрицательное число, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 9375
i
На обработку поступает положительное целое число, не превышающее 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 <iostream> using namespace std; int main() { int N, digit, sum; cin >> N; sum = 0; while (N > 0) { digit = N % 10; if (digit < 7) sum = sum + 1; N = N / 10; } cout << digit<< endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 456.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 9659
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число A, не превосходящее 109, и выводится произведение его цифр. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бейсик | Паскаль |
---|---|
DIM A AS LONG DIM pr AS LONG INPUT A pr = 0 WHILE A >= 10 pr = pr * (A MOD 10) A = A 10 WEND PRINT pr END |
var A,pr: longint; begin readln(A); pr := 0; while A >= 10 do begin pr:=pr * (A mod 10); A := A div 10; end; writeln(pr); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int A,pr; cin >> A; pr = 0; while (A >= 10) { pr = pr * (A%10); A = A /10; } cout « pr « endl; } |
алг нач цел A, pr ввод A pr := 0 нц пока A >= 10 pr := pr * mod (A, 10) A := div(A, 10) кц вывод pr кон |
Python | |
A = int(input()) pr = 0 while A >= 10: pr = pr * (A % 10) A //= 10 print(pr) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 123.
2. Найдите все ошибки в этой программе (их может быть одна или несколько).
Для каждой ошибки:
а) выпишите строку, в которой сделана ошибка;
б) укажите, как исправить ошибку: приведите правильный вариант строки.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Задания Д24 C1 № 9705
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число A, не превосходящее 109, и выводится количество цифр в десятичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бейсик | Паскаль |
---|---|
DIM A AS LONG INPUT A cnt = 0 WHILE A > 1 cnt = cnt + A MOD 10 A = A 10 WEND PRINT cnt END |
var A: longint; cnt: integer; begin readln(A); cnt := 0; while A > 1 do begin cnt:=cnt + A mod 10; A := A div 10; end; writeln(cnt); end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int A; int cnt; cin >> A; cnt = 0; while (A > 1) { cnt = cnt + A%10; A = A /10; } cout « cnt « endl; } |
алг нач цел A, cnt ввод A cnt := 0 нц пока A > 1 cnt := cnt + mod(A, 10) A := div(A, 10) кц вывод cnt кон |
Python | |
A = int(input()) cnt = 0 while A > 1: cnt += A % 10 A //= 10 print(cnt) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 111.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а) выпишите строку, в которой сделана ошибка;
б) укажите, как исправить ошибку: приведите правильный вариант строки.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр числа, кратных трём. Если в числе нет таких цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
DIM N, DIGIT, SUM AS LONG INPUT N SUM = N MOD 10 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT MOD 3 = 0 THEN SUM = DIGIT END IF N = N 10 WEND IF SUM >0 THEN PRINT SUM ELSE PRINT «NO» END IF |
N = int(input()) sum = N % 10 while N > 0: digit = N % 10 if digit % 3 == 0: sum = digit N = N // 10 if sum > 0: print(sum) else: print(«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. |
алг нач цел N, digit, sum ввод N sum := mod(N, 10) нц пока N > 0 digit := mod(N,10) если mod(digit, 3) = 0 то sum := digit все N := div(N,10) кц если sum > 0 то вывод sum иначе вывод «NO» все кон |
Си++ | |
#include <iostream> using namespace std; int main() { int N, digit, sum; cin >> N; sum = N % 10; while (N > 0) { digit = N % 10; if (digit % 3 == 0) sum = digit; N = N / 10; } if (sum > 0) cout « sum « endl; else cout << «NO»; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 578.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки. Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр числа, не кратных трём. Если в числе нет таких цифр, требуется на экран вывести «N0». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
DIM N, DIGIT, SUM AS LONG INPUT N SUM = 0 WHILE N > 10 DIGIT = N MOD 10 IF DIGIT MOD 3 = 0 THEN SUM = SUM + DIGIT END IF N = N 10 WEND IF SUM >0 THEN PRINT SUM ELSE PRINT «NO» END IF |
N = int(input()) sum = 0 while N > 10: digit = N % 10 if digit % 3 == 0: sum = sum + digit N = N // 10 if sum > 0: print(sum) else: print(«NO») |
Паскаль | Алгоритмический язык |
var N, digit, sum: longint; begin readln(N); sum := 0; while N > 10 do begin digit := N mod 10; if digit mod 3 = 0 then sum := sum + digit; N := N div 10; end; if sum > 0 then writeln(sum) else writeln(‘NO’) end. |
алг нач цел N, digit, sum ввод N sum := 0 нц пока N > 10 digit := mod(N,10) если mod(digit, 3) = 0 то sum := sum + digit все N := div(N,10) кц если sum > 0 то вывод sum иначе вывод «NO» все кон |
Си++ | |
#include <iostream> using namespace std; int main() { int N, digit, sum; cin >> N; sum = 0; while (N > 10) { digit = N % 10; if (digit % 3 == 0) sum = sum + digit; N = N / 10; } if (sum > 0) cout « sum « endl; else cout << «NO»; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 357.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки. Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество чётных чисел в исходной последовательности и максимальное чётное число. Если чётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта написанная им программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
CONST n = 4 count = 0 maximum = 1000 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 = 1000 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») |
Алгоритмический язык | Паскаль |
алг нач цел 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 <iostream> using namespace std; #define n 4 int main(void) { int i, x; int maximum, count; count = 0; maximum = 1000; 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) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Примечание. 0 – чётное число.
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран количество цифр этого числа, кратных 5. Если в числе нет цифр, кратных 5, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Напоминание: 0 делится на любое натуральное число.
Бейсик | Python |
---|---|
DIM N, DIGIT, COUNT AS LONG INPUT N COUNT = 1 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT MOD 5 = 0 THEN COUNT = COUNT + DIGIT END IF N = N 10 WEND IF COUNT = 0 THEN PRINT «NO» ELSE PRINT COUNT END IF |
N = int(input()) count = 1 while N > 0: digit = N % 10 if digit % 5 == 0: count = count + digit N = N // 10 if count == 0: print(«NO») else: print(count) |
Паскаль | Алгоритмический язык |
var N, digit, count: longint; begin readln(N); count := 1; while N > 0 do begin digit := N mod 10; if digit mod 5 = 0 then count := count + digit; N := N div 10; end; if count = 0 then writeln(‘NO’) else writeln(count) end. |
алг нач цел N, digit, count ввод N count := 1 нц пока N > 0 digit := mod(N,10) если mod(digit,5) = 0 то count := count + digit все N := div(N,10) кц если count = 0 то вывод «NO» иначе вывод count все кон |
Си++ | |
#include <iostream> using namespace std; int main() { int N, digit, count; cin >> N; count = 1; while (N > 0) { digit = N % 10; if (digit % 5 == 0) count = count + digit; N = N / 10; } if (count == 0) cout << «NO»; else cout << count << endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 164.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку
и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе,
а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр числа, НЕ кратных 3. Если в числе нет цифр, не кратных 3, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Напоминание: 0 делится на любое натуральное число.
Бейсик | Python |
---|---|
DIM N, DIGIT, SUM AS LONG INPUT N SUM = N MOD 10 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT MOD 3 > 0 THEN SUM = DIGIT END IF N = N 10 WEND IF SUM > 0 THEN PRINT SUM ELSE PRINT «NO» END IF |
N = int(input()) sum = N % 10 while N > 0: digit = N % 10 if digit % 3 > 0: sum = digit N = N // 10 if sum > 0: print(sum) else: print(«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. |
алг нач цел N, digit, sum ввод N sum := mod(N,10) нц пока N > 0 digit := mod(N,10) если mod(digit, 3) > 0 то sum := digit все N := div(N,10) кц если sum > 0 то вывод sum иначе вывод «NO» все кон |
Си++ | |
#include <iostream> using namespace std; int main() { int N, digit, sum; cin >> N; sum = N % 10; while (N > 0) { digit = N % 10; if (digit % 3 > 0) sum = digit; N = N / 10; } if (sum > 0) cout << sum << endl; else cout << «NO»<< endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 645.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 5. Если в числе нет цифр, кратных 5, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования. Напоминание: 0 делится на любое натуральное число.
Бейсик | Python |
---|---|
DIM N, DIGIT, MAXDIGIT AS LONG INPUT N MAXDIGIT = N MOD 10 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT MOD 5 = 0 THEN IF DIGIT > MAXDIGIT THEN MAXDIGIT = DIGIT END IF END IF N = N 10 WEND IF MAXDIGIT = 0 THEN PRINT «NO» ELSE PRINT MAXDIGIT END IF |
N = int(input()) maxDigit = N % 10 while N > 0: digit = N % 10 if digit % 5 == 0: if digit > maxDigit: maxDigit = digit N = N // 10 if maxDigit == 0: print(«NO») else: print(maxDigit) |
Паскаль | Алгоритмический язык |
var N,digit,maxDigit: longint; begin readln(N); maxDigit := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 5 = 0 then if digit > maxDigit then maxDigit := digit; N := N div 10; end; if maxDigit = 0 then writeln(‘NO’) else writeln(maxDigit) end. |
алг нач цел N, digit, maxDigit ввод N maxDigit := mod(N,10) нц пока N > 0 digit := mod(N,10) если mod(digit, 5) = 0 то если digit > maxDigit то maxDigit := digit все все N := div(N,10) кц если maxDigit = 0 то вывод «NO» иначе вывод maxDigit все кон |
Си++ | |
#include <iostream> using namespace std; int main() { long N, digit, maxDigit; cin >> N; maxDigit = N % 10; while (N > 0) { digit = N % 10; if (digit % 5 == 0) if (digit > maxDigit) maxDigit = digit; N = N / 10; } if (maxDigit == 0) cout << «NO» << endl; else cout << maxDigit << endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 132.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Дан массив, содержащий 2018 положительных целых чисел, не превышающих 30 000. Необходимо определить, сколько в этом массиве элементов, десятичная и восьмеричная запись которых содержит одинаковое количество цифр.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Бейсик | Python |
---|---|
CONST N=2018 DIM A(N) AS INTEGER DIM B, I, K, L, M AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
# кроме уже указанных # допускается использование # целочисленных переменных # k, b, l, m a = [] N = 2018 for i in range(0, N): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2018; var a: array [1..N] of integer; b, i, k, l, m: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2018 целтаб a[1:N] цел b, i, k, l, m нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; const int N=2018; int main(){ int a[N]; int b, i, k, l, m; for (i=0; i cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Дан массив, содержащий 2018 положительных целых чисел, не превышающих 30 000. Необходимо определить, сколько в этом массиве элементов, десятичная и шестнадцатеричная запись которых содержит одинаковое количество цифр.
Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже.
Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Бейсик | Python |
---|---|
CONST N=2018 DIM A(N) AS INTEGER DIM B, I, K, L, M AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END |
# кроме уже указанных # допускается использование # целочисленных переменных # k, b, l, m a = [] N = 2018 for i in range(0, N): a.append(int(input())) … |
Паскаль | Алгоритмический язык |
const N=2018; var a: array [1..N] of integer; b, i, k, l, m: integer; begin for i:=1 to N do readln(a[i]); … end. |
алг нач цел N=2018 целтаб a[1:N] цел b, i, k, l, m нц для i от 1 до N ввод a[i] кц … кон |
Си++ | |
#include <iostream> using namespace std; const int N=2018; int main(){ int a[N]; int b, i, k, l, m; for (i=0; i < N; ++i) cin >> a[i]; … return 0; } |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
На вход программы поступают 4 неотрицательных целых числа, не превышающие 1000, среди которых могут быть одинаковые. Нужно написать программу, которая выводит количество чисел, не кратных 3, и максимальное из этих чисел. Если среди входных данных нет чисел, не кратных трёх, программа должна вывести слово «NO». Программист написал программу неправильно.
Бейсик | Python |
---|---|
COUNT = 0 MAXIMUM = 1000 FOR I = 1 TO 4 INPUT X IF X MOD 3 <> 0 THEN COUNT = COUNT + 1 IF X > MAXIMUM THEN MAXIMUM = I END IF END IF NEXT I IF COUNT > THEN PRINT COUNT PRINT MAXIMUM ELSE PRINT “NO” END IF |
count = 0 maximum = 1000 for i in range(4): x = int(input()) if x % 3 != 0: count = count + 1 if x > maximum: maximum = i if count > 0: print(count) print(maximum) else: print(«NO») |
Паскаль | Алгоритмический язык |
var i, x: integer; var maximum, count: integer; begin count := 0; maximum := 1000; for i:=1 to 4 do begin read( x ); if x mod 3 <> 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. |
алг нач цел i, x цел maximum, count count := 0 maximum := 1000 нц для i от 1 до 4 ввод x если mod(x, 3) <> 0 то count := count + 1 если x > maximum то maximum := i все все кц если count > 0 то вывод count, нс вывод maximum иначе вывод «NO» все кон |
Си++ | |
#include <iostream> using namespace std; int main(){ int i, x, maximum; int count = 0; maximum = 1000; for (i=1; i<= 4; i++) { cin >> x; if ( x % 3 != 0 ) { count = count + 1; if ( x > maximum ) maximum = i; } } if ( count > 0 ) { cout << count << endl; cout << maximum; } else cout << «NO»; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе чисел 7 15 8 21.
2. Приведите пример такой последовательности, содержащей число, кратное 3, при вводе которой программа выведет правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество делящихся нацело на 4 чисел в исходной последовательности и максимальное делящееся нацело на 4 число. Если делящихся нацело на 4 чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта написанная им программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
CONST n = 4 count = 0 maximum = 1000 FOR I = 1 TO n INPUT x IF X MOD 4 = 0 THEN count = count + 1 IF x < maximum THEN maximum = x END IF END IF NEXT I IF count > 0 THEN PRINT count PRINT maximum ELSE PRINT “NO” END IF |
n = 4 count = 0 maximum = 1000 for i in range(1, n + 1): x = int(input()) if x % 4 == 0: count += 1 if x < maximum: maximum = x 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 := 1000; for i:=1 to n do begin read(x); if x mod 4 = 0 then begin count := count + 1; if x < maximum then maximum := x; 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 := 1000 нц для i от 1 до n ввод x если mod(x, 4) == 0 то count := count + 1 если x < maximum то maximum := x все все кц если count > 0 то вывод count, нс вывод maximum иначе вывод «NO» все кон |
Си++ | |
#include <iostream> using namespace std; int main(){ const int n = 4; int x, maximum, count; count = 0; maximum = 1000; for (int i = 1; i <= n; i++) { cin >> x; if ( x % 4 == 0 ) { count++; if ( x < maximum ) maximum = x; } } if ( count > 0 ) { cout << count << endl; cout << maximum; } else cout << «NO»; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности: 2 8 4 3.
2. Приведите пример такой последовательности, содержащей хотя бы одно делящееся нацело на 4 число, что при её вводе приведённая программа, несмотря на ошибки, выведет правильный ответ.
3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Примечание. 0 делится на любое натуральное число.
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран минимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
DIM N, DIGIT, MINDIGIT AS LONG INPUT N MINDIGIT = N MOD 10 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT MOD 2 = 0 THEN IF DIGIT < MINDIGIT THEN MINDIGIT = DIGIT END IF END IF N = N 10 WEND IF MINDIGIT = 0 THEN PRINT «NO» ELSE PRINT MINDIGIT END IF |
N = int(input()) minDigit = N % 10 while N > 0: digit = N % 10 if digit % 2 == 0: if digit < minDigit: minDigit = digit N = N // 10 if minDigit == 0: print(«NO») else: print(minDigit) |
Паскаль | Алгоритмический язык |
var N,digit,minDigit: longint; begin readln(N); minDigit := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 2 = 0 then if digit < minDigit then minDigit := digit; N := N div 10; end; if minDigit = 0 then writeln(‘NO’) else writeln(minDigit); end. |
алг нач цел N, digit, minDigit ввод N minDigit := mod(N,10) нц пока N > 0 digit := mod(N,10) если mod(digit, 2) = 0 то если digit < minDigit то minDigit := digit все все N := div(N,10) кц если minDigit = 0 то вывод «NO» иначе вывод minDigit все кон |
Си++ | |
#include <iostream> using namespace std; int main() { long N, digit, minDigit; cin >> N; minDigit = N % 10; while (N > 0) { digit = N % 10; if (digit % 2 == 0) if (digit < minDigit) minDigit = digit; N = N / 10; } if (minDigit == 0) cout << «NO» << endl; else cout << minDigit << endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 231.
2. Приведите пример такого трёхзначного числа, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ.
3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество всех чисел исходной последовательности, которые делятся без остатка на 10, и сумму таких чисел. Если в последовательности нет чисел, которые делятся без остатка на 10, то на экран нужно вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Напоминание: 0 делится на любое натуральное число.
Бейсик | Python |
---|---|
CONST n=4 count = 0 sum = 0 FOR I = 1 TO n INPUT x IF x mod 10 = 0 THEN count = count + 1 sum = x END IF NEXT I IF sum > 0 THEN PRINT count PRINT sum ELSE PRINT «NO» END IF |
n = 4 count = 0 sum = 0 for i in range(1, n+1): x = int(input()) if x % 10 == 0: count = count + 1 sum = x if sum > 0: print(count) print(sum) else: print(«NO») |
Паскаль | Алгоритмический язык |
const n = 4; var i, x, sum, count: integer; begin count := 0; sum := 0; for i := 1 to n do begin read(x); if x mod 10 = 0 then begin count := count+1; sum := x; end end; if sum > 0 then begin writeln(count); writeln(sum); end else writeln(‘NO’) end. |
алг нач цел n = 4 цел i, x, sum, count count := 0 sum := 0 нц для i от 1 до n ввод x если mod(x,10) = 0 то count := count + 1 sum := x все кц если sum > 0 то вывод count вывод sum иначе вывод «NO» кон |
С++ | |
#include <iostream> #define n 4 using namespace std; int main(){ int i, x, sum, count; count = 0; sum = 0; for(i=1; i <= n; i++){ cin >> x; if(x % 10 == 0){ count = count + 1; sum = x; } } if(sum > 0) { cout << count << endl; cout << sum << endl; } else cout << «NO»; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности: 20, 25, 40, 45.
2. Приведите пример последовательности, в которой есть хотя бы одно число, делящееся на без остатка 10, при вводе которой, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество всех чисел исходной последовательности, которые делятся без остатка на 7, и сумму таких чисел. Если в последовательности нет чисел, которые делятся без остатка на 7, то на экран нужно вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Напоминание: 0 делится на любое натуральное число.
Бейсик | Python |
---|---|
CONST n=4 count = 0 sum = 0 FOR I = 1 TO n INPUT x IF x mod 7 = 0 THEN count = count + 1 sum = x END IF NEXT I IF sum > 0 THEN PRINT count PRINT sum ELSE PRINT «NO» END IF |
n = 4 count = 0 sum = 0 for i in range(1, n+1): x = int(input()) if x % 7 == 0: count = count + 1 sum = x if sum > 0: print(count) print(sum) else: print(«NO») |
Паскаль | Алгоритмический язык |
const n = 4; var i, x, sum, count: integer; begin count := 0; sum := 0; for i := 1 to n do begin read(x); if x mod 7 = 0 then begin count := count+1; sum := x; end end; if sum > 0 then begin writeln(count); writeln(sum); end else writeln(‘NO’) end. |
алг нач цел n = 4 цел i, x, sum, count count := 0 sum := 0 нц для i от 1 до n ввод x если mod(x,7) = 0 то count := count + 1 sum := x все кц если sum > 0 то вывод count вывод sum иначе вывод «NO» кон |
С++ | |
#include <iostream> #define n 4 using namespace std; int main(){ int i, x, sum, count; count = 0; sum = 0; for(i=1; i <= n; i++){ cin >> x; if(x % 7 == 0){ count = count + 1; sum = x; } } if(sum > 0) { cout << count << endl; cout << sum << endl; } else cout << «NO»; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности: 35 50 70 80.
2. Приведите пример последовательности, в которой есть хотя бы одно число, делящееся на без остатка 7, при вводе которой, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 3. Если в числе нет цифр, кратных 3, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Напоминание: 0 делится на любое натуральное число.
Бейсик | Python |
---|---|
DIM N, DIGIT, MAXDIGIT AS LONG INPUT N MAXDIGIT = N MOD 10 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT MOD 3 = 0 THEN IF DIGIT > MAXDIGIT THEN MAXDIGIT = DIGIT END IF END IF N = N 10 WEND IF MAXDIGIT = 0 THEN PRINT «NO» ELSE PRINT MAXDIGIT END IF |
N = int(input()) maxDigit = N % 10 while N > 0: digit = N % 10 if digit % 3 == 0: if digit > maxDigit: maxDigit = digit N = N // 10 if maxDigit == 0: print(«NO») else: print(maxDigit) |
Паскаль | Алгоритмический язык |
var N,digit,maxDigit: longint; begin readln(N); maxDigit := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 3 = 0 then if digit > maxDigit then maxDigit := digit; N := N div 10; end; if maxDigit = 0 then writeln(‘NO’) else writeln(maxDigit) end. |
алг нач цел N, digit, maxDigit ввод N maxDigit := mod(N,10) нц пока N > 0 digit := mod(N,10) если mod(digit, 3) = 0 то если digit > maxDigit то maxDigit := digit все все N := div(N,10) кц если maxDigit = 0 то вывод «NO» иначе вывод maxDigit все кон |
Си++ | |
#include <iostream> using namespace std; int main() { int N, digit, maxDigit; cin >> N; maxDigit = N % 10; while (N > 0) { digit = N % 10; if (digit % 3 == 0) if (digit > maxDigit) maxDigit = digit; N = N / 10; } if (maxDigit == 0) cout << «NO»; else cout << maxDigit<< endl; return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 134.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Всего: 44 1–20 | 21–40 | 41–44
Найдите и исправьте ошибки в программах.
1. var x, y, z1, z2:integer;
begin
write(ꞌВведите x =ꞌ);
read(x);
write(ꞌВведите y =ꞌ);
read(y);
z1:= int(x/y);
z2:= frac(x/y);
write(ꞌЦелая часть =ꞌ,z1);
write(ꞌДробная часть =ꞌ,z2);
end.
2. var x, y, z1, z2:real;
begin
write(ꞌВведите x =ꞌ);
read(x);
write(ꞌВведите y =ꞌ);
read(y);
z1:=x div y;
z2:=x mod y;
write(ꞌЦелая часть =ꞌ,z1);
write(ꞌОстаток =ꞌ,z2);
end.