Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задачник-практикум по основам программирования. Учебное пособие по курсу «Информатика»

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

Найти единственное решение или выдать сообщение, если система имеет бесчисленное множество решений или не имеет решения.

2.23.Элементы прямоугольного равнобедренного треугольника задаются в зависимости от указанного номера варианта. В первом варианте вводится катет а, во втором гипотенуза b, в третьем высота h, опущенная из вершины прямого угла на гипотенузу, в четвертом площадь S.

Составить программу, которая по заданному номеру варианта и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.

2.24.Элементы равностороннего треугольника задаются в зависимости от указанного номера варианта. В первом варианте вводится сторона a, во втором площадь S, в третьем высота h, в четвертом радиус r вписанной окружности, в пятом радиус R описанной окружности. Составить программу, которая по заданному номеру варианта и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.

2.25.Пусть элементами круга являются радиус первый вариант, диаметр второй вариант и длина окружности третий вариант.

Составить программу, которая для каждого варианта запрашивала бы соответствующее значение и вычисляла бы площадь круга.

2.26.Дано натуральное число n. Определить по последней цифре числа n последнюю цифру квадрата этого числа.

2.27.Дано натуральное число n. Определить по последней цифре числа n последнюю цифру куба этого числа.

2.28.Дано натуральное число n. Если оно делится на 4, вывести ответ n = 4*k, где k соответствующее частное; если остаток деления на 4 равен i, то вывести n = 4*k + i.

Например, 12 = 4*3 или 22 = 4*5 + 2.

2.29.Даны два действительных числа x и y. Арифметические действия над числами пронумерованы (1 – сложение, 2 – вычитание, 3 – умножение, 4 – деление).

Составить программу, которая бы вводила номер действия и по введенному значению выполняла бы то или иное действие над числами.

2.30.Для целого числа от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить словом «год» или «года».

21

Например, 17 лет, 22 года, 21 год.

2.31.Написать программу, которая бы по введенному номеру единицы измерения (1 – миллиметр, 2 – сантиметр, 3 – дециметр, 4 – метр, 5 – километр) и длине отрезка L выдавала бы соответствующее значение длины отрезка в метрах.

2.32.Написать программу, которая по введенному номеру единицы измерения (1 – миллиграмм, 2 – грамм, 3 – килограмм, 4 – центнер, 5 – тонна) и массе M выдавала бы соответствующее значение массы

вкилограммах.

2.33.Написать программу, которая бы по введенному номеру времени года (1 – зима, 2 – весна, 3 – лето, 4 – осень) выдавала соответствующие этому времени года месяцы, количество дней в каждом из месяцев.

2.34.Составить программу, которая по заданному году и номеру месяца определяет количество дней в этом месяце. Следует учесть, что в феврале может быть либо 28 дней, либо 29, если год високосный. Год считается високосным по григорианскому календарю, если номер года в столетии не равен нулю и делится на 4, а если равен нулю, то количество столетий должно делиться на 4.

Например, 2004, 2008, 2000 годы високосные, а 1900 не был високосным.

2.35.Определить по дате день недели, на который эта дата приходится. Пусть d число месяца,

m номер месяца,

c две старшие цифры года (количество столетий), y две младшие цифры года (номер года в столетии).

Номер дня недели (от 0 до 6) равен остатку от деления на 7 «кода дня» – выражения, в котором квадратные скобки [ ] означают целую часть, а знак ÷ деление нацело.

1)По формуле Зеллера номер дня недели (0 – воскресенье, 1 – по- недельник,..., 6 – суббота) определяется по «коду дня», который равен

[ 2.6m – 0.2 ] + d + y + y ÷ 4 + c ÷ 4 – 2 c,

причем нумерация месяцев начинается с марта, а январь и февраль считаются месяцами предыдущего года.

2)По методу М. Ленуара [2] номер дня недели (0 – среда, 1 – чет- верг,..., 6 – вторник) определяется по «коду дня», который равен

