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

Основы программирования. Учебное пособие

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

л) уравнение ax2 + bx + c = 0, где a, b и c могут равняться 0, имеет ровно один корень;

м) поля (г1, в1) и (г2, в2) шахматной доски имеют одинаковый цвет (г1, в1, г2, в2 заданы целыми числами от 1 до 8);

н) ферзь, расположенный на поле (г1, в1) шахматной доски, «бьет» поле (г2, в2) (г1, в1, г2, в2 заданы целыми числами от 1 до 8).

2) Записать указанное действие в виде одного условного оператора:

max(x, y) при x 0, а) z =

min(x, y) при x 0;

б) переменной x присвоить корень уравнения

arcsin (1 + ln x) = a, если корень существует;

в) перераспределить значения переменных x и y так, чтобы в x оказалось меньшее из этих значений, а в y – большее;

г) переменной k присвоить номер четверти плоскости, в которой находится точка с координатами x и y (xy ≠ 0);

д) если можно построить треугольник с длинами сторон a, b, c (a, b, c – произвольные числа), то переменной p присвоить периметр этого треугольника;

е) d = max (a, b, c) ; ж) t = min (x, y, z);

з) если значение переменной w не равно 0 и при этом котангенс от w меньше 0.5, тогда поменять знак у w, а если значение w равно 0, тогда присвоить w значение 1.

3) Используя оператор цикла записать последовательность операторов для решения задачи:

а) вычисление f= 10! описать каждым из трех вариантов оператора цикла;

б) логической переменной присвоить значение «истина» или «ложь» в зависимости от того, является ли натуральное число k степенью 3 или нет;

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

из n (n>1) вещественных чисел;

д) вычислить по схеме Горнера y = 11x10 + 10x9 + 9x8 +… +2x + 1;

е) вычислить значение многочлена

a0xn + a1xn-1 + . . . +an-1x + an и его производной в точке t2 + 0.5;

71

ж) вычислить значение n!! = 1*3*5*. . . *n, если n>0 и нечетно; з) вычислить значение n!! = 2*4*6*. . . *n, если n>0 и четно;

и) вычислить значение n!!, если n>0. Известно, что при n – нечет-

ном n!! = 1*3*5*. . . *n, а при n - четном n!! = 2*4*6* . . .*n ;

к) вычислить значение 2! + 4! + 6! + . . . + n!, если n>1;

л) вычислить значение cos x + cos x2 + cos x3 + … + cos x30 ;

м) вычислить первое из чисел sin x, sin sin x, sin sin sin x , . . . меньшее по модулю 10-4 ;

н) вычислить значение cos ( 1 + cos (2 + . . . + cos 39 + cos 40) … )); о) вычислить значение (1 – 1/22 )(1 – 1/32) . . . (1 – 1/n2) , если n>2.

7.3.РЕГУЛЯРНЫЙ ТИП МАССИВ

1)Используя тип массив, записать последовательность операторов для решения задачи: дана последовательность из n (n< 50) веществен-

ных чисел:

а) вычислить значение y = max xi ; б) вычислить значение y = min xi ;

в) вычислить значение y = xxx6 . . . ;

г) вычислить значение y =x1 + x3 + x5 +. . . ;

д) вычислить значение y =xxn + xxn-1 + . . . + xx1 ; е) вычислить значение y= x1 – x2 + x3 – . . . ± xn ;

ж) вычислить значение y =x1 + xx2 + xxx3 + . . . + xx2 . . .xn ; з) вычислить значение y =xn ( xn + xn-1 )(xn + xn-1 + xn-2 ) . . . (xn +. . .

+x1 и));вычислить значение y = x12 + x23 + x52+ . . . x2n ;

к) найти среднее арифметическое элементов последовательности; л) подсчитать количество чисел отличных от последнего числа; м) вывести элементы последовательности в следующем порядке:

сначала все отрицательные числа, а затем все остальные; н) преобразовать последовательность в следующем порядке: цик-

лически сдвинуть элементы последовательности на две позиции влево; о) преобразовать последовательность в следующем порядке: все отрицательные элементы перенести в ее начало, а все остальные в ее конец, сохраняя при этом исходное взаимное расположение, как среди

отрицательных, так и среди остальных элементов; п) определить, упорядочена ли последовательность строго по воз-

растанию; р) определить, чередуются ли положительные и отрицательные

элементы.

72

7.4. СТРОКОВЫЙ ТИП

Используя строковый тип и функции работы со строками, записать последовательность операторов для решения задачи:

1) Дана последовательность не более чем из 40 строчных латинских букв, за которой следуют пробелы:

