Файл: Лабораторная работа 01 Среды разработки программ на языке С Драчева Кристина Проверил Савин Н. И. Тула 2023.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.02.2024

Просмотров: 58

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

5.Ответы на контрольные вопросы


  1. В языке C между указателями и массивами существует тесная связь. Например, когда объявляется массив в виде int array[25], то этим определяется не только выделение памяти для двадцати пяти элементов массива, но и для указателя с именем array

  2. При объявлении массива можно использовать инициализаторы. Список инициализирующих значений состоит из констант, разделенных запятыми. Весь список должен быть заключен в фигурные скобки. Количество значений в инициализаторе не должно быть больше размера массива. Если значений в инициализаторе меньше, остальным элементам массива присваивается 0. Каждая константа должна иметь тип, совместимый с типом массива.

  3. При динамическом распределении памяти для массивов следует описать соответствующий указатель и присваивать ему значение при помощи функции calloc. При динамическом распределении памяти для массивов следует описать соответствующий указатель и присваивать ему значение при помощи функции new. Для создания двумерного массива нужно распределить память для массива указателей на одномерные массивы, а затем распределять память для одномерных массивов. В C++ выделение динамической памяти для массивов и создаваемых динамически объектов осуществляется с помощью оператора new

  4. сложение, вычитание, инкремент, декремент). Однако сами операции производятся немного иначе, чем с числами. И многое здесь зависит от типа указателя.

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


6. Вывод по проделанной работе

Ознакомился с принципами использования массивов, указателей и адресной арифметикой в программах на языках C и C++.


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Институт Прикладной математики и компьютерных наук


Кафедра Вычислительной техники
Учебная дисциплина

Программирование

Уровень профессионального образования: (высшее образование – бакалавриат)

Направление подготовки: Информатика и вычислительная техника

Профиль подготовки: Электронно-вычислительные машины, комплексы, системы и сети
Лабораторная работа № 04

Функции в программах на С++

Выполнила: Драчева Кристина

Проверил Савин Н.И.

Тула 2023

1. Цель работы

Освоение методов определения функций, передачи аргументов, использования библиотек функций, основ нисходящей технологии программирования

2. Техническое задание

1.Напишите функцию вычисления произведения двух целых чисел. Перегрузите функцию для работы с тремя и четырьмя целыми числами и числами с плавающей точкой. Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

2. Напишите функцию составления двухзначного числа из переданных ей в качестве параметра двух целых чисел – цифр (например, 3 + 7 = 37). Перегрузите функцию для работы с тремя и четырьмя целыми числами (соответственно результат – трех и четырехзначные числа). Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

3. Напишите функцию поиска максимального из двух целых чисел. Перегрузите функцию для работы с тремя и четырьмя целыми числами и числами с плавающей точкой. Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

4. Напишите функцию поиска среднего арифметического из двух целых чисел. Перегрузите функцию для работы с тремя и четырьмя целыми числами и числами с плавающей точкой. Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

5. Напишите функцию поиска НОД двух целых чисел (например, алгоритмом Евклида). Перегрузите функцию для работы с тремя и четырьмя целыми числами и числами с плавающей точкой. Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.



6. Напишите функцию поиска НОК двух целых чисел. Перегрузите функцию для работы с тремя и четырьмя целыми числами и числами с плавающей точкой. Вынести объявления функций в отдельный заголовочный файл и использовать функции до их определения. Продемонстрировать в программе работу всех функций.

3.Постановка задачи

Решить заданные задачи и ответить на контрольные вопросы.

Способ решения. Для решения поставленной задачи будет использован объектно-ориентированный язык программирования С++.

4. Ход работы

Задание №1

Листинг программы:

usingnamespace std;

int sum;

int mmm(inta, intb) {

sum = a + b;

return sum;

}
double mmm(doublea, doubleb, doublec) {

sum = a + b + c;

return sum;

}
double mmm(doublea, doubleb, doublec, doubled) {

sum = a + b+c+d;

return sum;

}
void main() {

setlocale(LC_ALL, "Russian");

cout <<"Два значения: "<<"Результат: "<< mmm(5, 6) << endl;

cout <<"Три значения: "<<"Результат: "<< mmm(3, 6.2, 9) << endl;

cout <<"Четыре значения: "<<"Результат: "<< mmm(2, 6.2, 9, 11) << endl;

}



Задание№2

Листингпрограммы:

usingnamespace std;

string sum, n;

string mmm(stringa,stringb) {

sum =a+b;

return sum;

}
string mmm(stringa,stringb, stringc) {

sum =a+b+c;

return sum;

}
string mmm(stringa,stringb,stringc,stringd) {

sum =a+b+c+d;

return sum;

}
void main() {

setlocale(LC_ALL, "Russian");

cout <<"Два значения: "<<"Результат: "<< mmm("5", "6") << endl;

cout <<"Два значения: "<<"Результат: "<< mmm("5", "6", "1") << endl;

cout <<"Два значения: "<<"Результат: "<< mmm("5", "7","5","7") << endl;

}



Задание№3

Листингпрограммы:

usingnamespace std;

int max;