[365.25 y ] + [ 30.56 m] + d + N,

22

1 для января или февраля високосного года,

 

для января или февраля обычного года,

где N= 2

 

для остальных месяцев.

0

Год считается високосным по григорианскому календарю, если y 0 и y делится на 4 или y = 0 и c делится на 4.

3) Метод М. Ленуара дает точный результат для дат XX века, а для XXI века день недели оказывается следующим за искомым. По формуле Зеллера для некоторых дат XX века «код дня» может быть отрицательным, например, для 1 августа 2007 года «код дня» равен –11.

Точный результат можно получить, используя алгоритм 199б [3], который по дате современного григорианского календаря опреде- ляет номер дня в юлианском периоде:

(146097 c) ÷ 4 + (1461 y) ÷ 4 + (153 m + 2) ÷ 5 + d + 1721119,

причем нумерация месяцев (от 0 до 11) начинается с марта, а январь и февраль считаются 10-м и 11-м месяцами предыдущего года. Так как число 1721119 делится на 7 с остатком 1, то при опре- делении номера дня недели (0 – понедельник, 1 – вторник,..., 6 – воскресенье) для вычисления «кода дня» можно использовать упрощенную формулу номера дня в юлианском периоде: (146097 c) ÷ 4 + (1461 y) ÷ 4 + (153 m + 2) ÷ 5 + d + 1

ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ

Задание 1

Составить программу для вычисления y по заданной формуле. Прове- рить работу программы на контрольных примерах (тестах): в нормальных условиях, при граничных значениях входных данных и в исключительных ситуациях.

 

 

a + x, если x > 0

1)

 

x

 

 

y =

,

если x ≤ 0

 

 

 

 

 

 

a + x

 

 

23

 

 

 

x a

 

 

если a < 0

2)

y =

 

 

 

 

,

 

 

 

x + 2a

 

 

 

 

 

 

 

 

 

 

 

 

 

если a 0

 

 

x a,

 

 

 

 

 

a + b,

 

 

если a > b

3)

y =

 

ab

 

 

 

 

 

 

 

 

,

 

 

 

если a b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a + b

 

 

 

 

 

 

 

4)

y =

max {a, b}+ a + b

 

 

 

 

a b

 

 

 

 

 

5)

y =

 

x a

 

 

x a

 

 

 

min { a, b}

 

 

 

 

 

 

 

 

 

 

min

 

+ b,

a + b

 

 

 

a

2

 

6)

y =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a + b

 

 

 

 

 

 

 

 

 

 

 

 

a b min a + b,

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ax3

 

+ b,

 

 

 

y =

 

 

3 + b

 

,

7)

ax

2

 

(

 

 

 

 

 

 

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ab

 

,

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

x,

 

 

 

 

 

8) y =

 

 

 

 

 

 

3

,

 

 

ax + x

 

 

 

 

 

 

+ x

3

,

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

если x > a

если x < a

если x = a

если a > 0 если a < 0 если a = 0

24

 

 

 

если c < a

 

abc,

9)

 

+ c,

если c = a

y = ab

 

c

 

 

 

 

 

,

если c > a

 

 

 

ab

 

 

 

 

ax2

+ b,

 

 

 

 

если x > 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y =

b

 

,

 

 

 

 

 

если x < 0

 

10)

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

ax

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

max {a

, b

},

если x = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

если x = 0

 

 

 

max {a, b},

 

11)

y =

 

a x,

 

 

 

 

если x > 0

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

если x < 0

 

 

 

 

 

 

 

 

 

 

 

 

 

a x

 

 

 

 

 

 

 

 

 

a bx ,

 

 

 

 

если x < b

 

 

 

a + b

 

 

 

 

 

 

12)

y =

 

 

 

{a, b},

 

 

если x = b

 

min

 

 

 

 

 

 

a + b,

 

 

 

 

