Вопрос 24 Алгоритмы обработки двумерных массивов. Поиск в выделенных областях. Поиск в выделенных областях.
Часто возникает необходимость осуществить обработку в некоторой части матриц: только на главной диагонали, выше главной диагонали, ниже главной диагонали. Для обработки используются кратные циклы.
1)выше главной диагонали, не включая ее элементы:
i:=1 ton-1
j:=I+1 ton
2)выше главной диагонали, включая ее элементы:
i:=1 ton
j:=Iton
3)ниже главной диагонали, не включая ее элементы:
j:=1 ton-1
i:=j+1 ton
4)ниже главной диагонали, включая ее элементы:
j:=1 ton
i:=jton
Вопрос 28 Функции в С++. Описание, вызов, передача результата. Формальные и фактические параметры, правила соответствия, примеры. Функции
Важный плюс применения функций – возможность с их помощью разбить сложную задачу на ряд сравнительно простых этапов.
Для того, чтобы в С++ использовать функцию, нужно ее:
1) Описать (или определить).
2) Объявить.
3) Вызвать.
Описание функции
Функция описывается заголовком и телом.
Заголовок содержит:
• класс памяти;
• имя функции;
• тип возвращаемого результата;
• имена и типы формальных параметров, заключенные в ( ) и разделенные запятыми. Объявление и определение функций
Функция — это именованная последовательность описаний и операторов, выполняющая какое-либо законченное действие. Функция может принимать параметры и возвращать значение.
Любая программа на C++ состоит из функций, одна из которых должна иметь имя main (с нее начинается выполнение программы). Функция начинает выполняться в момент вызова. Любая функция должна быть объявлена и определена. Как и для других величин, объявлений может быть несколько, а определение только одно. Объявление функции должно находиться в тексте раньше ее вызова для того, чтобы компилятор мог осуществить проверку правильности вызова. Объявление функции (прототип, заголовок, сигнатура) задает ее имя, тип возвращаемого значения и список передаваемых параметров. Правила соответствия
Тип возвращаемого функцией значения может быть любым, кроме массива и функции (но может быть указателем на массив или функцию). Если функция не должна возвращать значение, указывается тип void.
Список параметров определяет величины, которые требуется передать в функцию при ее вызове. Элементы списка параметров разделяются запятыми. Для каждого параметра, передаваемого в функцию, указывается его тип и имя (в объявлении имена можно опускать).
В определении, в объявлении и при вызове одной и той же функции типы и порядок
следования параметров должны совпадать
| Функцию можно определить как встроенную с помощью модификатора inline, который рекомендует компилятору вместо обращения к функции помещать ее код непосредственно в каждую точку вызова. Модификатор inline ставится перед типом функции. Он применяется для коротких функций, чтобы снизить накладные расходы на вызов (сохранение и восстановление регистров, передача управления).
Если тип возвращаемого функцией значения не void, она может входить в состав выражений или, в частном случае, располагаться в правой части оператора присваивания. Пример функции, возвращающей сумму двух целых величин:
#include
int sum (int a. int b); // объявление функции
int main(){
int a = 2, b - 3, c. d;
с = sum(a. b): // вызов функции
cin » d:
cout « sum(c. d); // вызов функции
return 0:
}
int sumdnt а. int b){ // определение функции
return (а + b):
} Bce величины, описанные внутри функции, а также ее параметры, являются локальными. Областью их действия является функция. При вызове функции, как и при входе в любой блок, в стеке выделяется память под локальные автоматические переменные. Кроме того, в стеке сохраняется содержимое регистров процессора на момент, предшествующий вызову функции, и адрес возврата из функции для того, чтобы при выходе из нее можно было продолжить выполнение вызывающей функции. Параметры функции
Механизм параметров является основным способом обмена информацией между вызываемой и вызывающей функциями. Параметры, перечисленные в заголовке описания функции, называются формальными параметрами, или просто параметрами, а записанные в операторе вызова функции — фактическими параметрами, или аргументами.
Существует два способа передачи параметров в функцию: по значению и по адресу. При передаче по значению в стек заносятся копии значений аргументов, и операторы функции работают с этими копиями.
При передаче по адресу в стек заносятся копии адресов аргументов, а функция осуществляет доступ к ячейкам памяти по этим адресам и может изменить исходные значения аргументов:
#1nclude
void f(int i. int* j . int& k);
Если требуется запретить изменение параметра внутри функции, используется
модификатор const:
1nt f(const char*);
char* t(char* a. const int* b);
По умолчанию параметры любого типа, кроме массива и функции (например, ве
щественного, структурного, перечисление, объединение, указатель), передаются
в функцию по значению. Примеры описания функции
Пример :
/* Функция poisk — предназначена для поиска максимального элемента и его номера, значение максимума возвращается в качестве результата через заголовок, а номер максимального элемента n_max возвращается через список параметров. Здесьn_maxобъявленкакуказатель */
intpoisk(int* a, int n, int* n_max)
// входной параметр a - массив объявлен как указатель
// входной параметр n - число элементов в массиве
//
|