int mmm(inta, intb) {

if (a>b)

max = a;

elseif (a
max = b;

return max;

}
double mmm(doublea, doubleb, doublec) {

if (a
max = b;

elseif (a>b)

max = a;

if (max >c)

return max;

elseif (max
max = c;

return max;

}
double mmm(doublea, doubleb, doublec, doubled) {

if (a
max = b;

elseif (a>b)

max = a;

if (max >c)

return max;

elseif (max
max = c;

if (max >d)

return max;

elseif (max
max = d;

return max;

}
void main() {

setlocale(LC_ALL, "Russian");

cout<<"Двазначения: "<<"Наибольшее: "<
cout<<"Тризначения: "<<"Наибольшее: "<
cout <<"Четыре значения: "<<"Наибольшее: "<< mmm(2, 6.2, 24, 11) << endl;

}}



Задание№4

Листинг программы:

usingnamespacestd;


int mmm(inta, intb) {

return (a + b) / 2;

}
double mmm(doublea, doubleb,doublec) {

return (a + b + c) / 3;

}
double mmm(doublea, doubleb, doublec, doubled) {

return (a + b + c + d) / 4;

}
void main() {

setlocale(LC_ALL, "Russian");

cout <<"Два значения: "<<"Среднее: "<< mmm(5, 6) << endl;

cout <<"Три значения: "<<"Среднее: "<< mmm(3, 6.2, 9) << endl;

cout <<"Четыре значения: "<<"Среднее: "<< mmm(2, 6.2, 9, 11) << endl;

}



Задание№5

Листингпрограммы:

usingnamespace std;

intlong m, n;

int mmm(intlonga, intlongb) {

setlocale(0, "");

m = a; n = b;

while (a != b)

if (a>b)

a = a - b;

else

b = b - a;

cout <<"НОД("<< m <<","<< n <<")="<
return 0;

}
void main() {

cout << mmm(5, 6) << endl;

}



Задание№6

usingnamespace std;

int NOD(inta, intb) {

while (a != b) {

if (a>b) {

a -= b;

}

else {

b -= a;

}

}

returna;

}
int NOK(inta, intb) {

return abs(a * b) / NOD(a, b);

}
int main() {

setlocale(LC_ALL, "Russian");

int a, b;

cout <<"Введите a: ";

cin >> a;

cout <<"Введите b: ";

cin >> b;

cout <<"НОК = "<< NOK(a, b) << endl <<"НОД = "<< NOD(a, b);

return 0;

}



5.Ответы на контрольные вопросы

  1. Прототипом функции в языке Си или C++ называется объявление функции, не содержащее тела функции, но указывающее имя функции, арность, типы аргументов и возвращаемый тип данных. В то время как определение функции описывает, что именно делает функцияпрототип функции может восприниматься как описание её интерфейса.

  2. Для обеспечения значения по умолчанию необходимо присваивать значение параметру с помощью оператора присваивания С++ прямо при объявлении функции

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

  4. Перезагрузкой функции

  5. это особенность в C++, которая позволяет определять несколько функций с одним и тем же именем, но с разными параметрами.

  6. Формальными параметрами называются переменные описанные в заголовке программы и используемые только внутри процедуры (функции).
     Фактическими параметрами называются параметры, которые задаются при вызове процедуры (функции).



6. Вывод по проделанной работе

Освоил методы определения функций, передачи аргументов, использования библиотек функций, основ нисходящей технологии программирования.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Институт Прикладной математики и компьютерных наук

Кафедра Вычислительной техники
Учебная дисциплина

Программирование

Уровень профессионального образования: (высшее образование – бакалавриат)

Направление подготовки: Информатика и вычислительная техника

Профиль подготовки: Электронно-вычислительные машины, комплексы, системы и сети
Лабораторная работа № 05

Производные типы данных – структуры, перечисления и объединения

Выполнила: Драчева Кристина

Проверил Савин Н.И.

Тула 2023

1. Цель работы

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

2. Техническое задание

1. Cпроектировать структуру stack (стек LIFO) для использования в программах. Хранилище данных – статический массив.

2. Cпроектировать структуру stack (стек LIFO)для использования в программах. Хранилище данных – динамический массив.

3. Cпроектировать структуру queue (очередь FIFO) для использования в программах. Хранилище данных – статический массив.

4. Cпроектировать структуру queue (очередь FIFO) для использования в программах. Хранилище данных – динамический массив.

5. Cпроектировать структуру типа бинарное дерево для использования в программах. Хранилище данных – статический массив. Порядок обхода – левое поддерево-правое поддерево- узел.

6. Cпроектировать структуру типа бинарное дерево для использования в программах. Хранилище данных – динамический массив. Порядок обхода – правое поддерево-левое поддерево- узел.

7. Cпроектировать структуру типа бинарное дерево для использования в программах. Хранилище данных – статический массив. Порядок обхода – левое поддерево- узел-правое поддерево.

8. Cпроектировать структуру типа бинарное дерево для использования в программах. Хранилище данных – динамический массив. Порядок обхода – правое поддерево-узел-левое поддерево.