- •Сборник лабораторных работ
- •Аннотация
- •Введение
- •1Краткая теоретическая справка Математические функции стандартной библиотеки с
- •Справочная информация о величинах геометрических фигур
- •Расстояние между двумя точками
- •2Индивидуальные задания
- •3Краткая теоретическая справка
- •4Типовые задачи
- •5Индивидуальные задания
- •6Краткая теоретическая справка
- •Представление аналитических функций в виде рядов Тейлора
- •Общая схема алгоритма суммирования
- •Учет рекуррентной зависимости членов ряда
- •Учет погрешности вычисления суммы членов ряда
- •7Индивидуальные задания
- •8Краткая теоретическая справка Свойства делимости
- •Работа с цифрами числа
- •Типовые задачи
- •9Индивидуальные задания
- •10Краткая теоретическая справка Типовые задачи
- •11Индивидуальные задания
- •12Краткая теоретическая справка Обход матрицы
- •13Индивидуальные задания
- •14Краткая теоретическая справка
- •15Индивидуальные задания
- •16Краткая теоретическая справка
- •17Индивидуальные задания
- •18Краткая теоретическая справка
- •19Индивидуальные задания
- •20Краткая теоретическая справка
- •21Индивидуальные задания
- •22Индивидуальные задания
18Краткая теоретическая справка
Работа со структурами подробно рассмотрена в конспекте лекций.
В языках С или C++ структура (структурный тип) создается при помощи ключевого слова struct, за которым следуют необязательное имя и список элементов структуры. Имя используется для создания других переменных данного структурного типа. Синтаксис описания структуры выглядит следующим образом:
struct имя_стуктурного_типа{
тип_элемента элемент1;
тип_элемента элемент2;
тип_элемента элемент3;
...
тип_элемента элементN;
};
Далее имя_стуктурного_типа может использоваться как и имя базового типа для создания переменных:
имя_стуктурного_типа список_имен_переменных;
Для обращения к отдельным элементам структур используются две операции: операция доступа к элементу структуры ('.'), также называемая операцией-точкой, и операция косвенного доступа к элементу структуры ('->'), также называемая операцией-стрелкой.
Пример. Определить структуру, описывающую понятие рациональное число. Написать и протестировать функции для сокращения, печати рационального числа, а также для деления двух рациональных чисел.
#include<stdio.h>
#include<math.h>
struct Racion{ //структурный тип "рациональная дробь"
int chis;
int znam;
};
void put(Racion A); //вывод структуры на экран
Racion SOKR(Racion A); //сокращение дроби
void DIV(Racion A, Racion B, Racion *C); //деление дробей
void main(){
Racion A, B, C;
puts("Введите числитель и знаменатель первой, "
"а затем - второй дроби : ");
scanf("%d%d%d%d", &A.chis, &A.znam, &B.chis, &B.znam);
DIV(A, B, &C);
printf("При делении "); put(A); printf (" на "); put(B);
printf("\n получилось "); put(C);
}
//вывод структуры A на экран:
void put(Racion A){
//если числитель и знаменатель имеют разные знаки:
if(A.chis * A.znam < 0) printf("-");
A.chis = abs(A.chis);
A.znam = abs(A.znam);
printf "%d/%d", A.chis, A.znam);
}
//сокращение дроби A:
Racion SOKR(Racion A){
int i, min;
if(abs(A.chis) > abs(A.znam)) min = abs(A.znam);
else min = abs(A.chis);
for(i = min; i >1; i--)
if(A.chis % i = 0 && A.znam % i = 0) break;
A.chis /= i;
A.znam /= i;
return A;
}
//деление дробей A и B, результат возвращается через адрес C:
void DIV(Racion A, Racion B, Racion *C){
A = SOKR(A);
B = SOKR(B);
C->chis = A.chis * B.znam;
C-<znam = A.znam * B.chis;
*C=SOKR(*C);
}
19Индивидуальные задания
Задача 1. Описать новый структурный тип. Описать требуемые в задаче функции для работы со структурами. Продемонстрировать выполнение функций. Для ввода-вывода переменной структурного типа описать функции inputStr() и printStr().
№ |
Формулировка задачи |
1 |
Ввести перечислимые типы масть, достоинство. С их помощью описать как структуру переменную карта. Составить и протестировать функцию
которая проверяет, бьет ли карта К1 карту К2, с учетом того, что масть Км является козырной. |
2 |
Определить структуры, описывающие шар и точку в трехмерном пространстве. Составить и протестировать функцию, которая проверяет, находится ли точка внутри заданного шара. |
3 |
Ввести структуру (с полями числитель и знаменатель) для описания понятия рациональное число. Составить и протестировать функции:
|
4 |
Ввести структуру (с полями число, месяц, год) для описания понятия дата. Составить и протестировать функцию, которая:
|
5 |
Ввести структуру для описания комплексного числа. Составить и протестировать функции для:
|
6 |
Ввести структуру для описания понятия алгебраический полином. Составить и протестировать функции для:
|
7 |
Ввести структуру для описания треугольника. Составить и протестировать функции для:
Можно сначала описать структуру для описания точки. Тогда треугольник можно задать с помощью трех точек – вершин треугольника. |
8 |
Определить структуру, описывающую равнобедренный прямоугольный треугольник с катетами, параллельными осям координат, и нижним левым прямым углом. Написать и протестировать функцию, возвращающую указатель на новый треугольник – область пересечения двух заданных. Если пересечения нет – возвращается NULL. |
9 |
Определить структуры, описывающие точку в полярной и декартовой системах координат. Составить и протестировать функции для:
|
10 |
Определить структуру – важнейшие исторические даты. Ее поля – год, событие. Написать и протестировать функции:
|
11 |
Определить структуру, описывающую прямоугольник со сторонами, параллельными осям координат (прямоугольник задается двумя точками – левой нижней и правой верхней). Написать и протестировать функцию, возвращающую указатель на новый прямоугольник – область пересечения двух прямоугольников. Если пересечения нет – возвращается NULL. |
12 |
Определить структуру, описывающую прямоугольник со сторонами, параллельными осям координат (прямоугольник задается двумя точками – левой нижней и правой верхней). Составить и протестировать функции для:
|
13 |
Определить структуру, описывающую окружность и точку. Составить и протестировать функции для:
|
14 |
Определить структуру, описывающую кольцо (задается с помощью двух окружностей разных радиусов и с одним центром) и точку. Составить и протестировать функции для:
|
15 |
Определить структуру, описывающую квадрат, задающийся координатами центра и длиной стороны. Составить и протестировать функции для:
|
Задача 2. Задать массив структур согласно варианту (в соответствии с задачей 1). Описать функции для ввода-вывода значений массива. Последовательно выполнить сортировку массива по каждому из полей (функцию сортировки можно написать самостоятельно или использовать стандартную функцию qsort()). Поле, по которому производится сортировка, задается с помощью одного из параметров функции сортировки. После каждого вызова функции выводить массив на печать.
Тема: Работа с файлами
Цели: получение навыков взаимодействия с файлами.