Вы находитесь на странице: 1из 14

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение


высшего образования
Восточно-Сибирский государственный университет технологий и управления
(ФГБОУ ВСГУТУ)

Электротехнический факультет

Кафедра «Системы Информатики»

Дисциплина
«Основы программирования»
Отчет по лабораторной работе №6
На тему:
Функции
Вариант 2

Выполнил: студент гр. Б660


Землякова Е.А.

Улан-Удэ
2020
1.1 Постановка задач
1.1 Написать функцию, которая вычисляет значение a^b. Числа a и b
могут быть любыми целыми положительными числами
(положительными и отрицательными). Однако результат данной
функции должен быть действительным числом.
1.2Написать функцию, которая возвращает номер максимального по
модулю элемента одномерного массива. Если таких несколько, то
возвращает -1.
1.3Написать функцию, которая принимает строку и слово. Возвращает
число, являющееся количеством раз, сколько слово встретилось в
строке без учета регистра.
2 Анализ задачи и формальная постановка задачи

2.1 Анализ задачи

В первой задаче в функции main должен происходить ввод значений и


передача этих значений в функцию Square(). Где в последствии будут
выполняться арифметические действия

Формальная постановка задачи:


Входные данные:
cin >> a >> b;
Выходные данные:

otvet
2.2 Проектирование.

Алгоритм с ветвлением и функциями.

Начинаем разработку текста программы с заголовка главной функции


main(): int main(void). Далее открывается тело функции и в нее включается
описание переменных. Подключена директива c размером массива

Поскольку описания этих функций хранятся в файле iostream,


включаем этот файл в начало программы: #include <iostream>.

Будет присутствовать одна функция типа Void.


2.3 Реализация

Программа, в функции main(), будет считывать пользовательские


значения «а» - число и «b» - значение, в которое возвести число «а». Функция
Square() будет производить возведение. C помощью параметра float& otvet,
берётся адрес, передаваемого значения из функции main(). Это действие
позволит вернуть значение из функции void();. Также вычисление в функции
будет происходить рекурсией до тех пор, пока параметр b будет не равен 0.
Потом произойдёт выход из функции. Параметр «с» нужен для проверки на
отрицательного число.

Листинг:

#include <iostream>
#include <windows.h>
using namespace std;

void Square(int a, int b,int c, float& otvet)


{
b = abs(b);
if (b)
{
b--;
otvet = otvet * a;
Square(a, b,c, otvet);
}
else if (c < 0)
{
otvet = 1 / otvet;
}
}
int main()
{
int a, b, c;
float otvet = 1;
cin >> a >> b;
c = b;
Square(a, b,c, otvet);
cout << otvet;
}
2.4 Тестирование

1. Два положительных числа

2. Положительное число возводится в отрицательную степень


3 Анализ задачи и формальная постановка задачи

3.1 Анализ задачи

В функции main() будет происходить считывание размера массива и


элементов массива. Далее в функции Max() будет выполнен перебор
значений массива, для поиска максимального значения.

Формальная постановка задачи:


Входные данные:
size; myArray[i]
Выходные данные:

max

3.2 Проектирование.

Циклический алгоритм с ветвлением


Начинаем разработку текста программы с заголовка главной функции
main(): int main(void). Далее открывается тело функции и в нее включается
описание переменных. Подключена директива c размером массива.
Поскольку описания этих функций хранятся в файле iostream,
включаем этот файл в начало программы: #include <iostream>.

3.3 Реализация

Для начала, в функции main(), будут выполнены считывания размера


массива и считывание элементов массива. Далее в функцию Max() будут
переданы параметры: массив и количество элементов. В этой функции, через
цикл For будет выполнен перебор для поиска максимального значения.

Листинг
#include <iostream>
#include <windows.h>
using namespace std;

int Max(int a[], int size)


{
int max = 0;
for (int i = 0; i < size; i++)
{
if (a[i] > max)
{
max = a[i];
}
}
return max;
}

int main()
{
int size, max;
cin >> size;
int *myArray = new int[size];
for (int i = 0; i < size; i++)
{
cin >> myArray[i];
}
max = Max(myArray, size);
cout << max;
}

3.4 Тестирование

4 Анализ задачи и формальная постановка задачи


4.1 Анализ задачи

Программа будет считывать строку и слово в функции main(). C


помощью функции она должна будет перевести строку в маленький регистр
для удобства. Вторая функция уже будет перебирать слова и искать
совпадения

Формальная постановка задачи:


Входные данные:
getline(cin, vvod); cin >> slovo;
Вывод:

cout << chet;

4.2 Проектирование.

Циклический алгоритм с ветвлением и функциями.


Начинаем разработку текста программы с заголовка главной функции
main(): int main(void). Далее открывается тело функции и в нее включается
описание переменных. Подключена директива c размером массива
Поскольку описания этих функций хранятся в файле iostream,
включаем этот файл в начало программы: #include <iostream>.

Также подключим библиотеку #include <string>, чтобы работать со


строками.

4.3 Реализация

Программа считает строку и слово. Далее, через функцию Registr(),


будет происходить перебор букв в строке, с целью изменить большой
регистр на маленький. Функция Find() будет перебирать слова в строке и
сравнивать с веденным словом. Для поиска слов будут использоваться
функции find_first_of(" ") и substr(0, first), в параметрах которой находится 0
и первый пробел. Функция будет работать через рекурсию.

Листинг:

#include <iostream>
#include <windows.h>
#include <string>
using namespace std;

void Find(string vvod, string slovo, int &chet, int k = 0)


{

int first = vvod.find_first_of(" ");


string a = vvod.substr(0, first);
if (a == slovo)
{
chet++;
vvod.erase(0, a.size()+1);
}
else
{
vvod.erase(0, a.size() + 1);
}
if (vvod.size() != 0)
{
Find(vvod, slovo, chet, k);
}

void Registr(string& vvod)


{
for (int i = 0; i < vvod.size(); i++)
{
if (vvod[i] >= 65 && vvod[i] <= 90)
{
vvod[i] = vvod[i] + 32;
}
else if (vvod[i] >= -64 && vvod[i] <= -33)
{
vvod[i] = vvod[i] + 32;
}
}
}

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int chet = 0;
string vvod, slovo;
getline(cin, vvod);
cin >> slovo;
Registr(vvod);
Find(vvod, slovo, chet);
cout << chet;
}

4.4 Тестирование

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

Оценить