если x > b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a2 + b2 ,

 

 

 

 

если a2 + b2 1

 

y =

 

 

 

 

a2 , b2

,

если a2 + b2

< 1 и a > b

13)

min

 

 

 

 

 

{

 

 

 

}

 

 

 

 

 

a2

+ b2 ,

 

 

если a2 + b2

< 1 и a b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

max {a, b},

14)

 

b2 ,

y = a2

 

 

x

 

 

 

 

,

 

 

b2

 

a2

 

если a2

b2

> x

и a x

если a2 b2 > x

и a < x

если a2

b2

x

 

25

 

x2 + ax + b,

15)

 

x

2

+ ax + b,

y =

 

 

 

 

 

 

 

 

 

 

max {a, b}x,

 

 

 

 

 

 

 

 

 

 

2

+a,

 

 

 

x

 

 

 

 

 

x 2 +a

 

 

16)

y =

 

 

 

 

 

,

 

 

 

a

 

 

 

 

 

 

 

 

 

min {a, x},

 

 

 

 

 

 

 

 

 

 

 

abc

 

,

 

 

ab + c

 

 

 

 

17)

 

 

 

 

 

 

 

y = min {a, b},

 

 

 

 

 

 

 

 

 

max {a, b},

если ax + b 0 и a >

если ax + b 0 и a если ax + b > 0

если x [ 0;1

если x < 0

если x > 1

если b 0 и ab 0

если b 0 и ab > 0 если b < 0

 

 

 

2

,

 

 

 

если x > 0

и b > 0

 

ax

 

 

 

x + b,

18)

ax2 +

 

если x > 0

и b 0

y =

 

 

 

 

 

 

если x 0

и b > 0

 

x,

 

 

 

 

 

 

 

+ b

2

,

 

если x 0

и b 0

 

x

 

 

 

 

2

+ b

2

c,

если a > b

и c > 0

 

a

 

 

19)

 

a + b,

если a > b

и c 0

y =

2

+ b 2 +c,

если a b

и c > 0

 

a

 

 

 

 

 

 

 

 

если a b

и c 0

 

abc,

 

 

 

 

 

2

+ a,

 

если x

2

> a

и x > 0

 

x

 

 

 

20)

 

x2 + a,

если x2 > a

и x 0

y =

2

a,

 

если x2 a

и x > 0

 

x

 

 

 

2

,

 

 

 

 

если x

2

a

и x 0

 

x

 

 

 

 

 

 

26

 

abc,

 

 

 

 

 

если b > 0

и a > 0

 

 

abc,

 

 

 

если b > 0

и a 0

 

 

 

 

 

21)

y =

2 + b2 ,

 

 

если b 0

и a > 0

 

a

 

 

 

 

2

+ b

2

+ c

2

,

если b 0

 

и a 0

 

a

 

 

 

 

 

 

2

 

 

 

 

 

2

 

 

 

 

 

2

 

 

2

 

 

 

a

 

+ b

 

,

 

 

если a

 

+ b

 

< 1

и a >

 

a2 + b2

,

 

 

если a

2

+ b

2

< 1

и a

22)

 

a + b

 

 

 

 

 

y =

 

 

 

 

 

 

 

 

 

 

 

 

a b,

 

 

 

 

 

если a2 + b2

= 1

 

 

 

 

 

 

 

 

 

 

 

 

 

если a2 + b2 > 1

 

 

min {a, b},

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

+ b,

 

 

если a > b

и x > 0

 

ax

 

 

 

 

 

 

ax2 + b,

 

 

если a > b

и x 0

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23)

y =

 

 

,

 

 

 

 

 

 

если a b и x > 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

ax

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

,

 

 

 

 

 

 

если a b и x 0

 

ax

 

 

 

 

 

 

 

 

min {a, b},

 

если

x = 0

 

 

 

 

 

 

a + b,

 

 

если x 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

24)

y =

 

 

 

