Технология программирования 1 страница

 

№159

 

Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х. у – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.

 

 

ПРОГРАММА НА ПАСКАЛЕ ПРОГРАММА НА БЕЙСИКЕ ПРОГРАММА НА СИ
var x, y: real; begin readln (x, y); if x*x+y*y>=4 then if y>= -2 then if x>= -2 then write ("принадлежит"); else write ("не принадлежит"); end. INPUT x, y IF x*x+y*y>=4 THEN IF y>= -2 THEN IF x>= -2 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF ENDIF END void main (void) { float x, y; scanf ("%f%f", &x, &y); if (x*x+y*y>=4) if (y>= -2) if (x>= -2) printf ("принадлежит") else printf ("не принадлежит"); }

 

Последовательно выполните следующее:

1) Приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу.

2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).

№160

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 100 – баллы учащихся выпускного класса за итоговый тест по информатике. Для получения положительной оценки за тест требовалось набрать не менее 20 баллов. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит минимальный балл среди учащихся, получивших за тест положительную оценку. Гарантируется, что в классе хотя бы один учащийся за тест положительную оценку.

Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль Бейсик
const N=30; var a: array [1 .. N] of integer; i, j, min: integer; begin for i:=1 to N do readln (a[i]); … end. N=30 DIM A(N) AS INTEGER DIM I, J, MIN AS INTEGER FOR I=1 TO N INPUT A(I) NEXT I   … END

 

СИ Естественный язык
#include <studio.h> #define N 30 void main (void) {int a [N]; int I, j, min; for (i=0; i<N; i++) scanf ("%d", &a[i]); … } Объявляем массив А из 30 элементов. Объявляем целочисленные переменные I, J, MIN. В цикле от 1 до 30 вводим элементы массива А с 1-ого по 30-й.   …

В качестве ответа Вам необходимо привести фрагмент программы (ли описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать переменные аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учетом синтаксиса и особенностей используемого вами языка программирования.

№161

Два игрока играют в следующую игру. На координатной плоскости стоит фишка. Игроки ходят по очереди. В начале игры фишка находиться в точке с координатами (-2, -1). Ход состоит в том, что игрок перемещает фишку из точки с координатами (х,у) в одну из трех точек: или в точку с координатами (х+3,у), или в точку с координатами (х,у+4), или в точку с координатами (х+2, у+2). Выигрывает игрок, после хода которого расстояние по прямой от фишки до точки c координатами (0,0) больше 9 единиц. Кто выигрывает при безошибочной игре обоих игроков – игрок, делающий первый ход, или игрок, делающий второй? Каким должен быть первый ход выигрывающего игрока? Ответ обоснуйте.

№162

На автозаправочных станциях (АЗС) продается бензин маркировки 92, 95 и 98. В городе М был проведен мониторинг цены бензина на различных АЗС,

Напишите эффективную по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет определять для каждого вида бензина, сколько АЗС продают его дешевле всего. На вход программе сначала подается число данных о стоимости бензина. В каждой из следующих N строк находится информация о следующем формате:

<Компания><Улица><Марка><Цена>

где <Компания> - строка, состоящая не более, чем из 20 символов без пробелов, <Улица> - строка, состоящая не более, чем из 20 символов, <Марка> - одно из чисел – 92, 95, 98, <Цена> - целое число в диапазоне от 100 до 3000, обозначающее стоимость одного литра бензина в копейка. <Компания > и <Улица>, <Компания> и <Марка>, а также <Марка> и <Цена> разделены ровно одним пробелом. Пример входной строки:

Лукойл Мичуринский 95 225

Программа должна выводить через пробел 3 числа – количество АЗС, продающих дешевле всего 92-й, 95-й и 98-й бензин соответственно. Если бензин какой – то марки нигде не продавался, то следует вывести 0. Пример входных данных:

12 1 0.

 


№163


Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х. у – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.

 

 

ПРОГРАММА НА ПАСКАЛЕ ПРОГРАММА НА БЕЙСИКЕ ПРОГРАММА НА СИ
var x, y: real; begin readln (x, y); if x*x+y*y<=4 then if y<= -1 then if x<= -1 then write ("принадлежит") else write ("не принадлежит"); end. INPUT x, y IF x*x+y*y<=4 THEN IF y<= -1 THEN IF x<= -1 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF ENDIF END void main (void) { float x, y; scanf ("%f%f", &x, &y); if (x*x+y*y<=4) if (y<= -1) if (x<= -1) printf ("принадлежит") else printf ("не принадлежит"); }

Последовательно выполните следующее:

1) Приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу.

