Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по лабе 4.docx
Скачиваний:
4
Добавлен:
09.02.2015
Размер:
1 Mб
Скачать

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

Федеральное государственное автономное образовательное

учреждение высшего профессионального образования

«Санкт-Петербургский государственный электротехнический

университет «ЛЭТИ» им. В. И. Ульянова (Ленина)»

(СПбГЭТУ «ЛЭТИ»)

Факультет компьютерных технологий и информатики

Кафедра вычислительной техники

Отчет по лабораторной работе №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.