Министерство науки и образования РФ
Федеральное государственное автономное образовательное
учреждение высшего профессионального образования
«Санкт-Петербургский государственный электротехнический
университет «ЛЭТИ» им. В. И. Ульянова (Ленина)»
(СПбГЭТУ «ЛЭТИ»)
Факультет компьютерных технологий и информатики
Кафедра вычислительной техники
Отчет по лабораторной работе №4
на тему:
“Функции и указатели в языке С/C++”
по дисциплине “Программирование”
Выполнил: Кановский И. В.
Группа 4306
Принял: к.т.н., доцент Сискович Т.И.
Санкт-Петербург 2014 г.
Цель
Получить практические навыки работы с функциями и указателями на языке «С/C++».
Задание
Разработать алгоритм и написать программу, где необходимо создать новую матрицу из строк исходной, в которых есть хотя бы 2 одинаковых элемента . Программа должна содержать меню с выбором действий и выполнятся многократно, по желанию пользователя.
Уточнение задания
Вначале программа должна предложить задать размер матрицы (A1). Под матрицу должна выделяться динамическая память. Необходимо вывести меню. Если пользователь выберет несуществующий пункт меню, ему будет выведено сообщение об ошибке.
Пункты меню:
1:Ввод размеров матрицы
2: Ввод матрицы.
3: Вывод введенной матрицы.
4: Обработка исходной матрицы
5: Вывод новой матрицы.
6: Выход.
Контрольные примеры
Контрольные примеры представлены в Таблице 1.
Таблица 1. Контрольные примеры
№ примера |
Исходные данные |
Результат | ||
ksk |
ksv |
A1 | ||
1 |
0 |
- |
- |
Количество строк - целое положительное число от 1 до 50. Введите число заново. |
2 |
5 |
0 |
- |
Количество столбцов - целое положительное число от 1 до 50. Введите число заново. |
3 |
2 |
2 |
2 4 9 12 |
Строк, где есть хоть 2 одинаковых элемента, не обнаружено. |
4 |
2 |
3 |
5 15 55 8 8 9 |
8 8 9 |
5 |
3 |
3 |
-103 5 6 105 -50 105 67 78 67 |
105 -50 105 67 78 67 |
Описание главной функции Описание переменных главной функции
Описание переменных представлено в Таблице 2.
Таблица 2. Описание переменных главной функции
Имя переменной |
Тип |
Назначение |
A1 |
int** |
Указатель на адрес первого элемента входной матрицы |
ksk |
int |
Количество строк входной матрицы |
ksv |
int |
Количество столбцов матрицы |
A2 |
int** |
Указатель на адрес первого элемента выходной матрицы |
x |
int |
Количество столбцов выходной матрицы |
Vd |
int |
Переменная проверки наличия введенных размеров матрицы |
Vd2 |
|
Переменная проверки наличия введенной матрицы |
obr |
int |
Переменная проверки обработки матрицы |
с |
int |
Переменная выбора меню |
Краткое описание алгоритма
Начало программы.
Шаг №1. Вывод меню.
Шаг №2. Выбор пользователем пункта меню.
Шаг №3. Переход к пункту, выбранным пользователем.
Пункт 1: Ввод матрицы. Переход к шагу 2.
Пункт 2: Вывод введенной матрицы. Переход к шагу 2.
Пункт 3: Формирование новой матрицы из строк исходной, в которой есть хотя бы 2 одинаковых элемента. Переход к шагу 2.
Пункт 4: Вывод обработанной матрицы. Переход к шагу 2.
Пункт 5: Выход. Переход к шагу 4.
Шаг №4. Конец программы.
Блок-схема главной функции
Блок-схема главной функции представлена на рисунке 1
Рис. 1. Блок-схема главной функции
Описание функций
Описание функции print
Назначение: Функция используется для вывода матрицы.
Прототип: void print(int**, int , int );, гдеint** - указатель на первый элемент первой строки матрицы, первый int – кол-во строк матрицы, второй int – кол-во столбцов матрицы.
Пример вызова: print(z,x,ksv);, где z– указатель на адрес первого элемента первой строки матрицы,x– кол-во строк матрицы,ksv- кол-во столбцов матрицы.
Вызывающая функция: main.
Описание переменных функции print
Описание переменных функции print представлены в Таблице 3.
Таблица 3. Описание переменных функции print
Имя переменной |
Тип |
Назначение |
Локальные переменные | ||
i,j |
int |
Счётчики |
Формальные переменные | ||
y |
int** |
Указатель на первый элемент первой строки матрицы |
n |
int |
кол-во строк матрицы |
m |
int |
кол-во столбцов матрицы |
Блок-схема функции print
Блок-схема функции print представлена на рисунке 2
Рис. 2. Блок-схема функции print
Описание функции skolko
Назначение: Функция используется для ввода размеров матрицы.
Прототип: int skolko(int );, гдеint – максимально допустимая величина.
Пример вызова: ksk=skolko(n);;, где n– максимально допустимая величина.
Вызывающая функция: main.
Описание переменных функции skolko
Описание переменных функции skolko представлены в Таблице 4.
Таблица 4. Описание переменных функции skolko
Имя переменной |
Тип |
Назначение |
Локальные переменные | ||
a |
int |
Считывающая переменная |
Формальные переменные | ||
n |
int |
Максимально допустимая величина |
Блок-схема функции skolko
Блок-схема функции skolko представлена на рисунке 3
Описание функции scan
Назначение: Функция используется для ввода матрицы.
Прототип: int** scan(int**, int , int );, где int** - указатель на первый элемент первой строки матрицы, первый int – кол-во строк матрицы, второй int – кол-во столбцов матрицы.
Пример вызова: y=scan(y,ksk,ksv);, где y - указатель на первый элемент первой строки матрицы, ksk – кол-во строк матрицы, ksv – кол-во столбцов матрицы.
Вызывающая функция: main.
Описание переменных функции scan
Описание переменных функции scan представлены в Таблице 5.
Таблица 5. Описание переменных функции scan
Имя переменной |
Тип |
Назначение |
Локальные переменные | ||
i,j |
int |
Счётчики |
Формальные переменные | ||
t |
int** |
Указатель на первый элемент первой строки матрицы |
n |
int |
кол-во строк матрицы |
m |
int |
кол-во столбцов матрицы |
Блок-схема функции scan
Блок-схема функции scan представлена на рисунке 4
Рис. 4. Блок-схема функции scan
Описание функции obrabotka
Назначение: Функция используется для обработки матрицы.
Прототип: int** obrabotka(int**, int**, int , int , int*);, где первый int** - указатель на первый элемент первой строки входной матрицы, второй int** - указатель на первый элемент первой строки выходной матрицы, первый int – кол-во строк входной матрицы, второй int – кол-во столбцов любой матрицы, int* - указатель на кол-во строк выходной матрицы.
Пример вызова: obrabotka(y,z,ksk,ksv,&x);, где y - указатель на первый элемент первой строки входной матрицы, z - указатель на первый элемент первой строки выходной матрицы, ksk – кол-во строк входной матрицы, ksv – кол-во столбцов любой матрицы, &x - указатель на кол-во строк выходной матрицы.
Вызывающая функция: main.