Опубликован: 04.06.2007 | Уровень: для всех | Доступ: свободно | ВУЗ: Кабардино-Балкарский государственный университет
Дополнительный материал 1:
Выполнение аналога демоЕГЭ-2007
Дополнительный материал 1: 1234567891011121314151617181920212223242526272829303132 || Дополнительный материал 2 >
Группа заданий C
С1. Требовалось написать алгоритм (программу) подсчета всех натуральных чисел n, кратных 7 и заключенных строго между натуральными числами a и b. Входная информация вводится с клавиатуры, а на выходе должно быть получено сообщение, например, вида "искомое число равно 12" (если есть 12 таких кратных чисел) или "искомое число равно 0" (если нет кратных чисел). Некто, в спешке, написал следующий алгоритм (следующую программу):
ШАЯ:
алг С1(арг цел a, b, рез цел n) нач цел c вывод("введите a, b:") ввод(a,b) n:=0 если (a=b) и (mod(а,7)=0) то n:=n+1 иначе нц для c от a до b если (mod(с,7)=0) то n:=n+1 все кц все вывод("искомое число равно ",n) кон
Паскаль:
var a, b, c, n: integer; begin write('введите a, b:'); read(a,b); n:=0; if (a=b) and (a mod 7=0) then n:=n+1 else for c:=a to b do if (с mod 7=0) then n:=n+1; write('искомое число равно ',n); end.
Бейсик:
dim a, b, c, n as integer print 'введите a, b:' input a,b n = 0 if (a = b) and (a MOD 7=0) then n = n + 1 else for c = a to b if (с MOD 7 = 0) then n = n + 1 end if next c end if print "искомое число равно ", n end.
Для такой программы последовательно выполните три задания:
- Укажите набор входных чисел a, b, для которого программа работает неправильно.
- Укажите любой вариант доработки программы (удаления, добавления, изменения команд), чтобы не было случаев её неправильной работы.
- Укажите вариант доработки программы без использования логических операций ( and, or, not ).
Решение.
- Программа не будет работать для всех тестов, удовлетворяющих условию b<a. Например, для b = 4, a = 20.
- Приводим вариант доработки программы, чтобы не было случаев её неправильной работы.
ШАЯ:
алг С1(арг цел a, b, рез цел n) нач цел c вывод("введите a, b:") ввод(a,b) n:=0 если (a=b) и (mod(а,7)=0) то n:=n+1 иначе если (a?b) то если (a>b) то c:=a a:=b b:=a все нц для c от a до b если (mod(с,7)=0) то n:=n+1 все кц все все вывод("искомое число равно ", n) кон
Паскаль:
var a, b, c, n: integer; begin write('введите a, b:'); read(a,b); n:=0; if (a=b) and (a mod 7=0) then n:=n+1 else if (a<>b) then begin if (a>b) then begin c:=a; a:=b; b:=a; end; for c:=a to b do if (с mod 7=0) then n:=n+1 end; write('искомое число равно ',n); end.
Бейсик:
dim a, b, c, n as integer print "введите a, b:" input a,b n = 0 if (a = b) and (a MOD 7=0) then n = n + 1 else if (a <> b) then if (a > b) then c = a: a = b: b = a for c = a to b if (с MOD 7 = 0) then n = n + 1 end if next c end if end if end if print "искомое число равно ", n end.
- Вариант доработки программы без использования логических операций ( and, or, not ) можно получить из предыдущих вариантов, если заменить условие (например, на Бейсике; для остальных версий - аналогично):на условие вида
if (a = b) and (a MOD 7=0) then :
if (a = b) then if (a MOD 7=0) then : .
Дополнительный материал 1: 1234567891011121314151617181920212223242526272829303132 || Дополнительный материал 2 >