2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).

№164

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 10. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит минимальное попарное произведение двух ближайших элементов массива.

Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль Бейсик
const N=30; var a: array [1 .. N] of integer; i, j, min: integer; begin for i:=1 to N do readln (a[i]); … end. N=30 DIM A(N) AS INTEGER DIM I, J, MIN AS INTEGER FOR I=1 TO N INPUT A(I) NEXT I   … END

 


 

СИ Естественный язык
#include <studio.h> #define N 30 void main (void) {int a [N]; int I, j, min; for (i=0; i<N; i++) scanf ("%d", &a[i]); … } Объявляем массив А из 30 элементов. Объявляем целочисленные переменные I, J, MIN. В цикле от 1 до 30 вводим элементы массива А с 1-ого по 30-й.   …

В качестве ответа Вам необходимо привести фрагмент программы (ли описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать переменные аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учетом синтаксиса и особенностей используемого вами языка программирования.

№165

Два игрока играют в следующую игру. Перед ними лежат две кучки камней, в первой из которых 1, а во второй – 2 камня. У каждого игрока неограниченно много камней. Игроки ходят по очереди. Ход состоит в том, что игрок или увеличивает в 3 раза число камней в какой-то куче, или добавляет 2 камня в какую-то кучу. Выигрывает игрок, после хода которого общее число камней в двух кучах становится не менее 17 камней. Кто выигрывает при безошибочной игре обоих игроков – игрок, делающий первый ход, или игрок, делающий второй? Каким должен быть первый ход выигрывающего игрока? Ответ обоснуйте.

№166

В офисном здании для обеспечения внутренней телефонной связью компаний арендаторов продумана некоторая схема учета абонентов АТС. Структура файла содержащего эту информацию следующая. В строке последовательно для каждого внутреннего номера записаны:

- Фамилия, Имя и Отчество абонента (каждое из слов не более 15 символов),

- наименование арендатора (до 15 символов) и его пятизначный номер договора, состоящий из цифр и букв,

- внутренний цифровой трехзначный номер.

Все записи в строке разделены ровно одним пробелом.

Напишите эффективную по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет выводить Фамилии абонентов и через пробел номера телефонов в порядке увеличения внутреннего номера по запросу от пользователя Наименования арендатора. Известно, что все внутренние номера начинаются с цифры «9».

Пример строки файла:

Шульц Виктор Григорьевич СтройКарта А712В 912

Пример входной строки:

СтройКарта

Пример входных данных:

Андреев 904

Яковлев 910

Шульц 912

 


 

 

№167

Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x,y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.

ПРОГРАММА НА ПАСКАЛЕ ПРОГРАММА НА БЕЙСИКЕ ПРОГРАММА НА СИ
var x,y,z: real; begin readln(x,y); z:=(x-3,5)*(x-3,5)+(y-3,5)*(y-3,5); if R2*R2<=z then if R1*R1>=z then if y>=x then write('принадлежит') else write('не принадлежит') end. INPUT x, y z =(x-3,5)*(x-3,5)+(y-3,5)*(y-3,5) IF r2^2<=z THEN IF r1^2>=z THEN IF y>= x THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF ENDIF END void main(void) { float x,y,z; scanf("%f%f",&x,&y); z=(x-3,5)*(x-3,5)+(y-3,5)*(y-3,5) if (R2*R2<=z) if (R1*R1>=z) if (y>=x) printf("принадлежит"); else printf("не принадлежит"); }

Последовательно выполните следующее:

1) Приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу.

2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы.)

 

№168

Опишите на русском языке или одном из языков программирования алгоритм получения из заданного целочисленного массива размером 30 элементов другого массива, в котором поменяны местами все нечетные элементы с последующими за ними четными.


 

