алгоритмизация
.pdfВам предлагается решить пять задач: Задачи №1, 2, … , 5. В каждой из этих задач имеется задание, которое нужно уточнить путем выбора из таблицы строки, соответствующей Вашему номеру варианта.
Поскольку в задачах имеется различное число вариантов, для каждой задачи Вам необходимо вычислить номер Вашего варианта по формуле:
x = ( a mod n ) + 1,
где a – числовая часть номера Вашей зачетной книжки, n – общее число вариантов задачи, a mod n – остаток от целочисленного деления a на n.
Например, если студент имеет зачетную книжку № ДА42113, то для него a = 42113 и он должен решить:
•задачи № 1, №2 и №4, в каждой из которых n = 30, под вариантом x = (42113 mod 30) + 1 = 23 + 1 = 24;
•задачу №3 (n = 26), варианта (42113 mod 26) + 1 = 19 + 1 = 20;
•задачу №5 (n = 15), варианта (42113 mod 15) + 1 = 8 + 1 = 9.
Задача № 1 СОСТАВЛЕНИЕ ЛОГИЧЕСКИХ ВЫРАЖЕНИЙ
Цель. Знакомство с правилами составления логических выражений. Задание. Составить логическое выражение, принимающее значение «истина», если заданное в табл. 1 высказывание является истинным, и значение «ложь» - в противном случае. Используя полученное логическое выражение разработать алгоритм и представить его в виде блоксхемы и программы для ЭВМ на алгоритмическом языке C. Провести
полное тестирование программы.
|
Таблица 1 |
|
№ |
Высказывание |
|
варианта |
||
|
||
|
|
|
1 |
Сумма двух первых цифр заданного четырехзначного нату- |
|
|
рального числа N равна сумме двух его последних цифр. |
|
2 |
Сумма цифр данного трехзначного натурального числа N |
|
|
является четным числом. |
|
3 |
Точка с координатами (х, у) принадлежит части плоскости, |
|
|
лежащей между прямыми х = m и х = n (m < n). |
|
4 |
Заданное трехзначное натуральное число N равно кубу |
|
|
суммы цифр этого числа. |
|
5 |
Натуральное число N является четным двузначным числом. |
|
6 |
Треугольник со сторонами а, b, с является равносторонним. |
|
7 |
Треугольник со сторонами a, b, с является равнобедренным. |
1
8 |
Среди чисел а, b, с есть хотя бы одна пара взаимно проти- |
|
воположных чисел. |
9 |
Числа а и b выражают длины катетов одного прямоуголь- |
|
ного треугольника, а с и d – другого. Эти треугольники яв- |
|
ляются подобными. |
10 |
Даны три стороны одного и три стороны другого треуголь- |
|
ника. Эти треугольники равновеликие, т.е. имеют равные |
|
площади. |
11 |
Данная тройка натуральных чисел а, b, с является тройкой |
|
Пифагора, т.е. c2 = a2 + b2. |
12 |
Все цифры данного четырехзначного числа N различны. |
13 |
Данные числа х и у являются координатами точки, лежащей |
|
в первой координатной четверти. |
14 |
(x1, y1) и (х2, y2) – координаты левой верхней и правой |
|
нижней вершин прямоугольника. Точка А(х, у) принадле- |
|
жит прямоугольнику. |
15 |
Число с является средним арифметическим чисел а и b. |
16 |
Натуральное число N является точным квадратом. |
17 |
Цифры данного четырехзначного числа N образуют строго |
|
возрастающую последовательность. |
18 |
Цифры данного трехзначного числа N являются членами |
|
арифметической прогрессии. |
19 |
Цифры данного трехзначного числа N являются членами |
|
геометрической прогрессии. |
20 |
Данные числа b и c являются соответственно квадратом и |
|
кубом числа а. |
21 |
Цифра М входит в десятичную запись четырехзначного |
|
натурального числа N. |
22 |
Данное четырехзначное число читается одинаково слева |
|
направо и справа налево. |
23 |
Шахматный конь за один ход может переместиться с одно- |
|
го заданного поля на другое (каждое поле задано двумя ко- |
|
ординатами – целыми числами от 1 до 8). |
24 |
В заданном натуральном трехзначном числе N имеется чет- |
|
ная цифра. |
25 |
Сумма каких-либо двух цифр заданного трехзначного нату- |
|
рального числа N равна третьей цифре. |
26 |
Заданное число N является степенью числа а (показатель |
|
степени может находиться в диапазоне от 0 до 4). |
27 |
Сумма цифр заданного четырехзначного числа N превосхо- |
|
дит произведение цифр этого же числа на 1. |
2
28Сумма двух последних цифр заданного трехзначного числа N меньше заданного числа K, а первая цифра больше 5.
29Заданное натуральное число N является двузначным и кратно числу K.
30Сумма двух первых цифр заданного четырехзначного числа N равна произведению двух последних.
Пример №1
Высказывание. X – отрицательное целое число, делящееся на K нацело.
Решение.
Логическая переменная x1 = «X – отрицательное» и логическая переменная x2 = «X делится на K нацело»
Тестовая таблица
X |
K |
x1 |
x2 |
x1 и x2 |
7 |
3 |
0 |
0 |
0 |
8 |
2 |
0 |
1 |
0 |
-9 |
4 |
1 |
0 |
0 |
-12 |
6 |
1 |
1 |
1 |
Программа logic1.c
#include<stdio.h>
#include<conio.h> void main()
{
int X,K; int x1,x2;
printf("X,K=");
scanf("%d%d",&X,&K);
x1=(X<0);
x2=(X%K==0); if (x1 && x2)
printf("true\n"); else printf("false\n"); while(!kbhit());
}
3
Пример №2
Высказывание. Среди заданных чисел A, B, C, D есть хотя бы два четных.
Решение.
Логические переменные x1 = «A – четное», x2 = «B – четное», x3 = «C – четное», x4 = «D – четное».
Тестовая таблица
A |
|
B |
|
|
C |
|
D |
|
|
x1 |
x2 |
|
|
x3 |
x4 |
|
|
Ответ |
||||
1 |
|
3 |
|
|
5 |
|
7 |
|
|
|
0 |
|
0 |
|
|
0 |
0 |
|
|
|
0 |
|
1 |
|
3 |
|
|
5 |
|
8 |
|
|
|
0 |
|
0 |
|
|
0 |
1 |
|
|
|
0 |
|
1 |
|
3 |
|
|
6 |
|
7 |
|
|
|
0 |
|
0 |
|
|
1 |
0 |
|
|
|
0 |
|
1 |
|
3 |
|
|
6 |
|
8 |
|
|
|
0 |
|
0 |
|
|
1 |
1 |
|
|
|
1 |
|
1 |
|
4 |
|
|
5 |
|
7 |
|
|
|
0 |
|
1 |
|
|
0 |
0 |
|
|
|
0 |
|
1 |
|
4 |
|
|
5 |
|
8 |
|
|
|
0 |
|
1 |
|
|
0 |
1 |
|
|
|
1 |
|
1 |
|
4 |
|
|
6 |
|
7 |
|
|
|
0 |
|
1 |
|
|
1 |
0 |
|
|
|
1 |
|
1 |
|
4 |
|
|
6 |
|
8 |
|
|
|
0 |
|
1 |
|
|
1 |
1 |
|
|
|
1 |
|
2 |
|
3 |
|
|
5 |
|
7 |
|
|
|
1 |
|
0 |
|
|
0 |
0 |
|
|
|
0 |
|
2 |
|
3 |
|
|
5 |
|
8 |
|
|
|
1 |
|
0 |
|
|
0 |
1 |
|
|
|
1 |
|
2 |
|
3 |
|
|
6 |
|
7 |
|
|
|
1 |
|
0 |
|
|
1 |
0 |
|
|
|
1 |
|
2 |
|
3 |
|
|
6 |
|
8 |
|
|
|
1 |
|
0 |
|
|
1 |
1 |
|
|
|
1 |
|
2 |
|
4 |
|
|
5 |
|
7 |
|
|
|
1 |
|
1 |
|
|
0 |
0 |
|
|
|
1 |
|
2 |
|
4 |
|
|
5 |
|
8 |
|
|
|
1 |
|
1 |
|
|
0 |
1 |
|
|
|
1 |
|
2 |
|
4 |
|
|
6 |
|
7 |
|
|
|
1 |
|
1 |
|
|
1 |
0 |
|
|
|
1 |
|
2 |
|
4 |
|
|
6 |
|
8 |
|
|
|
1 |
|
1 |
|
|
1 |
1 |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
Гиперкуб размерности 4 |
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
Максимальные единичные интервалы |
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
11--, 1-1-, 1--1, -11-, -1-1, --11 |
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
Импликантная таблица |
|
|
|
|
|
|
||||||||
|
Макс. |
|
|
|
|
|
|
|
|
|
Конституента |
|
|
|
|
|
|
|||||
|
ед. |
|
0011 |
0101 |
0110 |
|
0111 |
1001 |
|
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
|||||||
|
инт. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a |
11-- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
|
1 |
||
b |
1-1- |
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
|
1 |
|
1 |
|||
c |
1--1 |
|
|
|
|
|
|
|
|
|
1 |
|
|
1 |
|
1 |
|
|
|
1 |
||
d |
-11- |
|
|
|
|
1 |
|
1 |
|
|
|
|
|
|
|
|
1 |
|
1 |
|||
e |
-1-1 |
|
|
|
1 |
|
|
|
1 |
|
|
|
|
|
|
|
1 |
|
|
|
1 |
|
f |
--11 |
|
1 |
|
|
|
|
|
1 |
|
|
|
|
1 |
|
|
|
|
|
1 |
f & e & d & (d e f) & c
4
Логическое выражение Программа logic2.c
#include<stdio.h>
#include<conio.h> void main()
{
int A,B,C,D;
int x1,x2,x3,x4; printf("A,B,C,D="); scanf("%d%d%d%d",&A,&B,&C,&D); x1=(A%2==0);
x2=(B%2==0);
x3=(C%2==0);
x4=(D%2==0);
if(x1&&x2||x1&&x3||x1&&x4||
x2&&x3||x2&&x4||x3&&x4)
printf("true\n"); else printf("false\n"); while(!kbhit());
}
Задача № 2
ВЕТВЛЕНИЯ В АЛГОРИТМАХ
Цель. Знакомство с организацией ветвлений в алгоритме.
Задание. Разработать алгоритм решения задачи, приведенной в табл. 2. Алгоритм представить его в виде блок-схемы и программы для ЭВМ на алгоритмическом языке С. Провести полное тестирование программы.
Таблица 2
№
Задание
варианта
1Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны, и в четвертую степень – отрицательные.
2Даны две точки А(х1, у1) и В(х2, у2). Составить алгоритм, определяющий, которая из точек находится ближе к началу координат.
5
3 |
Даны два угла треугольника (в градусах). Определить, су- |
|
ществует ли такой треугольник, и если да, то будет ли он |
|
прямоугольным. |
4 |
Даны действительные числа х и у, не равные друг другу. |
|
Меньшее из этих двух чисел заменить половиной их сум- |
|
мы, а большее – их удвоенным произведением. |
5 |
На плоскости ХОY задана своими координатами точка А. |
|
Указать, где она расположена (на какой оси или в каком |
|
координатном угле). |
6 |
Даны целые числа m, n. Если числа не равны, то заменить |
|
каждое из них одним и тем же числом, равным большему из |
|
исходных, а если равны, то заменить числа нулями. |
7 |
Подсчитать количество отрицательных среди чисел а, b, с. |
8 |
Подсчитать количество положительных среди чисел а, b, с. |
9 |
Подсчитать количество целых среди чисел а, b, с. |
10 |
Определить, делителем каких чисел а, b, с является число k. |
11 |
Услуги телефонной сети оплачиваются по следующему |
|
правилу: за разговоры до А минут в месяц — В руб., а раз- |
|
говоры сверх установленной нормы оплачиваются из рас- |
|
чета С руб. за минуту. Написать программу, вычисляющую |
|
плату за пользование телефоном для введенного времени |
|
разговоров за месяц. |
12 |
Программа — льстец. На экране высвечивается вопрос |
|
«Кто ты: мальчик или девочка? Введи Д или М». В зависи- |
|
мости от ответа на экране должен появиться текст «Мне |
|
нравятся девочки!» или «Мне нравятся мальчики!». |
13 |
Грузовой автомобиль выехал из одного города в другой со |
|
скоростью v1 км/ч. Через t ч в этом же направлении выехал |
|
легковой автомобиль со скоростью v2 км/ч. Составить про- |
|
грамму, определяющую, догонит ли легковой автомобиль |
|
грузовой через t1 ч после своего выезда. |
14 |
Перераспределить значения переменных х и у так, чтобы в х |
|
оказалось большее из этих значений, а в у – меньшее. |
15 |
Определить правильность даты, введенной с клавиатуры |
|
(число — от 1 до 31, месяц — от 1 до 12). Если введены |
|
некорректные данные, то сообщить об этом. |
16 |
Составить программу, определяющую результат гадания на |
|
ромашке — «любит—не любит», взяв за исходное данное |
|
количество лепестков n. |
17 |
Написать программу — модель анализа пожарного датчика |
|
в помещении, которая выводит сообщение «Пожароопасная |
|
ситуация», если температура в комнате превысила 60° С. |
6
18 |
Рис расфасован в два пакета. Масса первого — m кг, второ- |
|
го – n кг. Составить программу, определяющую: а) какой |
|
пакет тяжелее — первый или второй; б) массу более тяже- |
|
лого пакета. |
19 |
Написать программу, которая анализирует данные о воз- |
|
расте и относит человека к одной из четырех групп: школь- |
|
ник, студент, работник, пенсионер. Возраст вводится с кла- |
|
виатуры. |
20 |
Составить программу, определяющую, пройдет ли график |
|
функции у = ах2 + bх + с через заданную точку с координа- |
|
тами (m, n). |
21 |
К финалу конкурса лучшего по профессии «Специалист |
|
электронного офиса» были допущены трое: Иванов, Пет- |
|
ров, Сидоров. Соревнования проходили в три тура. Иванов |
|
в первом туре набрал m1 баллов, во втором – n1, в третьем |
|
– р1. Петров – m2, n2, р2 соответственно; Сидоров – m3, n3, |
|
р3. Составить программу, определяющую, сколько баллов |
|
набрал победитель. |
22 |
Написать программу-фильтр, которая при нажатии любых |
|
клавиш выводит на экран только буквы и цифры, при этом |
|
указывая, что выводится: буква или цифра. |
|
|
23 |
Написать программу нахождения суммы большего и мень- |
|
шего из трех чисел. |
24 |
Написать программу, по длинам сторон распознающую |
|
среди всех треугольников ABC прямоугольные. Если тако- |
|
вых нет, то вычислить величину угла С. |
25 |
Найти max{min(a, b), min(c, d)}. |
26 |
Даны три числа а, b, с. Определить, какое из них равно d. |
|
Если ни одно не равно d, то найти max(d – а, d – b, d – с). |
27 |
Даны четыре точки А1(х1, у1), А2(x2, у2), А3(x3 , у3), А4(х4, |
|
у4). Определить, будут ли они выступать в качестве вершин |
|
параллелограмма. |
28 |
Даны три точки А(х1, у1), B(х2, у2), и C(х3, у3). Определить, |
|
будут ли они расположены на одной прямой. Если нет, то |
|
вычислить площадь треугольника ABC. |
29 |
Даны действительные числа а, b, с. Удвоить эти числа, если |
|
а ≥ b ≥ с, и заменить их абсолютными значениями, если это |
|
не так. |
30 |
На оси ОХ расположены три точки а, b, с. Определить, ка- |
|
кая из точек b или с расположена ближе к а. |
7
Пример №1
Задание. Даны три положительных числа а, b, с. Проверить, могут ли они обозначать длины сторон треугольника. Если да, то вычислить площадь этого треугольника.
Решение.
Логическая переменная x = «а, b, с – длины сторон треугольника».
Тестовая таблица
a |
b |
c |
x |
Площадь |
3 |
2 |
6 |
false |
- |
3 |
4 |
5 |
true |
6 |
Программа vetvl1.cpp
#include "stdafx.h" #include "math.h"
int _tmain(int argc, _TCHAR* argv[])
{
double a,b,c,p,s; bool x;
scanf_s("%le%le%le",&a,&b,&c); x=(a+b>c && a+c>b && b+c>a); if (x){
p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("s=%le\n",s);
}
else
printf("no triangle\n"); return 0;
}
Пример №2
Задание. Написать программу отыскания действительных корней уравнения ах3 + bх = 0 для произвольных а, b.
Решение.
1) Если a = 0 и b = 0, то получаем уравнение 0х3 + 0х = 0 или 0 = 0,
корнем которого является любое действительное число.
8
2) Если a = 0 и b ≠ 0, то получаем уравнение
bх = 0,
корнем которого является число 0.
3) Если a ≠ 0 и b = 0, то получаем уравнение ах3 = 0,
корнем которого является число 0.
4) Если a ≠ 0 и b ≠ 0, то получаем уравнение ах3 + bх = 0 или х (ах2 + b) = 0,
которое разбивается на два уравнения
х = 0 и ах2 + b = 0.
Корнем первого уравнения является число 0. И если –b/a > 0, то второе уравнение имеет действительные корни х = − b/ a и х = – − b/ a .
Тестовая таблица
a |
b |
Уравнение |
x |
|
|
ах3 + bх = 0 |
|
0 |
0 |
0 = 0 |
любое |
0 |
3 |
3x = 0 |
0 |
2 |
0 |
2x3 = 0 |
0 |
1 |
– 4 |
x3 – 4x = 0 |
0, 2, –2 |
Программа vetvl2.cpp
#include "stdafx.h" #include "math.h"
int _tmain(int argc, _TCHAR* argv[])
{
double a,b,x; scanf_s("%le%le",&a,&b); if(a==0 && b==0)
printf("x any\n");
else
{
if(a!=0 && b!=0)
{
printf("x=0\n"); if(-b/a>0)
{
x=sqrt(-b/a); printf("x=%le\n",x);
9
printf("x=%le\n",-x);
}
}
else
printf("x=0\n");
}
return 0;
}
Задача № 3
МНОЖЕСТВЕННЫЙ ВЫБОР
Цель. Знакомство с организацией множественного выбора в алгоритме.
Задание. Разработать алгоритм решения задачи, приведенной в табл. 3. Алгоритм представить его в виде блок-схемы и программы для ЭВМ на алгоритмическом языке С. Провести полное тестирование программы.
|
Таблица 3 |
|
|
|
|
№ |
Задание |
|
варианта |
||
|
||
|
|
|
1 |
Написать программу, которая по номеру дня недели (1 до 7) |
|
|
выдает в качестве результата количество часов аудиторных |
|
|
занятий в вашей группе в этот день. |
|
2 |
Написать программу, позволяющую по последней цифре |
|
|
числа (0 – 9) определить последнюю цифру его квадрата. |
|
3 |
Составить программу, которая по заданному году (високос- |
|
|
ный, невисокосный) и номеру месяца (1 – 12) определяет |
|
|
количество дней в этом месяце. |
|
4 |
Для каждой введенной цифры (0 – 9) вывести соответству- |
|
|
ющее ей название на английском языке (0 – zero, 1 – one, 2 |
|
|
– two и т.д.). |
|
5 |
Составить программу, которая по данному числу (1 – 12) |
|
|
выводит название соответствующего ему месяца. |
|
6 |
Составить программу, позволяющую получить словесное |
|
|
описание школьных отметок (1 – «плохо», 2 – «неудовле- |
|
|
творительно», 3 – «удовлетворительно», 4 – «хорошо», 5 – |
|
|
«отлично»). |
|
7 |
Пусть элементами круга являются: 1) радиус, 2) диаметр, 3) |
|
|
длина окружности. Составить программу, которая по номе- |
|
|
ру элемента запрашивала бы его значение и вычисляла |
|
|
площадь круга. |
10