Long х; // описание локальных переменных
Тело функции
*с=3; // возврат результата по ссылке
Return x; // возврат результата через имя функции
}
/* вызов функции */
Main()
{
Long r; int i, j, k; // описание локальных переменных
. . .
r = func (i, j, &k); // вызов
}
Указатель в СИ – переменная, содержащая адрес другой переменной. Указатели должны быть описаны в виде:
int *ip; // указатель на int
float *fp; // указатель на float
При работе с указателями используются унарные операции
* - обращение по адресу;
& - получение адреса;
Таким образом, можно записать
int x, *ip; // описания переменных
ip=&x; // присвоение адреса
*ip=3; // обращение по адресу
Если указателю присвоен адрес элемента массива, его можно использовать так же, как и имя массива. Следующие обращения к третьему элементу массива s полностью эквивалентны:
int s[10], *p;
p=s;
s[3]=0; // вариант 1
p[3]=0; // вариант 2
*(p+3)=0; // вариант 3
Операции инкремента (++) и декремента (--) изменяют указатель так, что он будет указывать на соседний элемент данных такого же типа. Например, если fp – указатель на float, операция fp++ увеличит fp на 4, т. е. на количество байт, занимаемых элементом типа float.
3. Методические указания.
|
|
В ходе выполнения лабораторной работы потребуется выполнить сортировку массива строк. Для ускорения этой операции обычно используется дополнительный массив указателей. В этом случае вместо перестановки двух строк с помощью функции strcpy() используется перестановка указателей обычным присваиванием.
Формирование массива указателей можно совместить с вводом строк.
4. Порядок выполнения работы
4.1. Написать программу сортировки массива строк по вариантам (табл. 4.2.). Ввод данных, сортировку и вывод результатов оформить в виде функций. Входные и выходные параметры функции сортировки указаны в таблице. Входные и выходные параметры функций для ввода-вывода приведены в таблице 4.1.
4.2. Модифицировать программу п.1., применив в функциях передачу параметров и возврат результатов по ссылке (с использованием указателей). Сравнить результаты.
Таблица 4.1
Прототип функции для ввода строк |
length = inp_str(char* string, int maxlen); // length - длина строки // string - введенная строка // maxlen - максимально возможная длина строки (размерность массива string) |
Прототип функции для вывода строк |
void out_str(char* string, int length, int number); // string - выводимая строка // length - длина строки // number - номер строки |
|
|
Таблица 4.2
Вари ант | Задание | Входные параметры | Выходные Параметры |
1 | Расположить строки по возрастанию длины | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Длина меньшей строки |
2 | Расположить строки по убыванию длины | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Длина большей строки |
3 | Расположить строки в алфавитном порядке | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Первая буква первой строки |
4 | Расположить строки в обратном алфавитном порядке | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Длина первой строки |
5 | Расположить строки по возрастанию количества слов | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Первый символ последней строки |
6 | Расположить строки по убыванию количества слов | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Максимальное количество слов |
7 | Расположить строки по возрастанию количества цифр | 1. Массив 2. Размерность массива. | 1. Количество цифр 2. Вторая цифра строки |
8 | Расположить строки по убыванию количества цифр | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Количество цифр |
9 | Расположить строки по возрастанию длины первого слова | 1. Массив 2. Размерность массива. | 1. Максимальная длина слова 2. Количество перестановок |
10 | Расположить строки по убыванию длины первого слова | 1. Массив 2. Размерность массива. | 1. Минимальная длина слова 2. Количество слов в первой строке |
11 | Расположить строки в алфавитном порядке по последней букве строки | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Последняя буква первой строки |
12 | Расположить строки в обратном алфавитном порядке по последней букве строки | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Последняя буква последней строки |
13 | Расположить строки по возрастанию количества пробелов в строке | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Максимальное количество пробелов в строке |
14 | Расположить строки по убыванию количества пробелов в строке | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Максимальное количество пробелов подряд в строке |
15 | Расположить строки по возрастанию длины последнего слова | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Максимальная длина последнего слова |
16 | Расположить строки по убыванию длины последнего слова | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Минимальная длина последнего слова |
17 | Расположить строки по возрастанию длины самого длинного слова | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Максимальная длина самого длинного слова |
18 | Расположить строки по убыванию длины самого длинного слова | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Минимальная длина самого длинного слова |
19 | Расположить строки по возрастанию длины самого короткого слова | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Максимальная длина самого короткого слова |
20 | Расположить строки по убыванию длины самого короткого слова | 1. Массив 2. Размерность массива | 1. Количество перестановок 2. Минимальная длина самого короткого слова |
|
|
|
|
5. Содержание отчета
5.1. Задание.
5.2. Листинги программ.
5.3. Тестовый пример.
6. Контрольные вопросы
6.1. Правила описания указателей.
6.2. Как связаны указатели и массивы?
6.3. Назначение прототипа функции.
6.4. Структура описания функции.
6.5. Какие операции допустимы с адресами?
6.6. Массивы указателей – описание и использование.
6.7. Привести пример описания двумерного массива.
6.8. Привести пример доступа к элементу двумерного массива через указатель на него.
Лабораторная работа № 5
СТРУКТУРЫ В ЯЗЫКЕ СИ
1. Цель работы
Ознакомиться с понятием структур. Научиться использовать структуру для организации простейших баз данных.
2. Краткие теоретические сведения
Структура в языке СИ объединяет логически связанные данные разных типов. Состав структуры определяется описанием шаблона:
Дата добавления: 2018-04-15; просмотров: 302; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!