Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Лабораторная работа № 4






 

УКАЗАТЕЛИ, ФУНКЦИИ

 

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

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

 

2. Краткие теоретические сведения

 

Функции в языке СИ оформляются следующим образом:

 

/* прототип функции */

long func(int, int, int*);

 

/ * описание функции * /

long func (a, b, с) // заголовок

int a, b, *с; // описание формальных параметров

{

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. Массив 2. Размерность массива 1. Количество перестановок 2. Длина меньшей строки
  Расположить строки по убыванию длины 1. Массив 2. Размерность массива 1. Количество перестановок 2. Длина большей строки
  Расположить строки в алфавитном порядке 1. Массив 2. Размерность массива 1. Количество перестановок 2. Первая буква первой строки
  Расположить строки в обратном алфавитном порядке 1. Массив 2. Размерность массива 1. Количество перестановок 2. Длина первой строки
  Расположить строки по возрастанию количества слов 1. Массив 2. Размерность массива 1. Количество перестановок 2. Первый символ последней строки
  Расположить строки по убыванию количества слов 1. Массив 2. Размерность массива 1. Количество перестановок 2. Максимальное количество слов
  Расположить строки по возрастанию количества цифр 1. Массив 2. Размерность массива. 1. Количество цифр 2. Вторая цифра строки
  Расположить строки по убыванию количества цифр 1. Массив 2. Размерность массива 1. Количество перестановок 2. Количество цифр
  Расположить строки по возрастанию длины первого слова 1. Массив 2. Размерность массива. 1. Максимальная длина слова 2. Количество перестановок
  Расположить строки по убыванию длины первого слова 1. Массив 2. Размерность массива. 1. Минимальная длина слова 2. Количество слов в первой строке
  Расположить строки в алфавитном порядке по последней букве строки 1. Массив 2. Размерность массива 1. Количество перестановок 2. Последняя буква первой строки
  Расположить строки в обратном алфавитном порядке по последней букве строки 1. Массив 2. Размерность массива 1. Количество перестановок 2. Последняя буква последней строки
  Расположить строки по возрастанию количества пробелов в строке 1. Массив 2. Размерность массива 1. Количество перестановок 2. Максимальное количество пробелов в строке
  Расположить строки по убыванию количества пробелов в строке 1. Массив 2. Размерность массива 1. Количество перестановок 2. Максимальное количество пробелов подряд в строке
  Расположить строки по возрастанию длины последнего слова 1. Массив 2. Размерность массива 1. Количество перестановок 2. Максимальная длина последнего слова
  Расположить строки по убыванию длины последнего слова 1. Массив 2. Размерность массива 1. Количество перестановок 2. Минимальная длина последнего слова
  Расположить строки по возрастанию длины самого длинного слова 1. Массив 2. Размерность массива 1. Количество перестановок 2. Максимальная длина самого длинного слова
  Расположить строки по убыванию длины самого длинного слова 1. Массив 2. Размерность массива 1. Количество перестановок 2. Минимальная длина самого длинного слова
  Расположить строки по возрастанию длины самого короткого слова 1. Массив 2. Размерность массива 1. Количество перестановок 2. Максимальная длина самого короткого слова
  Расположить строки по убыванию длины самого короткого слова 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. Привести пример доступа к элементу двумерного массива через указатель на него.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.