а) напечатать эту строку предварительно преобразовав ее следующим образом: первое вхождение символов abc заменить на def;

б) напечатать эту строку предварительно преобразовав ее следующим образом: все вхождения последовательности символов abc заменить на def;

в) напечатать эту строку предварительно преобразовав ее следующим образом: удалить первое w вхождение символа;

г) напечатать эту строку предварительно преобразовав ее следующим образом: удалить все вхождения последовательности символов th; д) напечатать эту строку предварительно преобразовав ее следующим образом: первое вхождение символа x заменить на последова-

тельность символов rs;

е) напечатать эту строку предварительно преобразовав ее следующим образом: после каждой буквы q добавить букву u;

ж) напечатать эту строку предварительно преобразовав ее следующим образом: заменить все вхождения последовательности символов ph на f;

з) напечатать эту строку предварительно преобразовав ее следующим образом: заменить все вхождения последовательности символов ed на ing.

2) Дана последовательность из 50 слов, каждое слово из 5 букв: а) напечатать все слова, отличные от слова hello;

б) напечатать слово, которое меньше всех других слов последовательности;

в) напечатать слово, которое больше всех других слов последовательности;

г) напечатать текст составленный из последних букв всех слов последовательности;

д) напечатать все слова, содержащие ровно две буквы d; е) напечатать все слова, отличные от первого слова;

3) Даны два различных слова, в каждом из которых от 1 до 8 строчных латинских букв, за каждым словом пробел:

а) напечатать эти слова в алфавитном порядке; б) напечатать длину каждого слова.

73

7.5. ПОДПРОГРАММА

Используя декомпозицию и механизм подпрограмм решите задачу

иответьте на поставленные вопросы:

1)Пусть процедура сокр(a, b, p,q) от целых параметров (b≠0) приводит дробь a/b к несократимому виду p/q:

а) Какие из параметров этой процедуры обозначают исходные дан-

ные для нее, а какие – результаты? Как следует задать (определить) эти параметры?

б) Допустимы ли обращения сокр (k+1, 14,n, 7) и сокр (k, sqrt(36), k, n) к процедуре, где k и n – целые переменные?

в) Определите данную процедуру и используйте ее для приведения дроби 1+1/2+1/3+ . . . +1/20 к несократимому виду c/d;

2) Пусть процедура maxmin (x,y) присваивает параметру x большее из вещественных чисел x и y , а параметру y – меньшее:

а) Какие из параметров этой процедуры обозначают исходные данные для нее, а какие – результаты? Как следует задать (определить) эти параметры?

б) Допустимы ли обращения maxmin (5.2,y) и maxmin (s,k) к процедуре, где s – вещественная переменная, а k – целая переменная?

в) Определите данную процедуру и используйте ее для перераспределения значений вещественных переменных a, b и c так, чтобы стало a ≥ b ≥ c ;

3) Пусть функция scal (x,y) вычисляет скалярное произведение векторов x и y :

а) Какие из параметров этой процедуры обозначают исходные данные для нее, а какие – результаты? Как следует задать (определить) эти параметры?

б) Определите данную функцию и используйте ее для вычисления c = (a , b) , где a и b – вектора;

4) Пусть процедура sum(x,y, z) присваивает вектору z сумму векторов x и y (считать, что каждый вектор задан своими координатами в n- м пространстве):

а) Какие из параметров этой процедуры обозначают исходные данные для нее, а какие – результаты? Как следует задать (определить) эти параметры?

б) Определите данную процедуру и используйте ее для вычисления d= a + b + c , где d, a, b, c – вектора;

5) Если в первой половине строки s размером не более 60 символов менее 12 цифр и если в последней четверти строки t (также размером

74

не более 60 символов) нет символов от ‘a’ до ‘z’ , тогда вычислить k – количество символов ‘*’, входящих в среднюю треть строки s:

а) Какую подзадачу приходится решать в данной задаче несколько раз? Как следует описать решение этой подзадачи – как функцию или процедуру? Каковы входные и выходные данные этой подпрограммы? Какой способ передачи данных в подпрограмму обеспечит ее гибкость?

б) Определите даннуюподпрограмму ис ее помощьюрешитезадачу;

6)Переменной t присвоить значение «истина», если уравнения x2 +6.2x +a2 = 0 и x2 + ax +b-1 = 0 имеют вещественные корни и при этом оба корня первого уравнения лежат между корнями второго, в остальных случаях присвоить t значение «ложь»:

а) Какую подзадачу приходится решать в данной задаче несколько раз? Как следует описать решение этой подзадачи – как функцию или процедуру? Каковы входные и выходные данные этой подпрограммы? Какой способ передачи данных в подпрограмму обеспечит ее гибкость?

