Задание 20.2 программирование на языке Pascal
Задание 20.2
Напишите программу для решения следующей задачи. Камера наблюдения регистрирует в автоматическом режиме скорость проезжающих мимо неё автомобилей, округляя значения скорости до целых чисел. Необходимо определить минимальную зарегистрированную скорость автомобиля. Если скорость хотя бы одного автомобиля была больше 80 км/ч, выведите «YES», иначе выведите «NO».
Программа получает на вход число проехавших автомобилей N (1 =< N =< 30), затем указываются их скорости. Значение скорости не может быть меньше 1 и больше 300.Программа должна сначала вывести минимальную скорость, затем YES или NO.
Пример работы программы:
Входные данные | Выходные данные |
4 74 69 63 96 | 63 YES |
Что необходимо знать для решения задания 20.2 ОГЭ по информатике 9 класс?
- Типы переменных.
- Оператор цикла FOR
- Условный оператор IF
Пример решения верного решения на 2 балла.
var
a, b, c, min: integer; //Объявляем переменные целочисленного типа
d: boolean;//объявляем переменную логического типа. Для определения верности условия (скорость больше 80 км/ч)
begin
//******инициализируем переменные*******
min := 300;//переменная для нахождения минимальной скорости. По условию задачи, скорость не может быть более 300
a := 0;//обнуляем переменную
c := 0;//обнуляем переменную
d := false;//задаём исходное логическое значение 0
readln(a);//чтение с клавиатуры числа количества машин
for b := 1 to a do //задаём цикл от 1 до a количества машин
begin
readln(c);//считываем значение скорости
if c <= min then//Задаём условие, которым будем находить минимальную скорость.
min := c;//Каждый раз присваиваем значение переменной min наименьшую введённую скорость
if c > 80 then//производим проверку была ли скорость больше 80
d := true;//если была скорость более 80, то переменная d меняет логическое значение на true (1)
end;
writeln(min);//Выводим минимальную скорость
if d = true then //Проверяем значение логической переменной
writeln('YES')//Выводим YES, если логическая переменная = true
else writeln('NO');//выводим NO, если логическая переменная не равна true
readln;//Чтобы программа не закрывалась
end.
Скачать исходник программы задание 20.2 ОГЭ:
Программу можно написать и проще.
Пример решения задания в упрощённой форме.
var
a, b, c,d, min: integer;
begin
min := 300;
readln(a);
for b := 1 to a do
begin
readln(c);
if c <= min then
min := c;
if c > 80 then
d := 1;
end;
writeln(min);
if d = 1 then
writeln('YES')
else writeln('NO');
readln;
end.
В чём разница решений?
Во втором, упрощённом варианте, не инициализированы переменные. Это не обязательно в PascalABC.Net, так как переменные изначально имеют значения "0". Но делать это желательно, так как это считается правилом хорошего тона. Плюс ко всему в других версиях интерпретатора Pascal без инициализации код работать не будет.
Так же, во второй версии программы не использован логический тип переменных. Использовать его не обязательно. Тут решение на усмотрение составителя программы.
Важно!
У проверяющих совсем другие входные данные для проверки вашей программы (не как приведены в задании), поэтому не старайтесь написать программу под конкретные числа.
Задача может быть решена через одномерный массив. Почему Вы не приводите такой вариант решения?
Если же он, на Ваш взгляд, в данном случае не эффективен, хотелось бы значь, почему?
Задача может быть решена и через массив. НО! Программа более эффективна по памяти в этом случае. Да и размерность массива придётся задавать сверх огромную. так как нам не известно сколько будет проезжать машин заранее. По-этому такой способ решения более эффективен.