№169

Два игрока играют в следующую игру. На координатной плоскости стоит фишка. Игроки ходят по очереди. В начале игры фишка находится в точке с координатами (3,6). Ход состоит в том, что игрок перемещает фишку из точки с координатами (x, y) в одну из трех точек: или в точку с координатами (x+2,y), или в точку с координатами (x,y+3), или в точку с координатами (x,y+4). Выигрывает игрок, после хода которого расстояние по прямой от фишки до точки с координатами (1,1) не меньше 15 единиц. Кто выигрывает при безошибочной игре обоих игроков – игрок, делающий первый ход, или игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока? Ответ обоснуйте.

 

№170

Имеется файл INPUT.TXT с числовыми данными, записанными в три столбца, разделенных пробелами. Это информация для обработчика деталей на токарных станках. При запуске программы считывается информация из файла INPUT.TXT до конца файла по три числовых значения, которые обозначают продолжительность обработки каждой из деталей последовательно на каждом из трех станков. Напишите программу, вычисляющую по входным данным, сколько времени займет обработка всех деталей? (Необходимо учитывать, что имеется очередь из деталей, и обработка их ведется последовательно на первом, втором и третьем станках. Следующая деталь ожидает освобождения текущего для нее станка предыдущей деталью).

 


Задания для самостоятельных работ

С1 Укажите через запятую в порядке возрастания все основания систем счисления, в которых число двенадцать имеет младшим разрядом нечетную цифру.

 

С2 Укажите через запятую в порядке возрастания все основания систем счисления, в которых число пятнадцать имеет младшим разрядом единицу.

 

С3 Чему будут равны переменные a и b после выполнения исполнителем Вычислитель следующего алгоритма:

Присвоить a значение -7

Присвоить b значение 30

Пока a+b > 0 повторять:

Начало цикла

Присвоить a значение a - 4

Присвоить b значение b + 1

Конец цикла

1) a = −4, b = 1

2) a = −30, b = 7

3) a = −14, b = 28

4) a = −39, b = 38

С4 Чему будут равны переменные a и b после выполнения исполнителем Вычислитель следующего алгоритма:

Присвоить a значение -7

Присвоить b значение 30

Пока a+b < 30 повторять:

Начало цикла

Присвоить a значение a+2

Присвоить b значение b+1

Конец цикла

1) a = −1, b = 33

2) a = 2, b = 31

3) a = −10, b = 41

4) a = 30, b = −7

 

 

С5 Сколько различных решений имеет уравнение

Ø (A Ù B) Ú C Ù D Ú Ø (E Ù F) = 0

В ответе не нужно перечислять все различные наборы A, B, C, D, E, F, при которых выполнено данное равенство. В качестве ответа Вам нужно указать количество таких наборов.

 

 

С6 Сколько различных решений имеет уравнение

A Ù B Ú C Ù D Ú Ø (E Ù F) = 0, где A, B, C, D, E, F – логические переменные.

В ответе не нужно перечислять все различные наборы A, B, C, D, E, F, при которых выполнено данное равенство. В качестве ответа Вам нужно указать количество таких наборов.


С7 Пассажир решил зашифровать код ячейки камеры хранения со своим багажом по следующему правилу:

1) на первом месте – буква, стоящая на позиции, кратной трем, из набора: АБВГДЕЖЗИК;

2) на втором месте – нечетная цифра;

3) на третьем – любая цифра, не равная цифре на втором месте;

4) на четвертом – любая оставшаяся цифра (ее нет на втором или третьем месте), меньшая суммы цифр, находящихся на втором и третьем месте.

Определите, какой из кодов может подойти к этой ячейке камеры хранения:

1) В359

2) И164

3) Е846

4) З348

С8 Книга, состоящая из 1360 страниц, занимает объем 40 Мбайт. Часть страниц книги является цветными изображениями в формате 320 * 640 точек. На одной странице книги с текстом размещается 1024 символа. Каждый символ закодирован 1 байтом. Количество страниц с текстом на 560 больше количества страниц с цветными изображениями. Сколько цветов используется для представления изображений книги? Ответ запишите в виде целого числа.

 