б) Определите даннуюподпрограмму ис ее помощьюрешитезадачу;

7)Вычислить значение u = Ax + By – Cz + Bx , где A, B, C – квадратные матрицы порядка n (n ≤ 10), а x, y, z, u – вектора порядка n каждый:

а) Какую подзадачу приходится решать в данной задаче несколько раз? Как следует описать решение этой подзадачи – как функцию или процедуру? Каковы входные и выходные данные этой подпрограммы? Какой способ передачи данных в подпрограмму обеспечит ее гибкость?

б) Определите даннуюподпрограмму ис ее помощьюрешитезадачу;

8)Если наибольший элемент последовательности X равен 10 и находится в первой половине этой последовательности и, если в последовательности Y нет положительных элементов, тогда все элементы последовательности Z, предшествующие ее наибольшему элементу, заменить на их кубы, здесь X, Y, Z – последовательности целых чисел размерностью n (n ≤ 50) каждая. Считать, что в каждой последовательности наибольший элемент один:

а) Какую подзадачу приходится решать в данной задаче несколько раз? Как следует описать решение этой подзадачи – как функцию или процедуру? Каковы входные и выходные данные этой подпрограммы? Какой способ передачи данных в подпрограмму обеспечит ее гибкость?

75

б) Определите даннуюподпрограмму ис ее помощьюрешитезадачу;

9)Даны отрезки a, b, c, d. Для каждой тройки этих отрезков, из которых можно построить треугольник, вычислить площадь треугольника:

а) Какую подзадачу приходится решать в данной задаче несколько раз? Как следует описать решение этой подзадачи – как функцию или процедуру? Каковы входные и выходные данные этой подпрограммы? Какой способ передачи данных в подпрограмму обеспечит ее гибкость?

б) Определите даннуюподпрограмму ис ее помощьюрешитезадачу;

10)Вычислить значение u =(sign x + sign y)sign(x + y), где sign a

равно 1, если a>0, равно –1, если a<0 и равно 0, если a=0:

а) Какую подзадачу приходится решать в данной задаче несколько раз? Как следует описать решение этой подзадачи – как функцию или процедуру? Каковы входные и выходные данные этой подпрограммы? Какой способ передачи данных в подпрограмму обеспечит ее гибкость?

б) Определите даннуюподпрограмму ис ее помощьюрешитезадачу;

11)Даны три натуральных числа, найти их наибольший общий де-

литель:

а) Какую подзадачу приходится решать в данной задаче несколько раз? Как следует описать решение этой подзадачи – как функцию или процедуру? Каковы входные и выходные данные этой подпрограммы? Какой способ передачи данных в подпрограмму обеспечит ее гибкость?

б) Определите даннуюподпрограмму ис ее помощьюрешитезадачу;

12)Даны координаты трех точек плоскости, определить номер координатной четверти для каждой из трех точек (считать, что координаты точек не совпадают с началом координат):

а) Какую подзадачу приходится решать в данной задаче несколько раз? Как следует описать решение этой подзадачи – как функцию или процедуру? Каковы входные и выходные данные этой подпрограммы? Какой способ передачи данных в подпрограмму обеспечит ее гибкость?

б) Определите даннуюподпрограмму ис ее помощьюрешитезадачу;

13)Даны три целых числа, подсчитать, сколько среди них четных

чисел:

а) Какую подзадачу приходится решать в данной задаче несколько раз? Как следует описать решение этой подзадачи – как функцию или процедуру? Каковы входные и выходные данные этой подпрограммы?

76

Какой способ передачи данных в подпрограмму обеспечит ее гибкость?

б) Определите даннуюподпрограмму ис ее помощьюрешитезадачу.

7.6. ПРОГРАММА

Написать программу решения задачи:

1)Дана последовательность из n вещественных чисел (n заранее неизвестно). Найти порядковые номера наибольшего и наименьшего значений среди них;

2)Дана последовательность ненулевых целых чисел, оканчивающаяся нулем (признак конца последовательности). Определить, со скольких отрицательных чисел она начинается;

3)Найти первое число Фибоначчи большее заданного m ( m>1). Числа Фибоначчи определяются следующими формулами:

f0 = f1 = 1; fn = fn-1 +fn-2 , n= 2, 3, …

4)Дана непустая последовательность, в которую могут входить только цифры и буквы, проверить является ли она десятичной записью числа, кратного 6;

5)Вычислить с заданной точностью eps значение функции sin x, используя степенной ряд: sin x = x – x3/3! + x5/5! – x7/7!+ …

d

6) При заданном n приближенно вычислить cosexdx , используя

c

формулу трапеций:

b

 

f (a)

f a h f a 2h ... f b h

f (b)

 

 

 

 

f (x)dx h

 

 

 

,

2

2

a

 

 

 

 

 

 

 

 

 

 

где h = (b a)/n.

7)Дан непустой текст, оканчивающийся признаком конца – точкой. Найти наиболее часто встречающуюся в этом тексте цифру (если таких цифр несколько, то любую их них).

8)Дана непустая последовательность слов из строчных латинских букв, между соседними словами запятая, за последним словом точка. Найти все буквы, входящие в наибольшее количество слов этой последовательности.

77

9)Дана квадратная матрица n-го порядка, n ≤ 20. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом.

10)Дана прямоугольная матрица порядка n*m, (n, m ≤ 30). Подсчитать количество различных элементов матрицы.

11)Дана прямоугольная матрица порядка n*m, (n, m ≤ 30). Сформировать последовательность, k-й элемент которой равен 1, если все элементы k-го столбца нулевые, иначе k-й элемент равен нулю.

12)Дана последовательность, содержащая от 1 до 30 слов, в каждом слове от 1 до 8 строчных латинских букв; между соседними словами запятая за последним словом точка. Найти все различные слова этого текста;

13)Дана последовательность, содержащая от 1 до 50 слов, в каждом слове от 1 до 10 строчных латинских букв; между соседними словами пробел за последним словом точка. Среди слов отличных от последнего найти слова, длина которых минимальна.

14)Используя декомпозицию и механизм подпрограмм написать программу решения задачи:

а) Дана прямоугольная матрица порядка n*m, n, m не превышают 30. Вычислить значение выражения x1xn + x2xn-1 + … +xnx1 , где xi – максимальный элемент i-й строки матрицы.

б) Даны координаты вершин двух треугольников. Определить, какой из них имеет большую площадь.

в) Даны две квадратные матрицы n-го порядка каждая (n не превышает 20). Напечатать квадрат той из них, в которой наименьший след (сумма элементов главной диагонали).

г) Даны три вектора x, y, z размером n каждый (n не превышает 50).

Втом из векторов, где больше всего отрицательных элементов и если это вектор x или y, все его положительные элементы заменить на их кубы, и на их обратные величины – если это вектор z.

д) Даны три квадратные матрицы n-го порядка каждая (n не превышает 20). Напечатать ту из них, где больше положительных строк (если таких матриц несколько напечатать их все).

е) Даны три квадратные матрицы A, B, C n-го порядка каждая (n не превышает 20) и натуральное число p. Получить (ABC)p .

ж) Дана непустая последовательность положительных вещественных чисел, за которой следует отрицательное число (признак конца последовательности). Используя рекурсию вычислить произведение этих положительных чисел.

78

з) Дана непустая последовательность не более чем из 200 символов. Используя рекурсию проверить, является ли симметричной часть последовательности, начинающаяся i-м и кончающаяся j-м ее элементами, где i и j номера элементов (i < j).

и) Дана непустая последовательность символов, оканчивающаяся пробелом – признак конца последовательности. Проверить является ли эта последовательность правильной записью формулы вида:

<формула > ::= < цифра > | (< формула > < знак > < формула > )

<знак > ::= + | - | *

<цифра > ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 .

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

79

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.Подбельский В.В. Программирование на языке Си: учебное пособие для вузов по направлениям: «Прикладная математика и информатика», «Информатика и вычислительная техника», специальностям «Прикладная математика», «Вычислительные машины, комплексы, системы и сети управления» / В.В. Подбельский, С.С. Фомин. – М., 2007. – 600 с. : ил., табл. – Рекомендовано МО.

2.Подбельский В.В. Практикум по программированию по языке Си: учебное пособие для вузов по направлениям «Прикладная математика и информатика», «Информатика и вычислительная техника», специальности «Прикладная математика и инорматика» / В.В. Подбельский. – М., 2004. – 574 с.: ил., табл. – Рекомендовано МО.

3.Подбельский В.В. Программирование на языке Си: учебное пособие для вузов / В.В. Подбельский, С.С. Фомин. – М., 2005. – 600 с.: ил., табл. – Рекомендовано МО.

4.Пильщиков В.Н. Сборник упражнений по языку Паскаль. – М.: Наука,

1989.

5.Кнут Д.Э. Искусство программирования. – Т. 1. Основные алгоритмы. –

М., 2007.

6.Хиценко В.П. Методические указания к самостоятельной работе по практическим занятиям [Электронный ресурс]: учебно-методическое пособие / В.П. Хиценко; Новосиб. гос. техн. ун-т. – Новосибирск, 2011.

80

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