,

 

 

 

если x > 0 и a > 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a + b

 

 

 

 

 

если x > 0 и a 0

 

 

a + b,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a + b ,

 

 

 

если a > 0

и b 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a b

 

 

 

 

 

 

 

 

 

 

 

 

 

25)

a b,

 

 

 

 

 

если a > 0

и b < 0

 

y =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

max {a, b}, если

a 0 и b 0

 

 

 

a + b,

 

 

если a 0 и b > 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

27

3. ЦИКЛЫ

Цикл это механизм для повторения действий. Оператор цикла состоит из двух частей: заголовка и тела. Заголовок управляет количеством повторений тела цикла.

Тело оператор, который определяет повторяемые действия.

В зависимости от заголовка цикла оператор цикла имеет несколько вариантов:

1)Оператор цикла с предусловием while B do S

2)Оператор цикла с постусловием

repeat S1; S2;...Sn until B

3) Оператор цикла с параметром for i:=e1 to e2 do S

или

for i:=e1 downto e2 do S

Здесь B логическое выражение,

S,S1,S2,...Sn операторы, i параметр цикла,

e1,e2 начальное и конечное значения параметра цикла. Оператор цикла с предусловием выполняется, пока логическое выра-

жение B принимает значение ИСТИНА.

Оператор цикла с постусловием выполняется, пока логическое вы- ражение B принимает значение ЛОЖЬ (т. е. до тех пор, пока логическое выражение B не примет значение ИСТИНА).

В операторе цикла с параметром после очередного выполнения тела цикла параметр цикла i автоматически принимает следующее (to) или предыдущее (downto) значение.

Например, для реализации вычисления факториала k = n! можно использовать различные варианты оператора цикла:

а) {оператор цикла с предусловием} k:=1; i:=2;

while i<=n do

28

begin k:=k*i; i:=i+1

end;

б) {оператор цикла с постусловием} k:=1; i:=2;

repeat k:=k*i; i:=i+1

until i>n;

в) {оператор цикла с параметром} k:=1;

for i:=2 to n do k:=k*i;

Пример 3.1. Дано натуральное число n. Найти значение арифметичес- кого выражения 1.1 – 1.2 + 1.3 –… (n слагаемых, знаки чередуются).

Будем хранить модуль текущего слагаемого в переменной x, и менять ее значение от 1.1 с шагом 0.1. Знаком текущего слагаемого будет управ- лять переменная z.

program Сycl_1; var x,S: real;

i,n,z: integer; begin

writeln(’n=’);

readln(n);

x:=1.1;

z:=1;

S:=0;

for i:=1 to n do begin

S:=S+z*x;

x:=x+0.1; z:=-z

end;

writeln(’S=’,S:7:1)

end.

29

Упражнения

1)Реализовать решение этого примера c использованием операторов цикла с предусловием и с постусловием.

2)При решении этого примера можно обойтись без переменной x, используя соответствующее выражение. Запишите вариант программы, составив новое выражение для вычисления слагаемого.

Пример 3.2. Не используя вложенные циклы, вычислить y по фор-

муле

y = 1! + 2! + 3! +... + n! program Cycl_2;

var p,y: real; i,n: integer;

begin writeln(’n=’); readln(n); p:=1;

y:=0;

for i:=1 to n do begin

p:=p*i;

y:=y+p

end;

writeln(’y=’,y:8:0)

end.

Упражнения

1)Объясните, почему переменные p и y следует описывать как вещес- твенные?

2)Не используя вложенные циклы, вычислить

y=1! – 2!+3! –...+ (-1)n-1n!

3) Не используя вложенные циклы, вычислить y=x+x2+x3+...+xn

Пример 3.3. Для заданного натурального числа n подсчитать k ко- личество всех цифр в десятичной записи числа n и вывести все нечетные цифры числа n в обратной последовательности.

program Cycl_3;

var n,k,x: integer;

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]