Опубликован: 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 >