Способ: перебор всей матрицы по столбцам




ЗНАЕТЕ ЛИ ВЫ?

Способ: перебор всей матрицы по столбцам



for(j=0;j<STLB;j++)

{

for(i=0;i<STR;i++)

{

алгоритм обработки

}

// конец j-го столбца

}

 

Задача: дана статическая матрица, заполнить её с клавиатуры, вывести на экран как матрицу (manip)

вычислить сумму в каждой строке отдельно и во всей матрице в целом +

 

#include <iomanip>

#define STR 3

#define STLB 4

int main(void)

{

int A[STR][STLB];

int i, j, sum, sumSTR;

for(i=0;i<STR;i++) // ввод матрицы

{

for(j=0;j<STLB;j++)

cin>>A[i][j];

}

for(i=0;i<STR;i++)

{

for(j=0;j<STLB;j++)

cout<<setw(5)<<A[i][j];

cout<<endl;

}

sum=0;

sumSTR=0;

for(i=0;i<STR;i++)

{

sumSTR=0;

for(j=0;j<STLB;j++)

sumSTR+=A[i][j];

cout<<endl<<sumSTR;

sum+=sumSTR;

}

cout<<endl<<sum<<endl;

return 0;

}

+

26.Динамическое выделение памяти под данные в программах на С++ (переменная любого типа, строка, одномерный и двумерный числовые массивы). Освобождение памяти.

Переменная любого типа:

Тип *p=new Тип;

delete p;

 

Строка:

const int SIZE=80;

char *p=new char[SIZE];

delete []p;

 

Одномерный числовой массив:

int *p=new int[SIZE];

delete []p;

 

Двумерный числовой массив:

int STR, STLB;

cin>>STR>>STLB;

int *p=new int[STR*STLB];

delete []p;

 

+

29.Взаимосвязь массивов и указателей в языке С++: определение адреса и значения по адресу для любого элемента одномерного и двумерного массива, объявленные статически или динамически.

Одномерный числовой массив:

статически:

адрес: mas+i

значение: *(mas+i) или mas[i]

 

динамически:

адрес: p+i

значение: *(p+i) или p[i]

 

Двумерный числовой массив:

статически:

адрес: A[i]+j

значение: *(A[i]+j) или A[i][j]

 

динамически:

адрес: p+i*STLB+j

значение: *(p+i*STLB+j) или p[i*STLB+j]

 

 

+++

Программирование с использованием функций пользователя. Принципы построения функций.

29.Объявление (прототип) функции и оператор вызова функции языка С++. Параметры и аргументы функции.

30.Определение функций языка С++. Результат функций.

Функции языка С++

Любая нетривиальная задача требует разбиения ее на несколько логически завершенных частей, каждая из которых реализуется определенной функцией. Выполнение программы начинается с функции main, а она вызывает другие функции.

Наличие функций избавляет от повторного программирования. Программа, написанная с помощью функций, имеет более четкую структуру. Небольшую функцию легче написать, отладить и модифицировать.

Функция – это самостоятельная независимая единица программы, спроектированная для решения одной подзадачи. Функция - алгоритм,указывающий, как из набора исходных данных получить результат.

Каждая функция может находиться в отдельном файле или несколько функций в одном файле, в любом порядке, но при этом каждая функция пишется от начала до конца.

Каждая функция состоит из заголовка и тела.

Заголовок функции – это директивы препроцессора и имя функции. (//Если все функции помещены в одном файле, директивы препроцессора пишутся в самом начале файла один раз.) Имя функции состоит из типа функции, названия функции и в круглых скобках параметры вместе с их типом, разделенные запятой.

Тип функции определяется типом результата функции, передаваемого через оператор return.Если функция не передает результат, тип функции void. Если тип функции не указан, то по умолчанию она типа int.

Параметры функции – это переменные для исходных данных функции. Если параметров нет – пишем void.

Тело функции пишется аналогично телу main. После {скобки объявляется внутренняя переменная под результат функции или для построения алгоритма функции. Затем следуют операторы, реализующие алгоритм. При этом параметры используем как известные величины(исходные данные). Оператор return обычно завершает функцию. Хотя он может быть написан в любом месте функции.

Return; //при этом тип функции void.

Returnres;//при этом тип функции как у переменной res

returna*b;//при этом тип выражения совпадает с типом функции

return 1; //если результат выражен константой

Сама по себе функция не выполняется, необходимо, чтобы в теле другой функции, обычно main, появился оператор вызова этой функции. При вызове функции используются аргументы функции (//в том же порядке и количестве, что и параметры), ими могут быть константы, переменные(заранее объявленные и определенные) или выражения.

//Аргументы функции – это конкретные значения исходных данных, передаваемых параметрам в процессе выполнения функции. Функции, кроме типа void, могут вызываться внутри выражения.

Компилятор контролирует правильность написания каждого оператора, в том числе и оператора вызова функции: он сравнивает вызов с прототипом – вызов должен соответствовать прототипу.

Прототип – перечень характеристик функции и фактически повторяет имя функции и завершается ; .

Прототип функции помещается перед именем вызывающей функции, (//содержит тип функции, название функции и в круглых скобках список типов параметров. Завершается ; ).

Чаще прототип помещают в правильно оформленный заголовочный файл, а заголовочный файл подключают #include

//Если тип аргумента в операторе вызова функции не соответствует прототипу, он автоматически (если это возможно) приводятся к нужному типу и функция вызывается правильно; в противном случае возникает ошибка компиляции.

 

Механизм вывода функции

При выполнении оператора вызова функции, управление передается на заголовок этой функции, создаются параметры функции, которые тут же инициализируются аргументами.

Затем выполняется тело функции, где параметры уже действительно имеют свое значение.

При выполнении оператора return управление передается назад – в место вызова. Передаваемый результат подставится вместо вызова и присвоится указанной переменной.

Выводы

 

Для написания собственной функции необходимо:

· определить функцию(написать заголовок и тело)

· объявить функцию(написать прототип)

· в нужном месте программы организовать вызов функции.

 

Основные принципы построения функции:

1)Каждая функция решает одну подзадачу.

2)Исходные данные всегда передаются через параметры. (за незначительным исключением)

3)Результат всегда передается из функции с помощью оператора return или другими средствами.


+





Последнее изменение этой страницы: 2016-06-06; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.239.236.140 (0.006 с.)