С9 Определите информационный объем текстового сообщения, если известно, чтокодирование происходило восьмибитовым способом для каждого символа (включая пробелы и символ конца строки) приведенного текста:

Ни искусство, ни мудрость не могут быть достигнуты, если им не учиться.

Демокрит

 

1)80 бит 2) 80 байт 3) 640 байт 4) 534 бит

С10Определите информационный объем приведенного ниже текстового сообщения, если известно, что оно передавалось в кодировке Unicode и записывалось в две строки:

 

Нынче от одного мудреца требуется больше, чем в древности от семерых.

Бальтасар Грасиан-и-Моралес

 

1)184 байта 2)97 бит 3) 97 байт 4)368 байт

 

С11 При измерении сейсмических явлений в России используется 12-ти бальная шкала, причем, измерения проходят с точностью до десятых долей. В журнал записываются данные, снятые датчиками в определенной сейсмологической области. Для оптимизации электронного журнала используют следующую условную структуру записи:

1. сначала фиксируется нормальное для местности сейсмическое состояние поверхности земной коры G с точностью до целых (может принимать значения от 0 до 12),

2. при отсутствии землетрясения и небольших колебаниях (отклонениях от нормы) записывается код S = 1, и далее данные кодируются только значением расхождения с нормой до 0,3 (К = семь значений),

3. при средних колебаниях (отклонениях от нормы) записывается код S = 2, и далее данные кодируются только значением расхождения с нормой до 0,7 (К = пятнадцать значений),

4. при сильных колебаниях записывается код S = 3, и далее данные кодируются точным значением (например, К = 9,7 или К = 4,1, то есть от 0,0 до 12,0 – 120 значений).

 

Кодирование и запись данных происходит в двоичной форме в файл журнала ежеминутно последовательно: G + S шифруется как одно число, далее идет число К.

Рассчитайте, сколько байт займет файл журнала для одного датчика, при средних колебаниях земной коры в течение 30 минут и сильном землетрясении в течение 8 минут?

1) 41 байт

2) 328 байт

3) 1890 байт

4) 240 байт

 

С12Пять букв латинского алфавита закодированы. Коды представлены в таблице

A B C D E

Декодируйте выражение 1011000100111

1) DEBEA 2) DBDAE 3) DECAB 4) DCEBA

 

С13 Пять букв латинского алфавита закодированы. Коды представлены в таблице

A B C D E

Декодируйте выражение 0011100111010

1) DEBEA 2) DBDAE 3) DECAB 4) DABEC

 

С14 Пять букв латинского алфавита закодированы. Коды представлены в таблице

A B C D E

Декодируйте выражение, если известно, что каждый символ применен всего один раз.

1) DBECA 2) ABCDE 3) ABECD 4) АЕDСВ

 

С15 Пять букв латинского алфавита закодированы. Коды представлены в таблице

A B C D E

Декодируйте выражение, если известно, что каждый символ применен всего один раз.

1) CDAEB 2) CAEDB 3) CDEAB 4) CEADB

 

С16 Для каких a, b и c ложно высказывание:

y (a,b,c)=(a and not(c) or b) or (not (a) and c or b) xor (not(a and c xor b))

1) a = 0, b = 0, c = 0

2) a = 0, b = 0, c = 1

3) a = 0, b = 1, c = 0

4) a = 0, b = 1, c = 1

 

С17 Для каких a, b и c ложно высказывание:

y (a,b,c)=(a and not(c) or b) or (not (a) and c or b) xor (not(a and c xor b))

1) a = 0, b = 0, c = 0

2) a = 1, b = 0, c = 1

3) a = 0, b = 1, c = 0

4) a = 0, b = 1, c = 1

 


С18 Для каких a, b и c ложно высказывание:

y (a,b,c)=(a and not(c) or b) or (not (a) and c or b) xor (not(a and c xor b))

1) a = 1, b = 1, c = 0

2) a = 1, b = 0, c = 0

3) a = 0, b = 1, c = 0

4) a = 0, b = 1, c = 1

 

С19 Для каких a, b и c ложно высказывание:

y (a,b,c)=(a and not(c) or b) or (not (a) and c or b) xor (not(a and c xor b))

1) a = 1, b = 1, c = 0

2) a = 1, b = 1, c = 1

3) a = 0, b = 1, c = 0

4) a = 0, b = 1, c = 1

 

С20 Даны два десятичных числа X и Y. Их перевели в двоичную систему счисления и определили, что в числе X из 4 разрядов три единицы, а в числе Y из 5 разрядов две единицы. Логическое (побитовое) произведение этих чисел равно 102, а логическая (побитовая) сумма – 111102. Чему равны числа X и Y в десятичной системе счисления? При побитовом сложении или произведении чисел вычисляется результат соответственной логической операции над каждой парой бит независимо без переноса в следующий разряд.

Примечание. Ответ записать в виде двух десятичных чисел (сначала X, потом Y) через пробел.

 

С21 Даны два десятичных числа X и Y. Их перевели в двоичную систему счисления и определили, что в числе X из 4 разрядов три единицы, а в числе Y из 5 разрядов две единицы. Логическое (побитовое) произведение этих чисел равно 12, а логическая (побитовая) сумма – 111012. Чему равны числа X и Y в десятичной системе счисления? При побитовом сложении или произведении чисел вычисляется результат соответственной логической операции над каждой парой бит независимо без переноса в следующий разряд.

Примечание. Ответ записать в виде двух десятичных чисел (сначала X, потом Y) через пробел.

 

С22 Даны два десятичных числа X и Y. Их перевели в двоичную систему счисления и определили, что в числе X из 5 разрядов три единицы, а в числе Y из 4 разрядов три единицы. Логическое (побитовое) произведение этих чисел равно 10012, а логическая (побитовая) сумма – 111012. Чему равны числа X и Y в десятичной системе счисления? При побитовом сложении или произведении чисел вычисляется результат соответственной логической операции над каждой парой бит независимо без переноса в следующий разряд.

Примечание. Ответ записать в виде двух десятичных чисел (сначала X, потом Y) через пробел.

 

С23 Найти логическую функцию F, зависящую от логических переменных A, B, C, по заданной таблице истинности. Упрощенный вид функции должен содержать не более трех логических операций. В упрощенном виде функции допустимо использовать только операции not, or и and.

A B C F

С24 Найти логическую функцию F, зависящую от логических переменных A, B, C, по заданной таблице истинности. Упрощенный вид функции должен содержать не более трех логических операций. В упрощенном виде функции допустимо использовать только операции not, or и and.

A B C F

С25Упростите логическое выражение или укажите его результат (при его однозначности).

(A and B) or (not A and B) or (A and not B) or (not A and not B)

При однозначном ответе – истинный ответ обозначается как 1, а ложный как 0.

С26Упростите логическое выражение или укажите его результат (при его однозначности).

not (A and B) or B and not A or not (A and not B)

При однозначном ответе – истинный ответ обозначается как 1, а ложный как 0.

С27Упростите логическое выражение или укажите его результат (при его однозначности).

(A and B) → (not B and not A xor not (A or B))

При однозначном ответе – истинный ответ обозначается как 1, а ложный как 0.

С28Укажите маску (шаблон), позволяющую правильно объединить в одну группу все файлы, имеющие в расширении, состоящем из не менее чем двух символов, второй символ "Y", имя которых содержит 5 символов и, начинаясь с буквы "R", заканчивается на букву "V". Под именем файла, здесь, понимается имя без расширения.

Пример записи маски (шаблона) файла: ??A*.B?

С29Укажите маску (шаблон), позволяющую правильно объединить в одну группу все файлы, имеющие в названии третий символ "Z", содержащие в названии далее символ "Y", но оканчивающиеся на символ "V", имеющие расширение длиной не менее 2 символов, первый из которых "R". Под именем файла, здесь, понимается имя без расширения.

Пример записи маски (шаблона) файла: ??A*.B?

 

С30Вычислите и впишите недостающие значения различных систем счисления

а)

Двоичная Четверичная Восьмеричная Десятичная Шестнадцатеричная
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       

б)