Методическое пособие по предмету «Высокоуровневое программирование»
Методическое пособие по предмету «Высокоуровневое программирование»
Содержание
Лабораторная работа №1. 2
Тема: Объявление и описание функций. 2
1.1 Что из себя представляют функции. 2
1.2 Передача параметров в функции по значению и по ссылке. 9
Задания для лабораторной работы №1. 12
Дополнительный материал. 15
Приложение 1. 16
Математические функции. 16
Арифметические и алгебраические функции. 17
Тригонометрические функции. 17
Лабораторная работа №2. 19
Тема: Применение при передаче параметров спецификации const в функциях. 19
2.1 Основные правила использования const 19
2.2 Параметры со значениями по умолчанию. 21
2.3 Передача в функции переменного числа параметров. 23
Задания для лабораторной работы №2. 25
Лабораторная работа №3. 31
Тема: Способы применения встраиваемых функций и их перегрузка. 31
3.1 Встраиваемые функции inline. 31
3.2 Перегрузка функций. 32
3.3 Шаблоны функций. 35
3.4 Правила, определяющие область видимости переменных и функций. 37
Задания для лабораторной работы №3. 42
Лабораторная работа №4. 47
Тема: Объявление и описание структуры. 48
4.1 Определение и основные правила. 48
4.2 Самоадресуемые структуры. 50
Задания для лабораторной работы №4. 52
Лабораторная работа №5. 56
Тема: создание структур в стиле С++. 56
Задания для лабораторной работы №5. 58
Лабораторная работа №6. 61
Тема: Объявление и описание классов. 61
Задания для лабораторной работы №6. 70
Лабораторная работа №1
Тема: Объявление и описание функций
Задания для лабораторной работы №1.
Разработайте алгоритм, интерфейс пользователя, позволяющего вводить именованные исходные данные и вывод результатов, и программу решения задачи:
Вариант 1. Площади треугольника со сторонами a, b, c по формуле Герона.
,
где p = (a+ b + c)/2
Вариант 2. Площади поверхности усеченного конуса для заданных R, r,l.
Вариант 3. Объема усеченного конуса для заданных R, r, h.
Вариант 4. Координаты центра тяжести трех материальных точек с массами m1, m2, m3 и координатами ( x1,y1), (x2,y2), (x3,y3).
Вариант 5. Площади трапеции: где а и b — длины оснований; h — высота трапеции.
Вариант 6. Площади поверхности и объема цилиндра, где r – радиус основания, h – высота цилиндра.
; .
Вариант 7. Объема и площади поверхности шара радиуса r.
Вариант 8.. Объема полого цилиндра:
где радиус цилиндра, радиус отверстия, h высота цилиндра.
Вариант 9. Объема конуса высотой h и основанием радиуса r
Вариант 10.Величину тока, протекающего через цепь из двух параллельно соединенных сопротивлений r1 и r2 ом при напряжении 5 вольт.
Вариант 11.Площадь треугольника, если известны координаты вершин его углов: a = x1,y1; b = x2,y2; c = x3,y3.
Вариант 12.Величину дохода по вкладу. Процентная ставка a% годовых и время хранения t дней задаются во время работы программы.
Вариант 13.Стоимость поездки на автомобиле на дачу (туда и обратно). Исходными данными являются: расстояние до дачи L км; количество бензина, которое потребляет автомобиль на 100 км пробега –v литров; цена одного литра бензина с – руб.
Вариант 14.Величину тока через цепь из двух последовательно соединенных сопротивлений.R1 ,R2 и напряжении сети - v в.
Вариант 15. Программу пересчета веса из фунтов в килограммы (один фунт — это 405,9 грамма).
Вариант 16. Программу пересчета расстояния из километров в версты (одна верста — это 1066,8 м).
Вариант 17. В треугольнике (см. рис.1.10, а) заданы две стороны а и b и угол между ними С. Вычислить сторону с, углы А и В и площадь треугольника.
Вариант 18. В треугольнике (см. рис.1.10, а) заданы сторона а и прилегающие к ней углы В и С. Вычислить стороны b, c угол A треугольника.
Вариант 19. В треугольнике (см. рис.1.10, а) заданы три стороны a, b и с. Вычислить величины углов A, B, C треугольника.
Вариант 20. В треугольнике (см. рис.1.10, а) заданы две стороны а, b и площадь S. Вычислить сторону c, углы A, B, C треугольника.
Вариант 21. В треугольнике (см. рис.1.10, а) заданы сторона а, угол С и площадь S. Вычислить стороны b, c и углы A, и B треугольника.
Вариант 22. В треугольнике (см. рис.1.10, а) заданы сторона b, угол А и радиус описанной окружности R. Вычислить стороны a, c и углы B и C треугольника.
Вариант 23. В треугольнике (см. рис.1.10, а) заданы углы А, В и радиус описанной окружности R. Вычислить стороны a, b, c и угол C треугольника.
Вариант 24. В треугольнике (см. рис.1.10, а) заданы стороны a, b и радиус описанной окружности R. Вычислить сторону c, и углы A, B, C треугольника.
Вариант 25. В треугольнике (см. рис.1.10, а) заданы стороны a, b и половина периметра р. Вычислить сторону c и углы A, B, C треугольника.
Вариант 26. В треугольнике (см. рис.1.10, а) заданы углы А, С и высота hb. Вычислить стороны a, b, c и угол B треугольника.
Вариант 27. В треугольнике (см. рис.1.10, а) заданы стороны а, с и высота hb. Вычислить сторону b и углы A, B, C треугольника.
Вариант 28. В треугольнике (см. рис.1.10, а) заданы угол А, сторона с и высота hb. Вычислить стороны a, b и углы B, C треугольника.
Вариант 29. В ромбе (см. рис.1.10, б) заданы координаты вершин ха, уа, хь, уь, хс, ус и xd, yd Вычислить стороны и диагонали ромба треугольника.
Вариант 30. В ромбе (см. рис.1.10, б) заданы сторона а и угол А. Вычислить диагонали и угол B ромба.
Дополнительный материал.
В формулах для треугольников (рис.1.10, а) используются следующие обозначения: a, b, c — стороны треугольника; А, В, С — углы треугольника, противолежащие соответствующим сторонам; ha, hb, hc — высоты треугольника, опущенные соответственно на стороны a, b и с; р, S —половина периметра и площадь треугольника; r, R — радиусы вписанной и описанной окружностей.
В формулах и заданиях для ромба (рис.1.10, б) используются следующие обозначения: а — сторона ромба; А, В, С, D — углы ромба; d1,d2 — диагонали ромба; р,S—периметр и площадь ромба.
Рис.1.10. Обозначения элементов геометрических фигур к вариантам лабораторной работы №1: а — треугольник; б — ромб;
Приведем основные теоремы и формулы, необходимые для решения задач с треугольниками:
- теорема синусов;
- теорема косинусов;
;
- формула Герона;
;
При расчете элементов трапеции кроме приведенных для треугольников соотношений используются формулы:
A+B=C+D=180 град; S = 0.5 (b+d)h.
Приложение 1
Математические функции
При работе с математическими функциями надо иметь ввиду, что файлы math.h и Math.hpp в C++ Bilderавтоматически не подключаются к модулю приложения. Поэтому для использования описанных в этих файлах функций необходимо вручную вводить директивы в раздел, предшествующий разделу описания классов заголовочного файла
# include <math.h>
# include <Math.hpp>.
Тригонометрические функции
Функция | Синтаксис | Описание | ||
acos | double acos ( double x) | Арккосинус | ||
asin | double asin ( double x) | Арксинус | ||
atan | double atan ( double x) | Арктангенс | ||
cos | double cos ( double x) | Косинус | ||
sin | double sin ( double x) | Синус | ||
tan | double tan ( double x) | Тангенс | ||
Во всех тригонометрических функциях угол задается в радианах. Поэтому необходимо применять функции пересчета, приведенные ниже. | ||||
DegToRad | Extended DegToRad (Extended x) | Вычисляет угол в радианах по его значению в градусах | ||
RadToDeg | Extended RadToDeg (Extended x) | Вычисляет угол в градусах по его значению в радианах | ||
Лабораторная работа №2
Задания для лабораторной работы №2.
Разработать алгоритм, интерфейс пользователя и написать программу решения указанного варианта задания. При разработке интерфейса предусмотреть размещение на форме информации для пользователя, ввод исходных данных и вывод результатов вычисления в текстовые окна и метки.
Вариант 1. Разработать алгоритм, интерфейс пользователя и программу вычисления величины z по формуле:
x3/y, если y !=0;
z = “делитель равен 0”,если y=0.
Вариант 2. Разработать алгоритм, интерфейс пользователя и программу вычисления величины z по формуле:
z = x3/y, где y = sin(n*x+0,5).
Вариант 3. Разработать алгоритм, интерфейс пользователя и программу вычисления величины z по формуле:
sin(x) , если x<=a;
z = cos(x), если a< x<b;
tg(x), если x>=b.
Вариант 4. Разработать алгоритм, интерфейс пользователя и программу упорядочивания трех чисел: a, b, c.
Вариант 5. Разработать алгоритм, интерфейс пользователя и программу вычисления величины y по формуле:
ln(x), если x >=1
y = 1 , если x = 0;
ex, если x <=-1.
Вариант 6. Разработать алгоритм, интерфейс пользователя и программу, позволяющую найти квадрат наибольшего из двух чисел a и b. Вывести признак N =1, если наибольшим является a и признак N=2 в противном случае.
Вариант 7. Разработать алгоритм, интерфейс пользователя и программу, позволяющую определить можно ли построить треугольник из трех отрезков длиной a , иb, c, вывести результат.
Вариант 8. Разработать алгоритм, интерфейс пользователя и программу, позволяющую определить совпадает - ли конец отрезка с полярными координатами R и φ с точкой с координатами x1,y1.
Вариант 9. Разработать алгоритм, интерфейс пользователя и программу, позволяющую вычислить момент инерции различных типов профилей, (используйте оператор множественного выбора)
При k=1 I = (B*H3)/12;
При k=2 I = (B*H- b*h)3/12;
При k=3 I = (B*H3- b*h3)/12;
Вариант 10. Разработать алгоритм, интерфейс пользователя и программу, позволяющую вычислить площадь одной из геометрических фигур по выбору пользователя:
треугольника - по заданным основанию и высоте;
прямоугольника - по заданным длине и ширине;
трапеции - по заданным основаниям и высоте;
круга - по заданному радиусу.
При разработке интерфейса для предоставления права выбора использовать переключатели.
Вариант 11. На каждый день недели запланированы определенные работы. Разработать алгоритм, интерфейс пользователя и программу, позволяющую по введенному признаку дня недели вывести запланированное на этот день задание.
Вариант 12. Известно расписание занятий на день. Разработать алгоритм, интерфейс пользователя и программу, позволяющую по введенной паре часовых занятий вывести наименование занятий и номер аудитории.
Вариант 13. Разработать алгоритм , интерфейс пользователя и программу, позволяющую вычислить значение величины z по формуле:
|
a – b, при b >a
Вариант 14. Разработать алгоритм , интерфейс пользователя и программу, позволяющую вычислить значение величины z по формуле:
|
a – b +c, при b >a и c >a - b/
Вариант 15. Разработать алгоритм, интерфейс пользователя и программу, позволяющую вычислить значение величины z по формуле:
|
arctg(x), при b -1 >x >1.
Вариант 16. Разработать алгоритм, интерфейс пользователя и программу, позволяющую вычислить значение величины z по формуле:
|
|
a – b – c, при a > b и с< a- b или c< 0.
Вариант 17. Разработать алгоритм, интерфейс пользователя и программу, позволяющую вычислить значение величины z по формуле:
|x| при x<=1;
|
4 в других случаях.
Вариант 18. Разработать алгоритм, интерфейс пользователя и программу, позволяющую вычислить значение величины y по формуле. Для выбора варианта расчета использовать переключатели.
sin(x);
|
ex
Вариант 19. Дана окружность радиуса R с центром в точке с координатами x0, y0 . Разработать алгоритм, интерфейс пользователя и программу позволяющую определить, лежит ли точка с координатами x1, y1 внутри окружности.
Вариант 20. Разработать алгоритм, интерфейс пользователя и программу, позволяющую вычислить значение величины y по формуле:
bx-lg(bx) при bx<1;
|
e-bx + lg(bx).
Вариант 21. Дан квадрат с центром в точке с координатами x0, y0 и длиной стороны, равной a. Стороны параллельны осям 0x и 0y. Разработать алгоритм, интерфейс пользователя и программу, определить находится ли точка с заданными координатами x, y внутри прямоугольника.
Вариант 22. Разработать алгоритм, интерфейс пользователя и программу, позволяющую вычислить значение величины y по выбранной пользователем формуле:
1,5*cos2x;
|
(x-2)2+6;
3*tg(x).
Вариант 23. Дано кольцо с центром в начале координат. Радиус внешней окружности R и внутренней r, Разработать алгоритм, интерфейс пользователя и программу, позволяющую определить находится ли произвольно заданная точка с координатами x, y в кольце либо внутри кольца.
Вариант 24. Генератор случайных чисел выдает целое число в диапазоне от 1 до 100. Разработать алгоритм, интерфейс пользователя и программу, позволяющую определить является это число четным или не четным.
Вариант 25. Генератор случайных чисел выдает целое число в диапазоне от 1 до 100. Разработать, интерфейс пользователя алгоритм и программу позволяющую определить является это число четным, или делится на 3 или не делится ни на 2, ни на 3.
Вариант 26. Разработать алгоритм , интерфейс пользователя и программу, позволяющую вычислить значение величины y по формуле:
|
sin2√|y-x| при x>=y
Вариант 27. Разработать алгоритм, интерфейс пользователя и программу, которая вычисляет частное двух чисел. Программа должна проверять правильность введенных пользователем данных и, если они неверные (делитель равен нулю), вы давать сообщение об ошибке. «Вы ошиблись. Делитель не должен быть равен нулю».
Вариант 28. Разработать алгоритм, интерфейс пользователя и программу вычисления площади кольца. Программа должна проверять правильность исходных данных. «Ошибка! Радиус отверстия не может быть больше радиуса кольца».
Вариант 29. Разработать алгоритм, интерфейс пользователя и программу, позволяющую вычислить значение величины y по выбранной пользователем формуле:
|
a*lgx +√(x+1) при a<0 и x>π.
Вариант 30.Дни недели пронумерованы от 1 до 7. на каждый день записано какое - либо задание. Разработать алгоритм, интерфейс пользователя и программу, позволяющую по введенному номеру дня недели вывести предписанное задание.
Вариант 31.В прямоугольной системе координат из начала координат проведена прямая под углом к оси ОХ , равно φ. Координаты точки А (x >0, y>o). Разработать алгоритм, интерфейс пользователя и программу, позволяющую определить находится –ли точка А выше или ниже линии.
Лабораторная работа №3
Встраиваемые функции inline
Реализация программы как набора функций хороша с точки зрения разработки программного обеспечения, но вызовы функций приводят к накладным расходам во время выполнения. В С++ для снижения этих накладных расходов на вызовы функций — особенно небольших функций — предусмотрены встраиваемые (inline) функции. Спецификация inline перед указанием типа результата в объявлении функции «советует» компилятору сгенерировать копию кода функции в соответствующем месте, чтобы избежать вызова этой функции. Это эквивалентно объявлению соответствующего макроса. В результате получается множество копий кода функции, вставленных в программу, вместо единственной копии, которой передается управление при каждом вызове функции.
Компилятор может игнорировать спецификацию inline, что обычно и делает для всех функций, кроме самых небольших.
Любые изменения функции inline могут потребовать перекомпиляцию всех «потребителей» этой функции. Это может оказаться существенным моментом для развития и поддержки некоторых программ,
Хороший стиль программирования
Спецификацию inline целесообразно применять только для небольших и часто используемых функций. Использование функций inline может уменьшить время выполнения программы, но может увеличить ее размер. Применение функций inline предпочтительнее объявления макросов, поскольку в данном случае вы даете возможность компилятору оптимизировать код.
Пусть, например, вам во многих частях программы приходится вычислять длину окружности, заданной своим радиусом R. Тогда вы можете оформить эти вычисления, определив встраиваемую функцию:
inline double Circ(double R){return 6.28318 * R;}
Обращение в любом месте программы вида Circ(2) приведет к встраиванию в соответствующем месте кода 6.28318 * 2 (если компилятор сочтет это целесообразным).
Перегрузка функций
С++ позволяет определить несколько функций с одним и тем же именем, если эти функции имеют разные наборы параметров (по меньшей мере разные типы параметров). Эта особенность называется перегрузкой функции. При вызове перегруженной функции компилятор С++ определяет соответствующую функцию путем анализа количества, типов и порядка следования аргументов в вызове. Перегрузка функции обычно используется для создания нескольких функций с одинаковым именем, предназначенных для выполнения сходных задач, но с разными типами данных.
Перегруженные функции, которые выполняют тесно связанные задачи, делают программы более понятными и легко читаемыми.
Пусть, например, вы хотите определить функции, добавляющие в заданную строку типа char * символ пробела и значение целого числа, или значение числа с плавающей запятой, или значение булевой переменной. Причем хотите обращаться в любом случае к функции, которую называете, например, ToS, предоставив компилятору самому разбираться в типе параметра и в том, какую из функций надо вызывать в действительности. Для решения этой задачи вы можете описать следующие функции:
char *ToS(char *s, int X)
{
return strcat(strcat(S," "),IntToStr(X).c_str());
}
char *ToS(char *S, double X)
{
return strcat(strcat (S," "),FloatToStr(X).c_str());
}
char *ToS(char *S, bool X)
{
if (X) return strcat(S," true");
else return strcat (S," false");
}
Тогда в своей программе вы можете написать, например, вызовы:
char S[128] = "Значение =";
char S1 = ToS(S,5) ;
или
char S[128] = "Значение =";
char S2 = ToS(S,5.3);
или
char S[128] = "Значение =";
char S3 = ToS(S,true);
В первом случае будет вызвана функция с целым аргументом, во втором — с аргументом типа double, в третьем — с булевым аргументом. Перегрузив соответствующие функции, вы существенно облегчили свою жизнь, избавившись от необходимости думать о типе параметра.
Приведем еще один пример, в котором перегруженные функции различаются количеством параметров. Ниже описана перегрузка функции, названной Area и вычисляющей площадь круга по его радиусу R, если задан один параметр, и площадь прямоугольника по его сторонам а и Ь, если задано два параметра:
double Area(double R)
{
return 6.28318 * R * R;
}
double Area(double a, double b)
{
return a * b;
}
Тогда операторы вида:
S1 = Area(1);
S2 = Area(1,2);
приведут в первом случае к вызову функции вычисления площади круга, а во втором — к вызову функции вычисления площади прямоугольника.
Перегруженные функции различаются компилятором с помощью их сигнатуры — комбинации имени функции и типов ее параметров. Компилятор кодирует идентификатор каждой функции по числу и типу ее параметров (иногда это называется декодированием имени), чтобы иметь возможность осуществлять надежное связывание типов. Надежное связывание типов гарантирует, что вызывается надлежащая функция и что аргументы согласуются с параметрами. Компилятор выявляет ошибки связывания и выдает сообщения о них.
Для различения функции с одинаковыми именами компилятор использует только списки параметров. Перегруженные функции не обязательно должны иметь одинаковое количество параметров. Программисты должны быть осторожными, имея дело в перегруженных функциях с параметрами по умолчанию, поскольку это может стать причиной неопределенности.
Функция с пропущенными аргументами по умолчанию может оказаться вызванной аналогично другой перегруженной функции; это синтаксическая ошибка.
Рассмотренный аппарат перегрузки функций — только один из возможных способов решения поставленной задачи, правда, универсальный, позволяющий работать и с разными типами параметров, и с разным числом параметров. В следующем разделе рассмотрен еще один механизм — шаблоны, позволяющий решать аналогичные задачи, правда, для более узких классов функций.
Шаблоны функций
Перегруженные функции обычно используются для выполнения сходных операций над различными типами данных. Если операции идентичны для каждого типа, это можно выполнить более компактно и удобно, используя шаблоны функций. Вам достаточно написать одно единственное определение шаблона функции. Основываясь на типах аргументов, указанных в вызовах этой функции, С++ автоматически генерирует разные функции для соответствующей обработки каждого типа. Таким образом, определение единственного шаблона определяет целое семейство решений.
Все определения шаблонов функций начинаются с ключевого слова template, за которым следует список формальных типов параметров функции, заключенный в угловые скобки (<) и (>). Каждый формальный тип параметра предваряется ключевым словом class. Формальные типы параметров — это встроенные типы или типы, определяемые, пользователем. Они используются для задания типов аргументов функции, для задания типов возвращаемого значения функции и для объявления переменных внутри тела описания функции. После шаблона следует обычное описание функции.
Приведем пример шаблона функции, возвращающей минимальный из трех передаваемых в нее параметров любого (но одинакового) типа:
template <class Т>
Т min (Т x1, Т х2, Т хЗ)
{
T lmin = x1;
if (x2 < lmin)
lmin = x2;
if (x3 < lmin)
lmin = x3;
return lmin;
}
В заголовке шаблона этой функции объявляет единственный формальный параметр Т как тип данных, который должен проверяться функцией min. В следующем далее заголовке функции этот параметр Т использован для задания типа возвращаемого значения (Т min) и для задания типов всех трех параметров xl - хЗ. В теле функции этот же параметр Т использован для указания типа локальной переменной lmin.
Объявленный таким образом шаблон можно использовать, например, следующим образом:
int i1 = 1, i2 = 3, i3 = 2;
double r1 = 2.5, r2 = 1.7, r3 = 3.4;
AnsiString si = "строка 1", s2 = "строка 2", s3 = "строка 3";
Label1->Caption = min(il,i2,i3);
Label2->Caption = min(rl,r2,r3);
Label3->Caption = min(s3,s2,s1);
Когда компилятор обнаруживает вызов min в исходном коде программы, этот тип данных, переданных в min, подставляется всюду вместо Т в определении шаблона и С++ создает законченную функцию для определения максимального из трех значений указанного типа данных. Затем эта созданная функция компилируется. Таким образом, шаблоны играют роль средств генерации кода.
Например, при вызове функции с тремя целыми параметрами компилятор сгенерирует функцию:
int min(int xl, int x2, int x3)
{
int lmin = xl;
if (x2 < lmin)
lmin = x2;
if (x3 < lmin)
lmin = x3;
return lmin;
}
Приведенный шаблон будет работать для любых предопределенных или введенных пользователем типов, для которых определена операция отношения.
Каждый формальный параметр в определении шаблона должен хотя бы однажды появиться в списке параметров функции. Каждое имя формального параметра в списке определения шаблона должно быть уникальным. Отсутствие ключевого слова class перед каждым формальным параметрам шаблона функции является ошибкой.
Задания для лабораторной работы №3
Вариант 1. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать сумму К членов числового ряда:
Вариант 2. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать сумму членов числового ряда с точностью E.
Вариант 3. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать произведение К членов числового ряда:
целое K ввести с клавиатуры.
Вариант 4. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать сумму членов числового ряда:
с точностью
Вариант 5. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать произведение членов числового ряда:
с точностью
Вариант 6. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать сумму К членов числового ряда:
Вариант 7. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать сумму членов числового ряда:
с точностью
Вариант 8. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать произведение членов числового ряда:
с точностью
Вариант 9. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать сумму членов числового ряда:
с точностью
Вариант 10. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать произведение К членов числового ряда:
Вариант 11. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать сумму К членов числового ряда:
Вариант 12. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать сумму К членов числового ряда:
S=
Количество суммируемых членов ряда задается во время работы программы.
Вариант 13. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать сумму членов числового ряда:
с точностью.
Вариант 14. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести на печать произведение К членов числового ряда:
Вариант 15.Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести в ListBox квадраты К десяти целых положительных чисел, начиная с К1.
Вариант 16. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить сумму первых n целых положительных целых чисел, начиная с n1. Количество суммируемых чисел должно вводиться в ListBox.
Вариант 17. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить сумму членов числового ряда
с точностью
Вариант 18. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить значения функции у = -2,4х2+5х-3 в диапазоне от -2 до 2, с шагом 0,5.
Вариант 19. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей сгенерировать последовательность из К случайных чисел в диапазоне от 1 до 100, вывести их в ListBox и вычислить их среднее арифметическое.
Вариант 20. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить значения функции у=|х|. для диапазона изменения аргумента от –N1 до N2, шаг приращения аргумента 0,5 и вывести их в ListBox .
Вариант 21. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить сумму членов числового ряда:
с точностью
Вариант 22. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить значения функции:
при изменении х от -1 до 1 с шагом 0,2 и у от -2 до 2 с шагом 0,5.
Вариант 23. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести в ListBox значения функции:
при изменении х от 0 до π с шагом π /8 и у от 0 до π с шагом π/16.
Вариант 24. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить сумму членов числового ряда:
с точностью
Вариант 25. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести в ListBox значения функции:
при изменении х от 0 до 2 с шагом 0,1 и у от-2 до 2 с шагом 0,5.
Вариант 26.Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести в ListBox нечетные целые положительные числа в диапазоне от К1 до К2 и их сумму.
Вариант 27. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить сумму К членов числового ряда при Х = Х0.
Вариант 28. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить сумму членов числового ряда:
с точностью
Вариант 29. Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести в ListBox значения функции:
при изменении х от 0 до 1 с шагом 0,1 и у от 1 до 25 с шагом 2,5.
Вариант 30.Разработать алгоритм, интерфейс пользователя и написать код программы, позволяющей вычислить и вывести в ListBox.
Лабораторная работа №4
Самоадресуемые структуры
Нередко в памяти надо динамически размещать последовательность структур, как бы формируя некий фрагмент базы данных, предназначенный для оперативного анализа и обработки. Поскольку динамическое размещение проводится в непредсказуемых местах памяти, то такие структуры надо снабдить элементами, содержащими указатели на следующую аналогичную структуру. Такие структуры со ссылками на аналогичные структуры и называются самоадресуемыми. Ниже приведена схема связи таких структур в последовательность. Полю указателя в последней структуре обычно присваивается значение NULL, что является признаком последней структуры при организации поиска в списке.
Список структур | структура 1 … | структура 2 … | структура N … | NULL | ||
указатель | указатель | указатель |
Если мы хотим структуру сделать самоадресуемой, следует изменить ее объявление следующим образом:
struct TPers
{
AnsiString Fam, Nam, Par;
unsigned Year;
bool Sex;
AnsiString Dep;
TPers * pr;
};
Приведем пример формирования в памяти списка таких структур. Для этого надо определить три переменные, являющиеся указателями на структуры:
TPers *Р0 = NULL, *Pnew, *Pold;
Первая из этих переменных будет всегда указывать на первую структуру в списке. Две остальные переменные — вспомогательные. Если в н