КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Циклы перебора матрицыПусть есть матрица A, STR=3 и STLB=4 a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23
1 способ: перебор конкретной строки с номером N N--; // номер превратился в индекс строки for (j=0; j<STLB; j++) { алгоритм обработки }
2 способ: перебор всей матрицы построчно for (i=0; i<STR;i++) { for(j=0;j<STLB;j++) { алгоритм обработки } //конец i-ой строки }
3 способ: перебор конкретного столбца с номером M
M--; // номер превратился в индекс столбца for (i=0;i<STR;i++) { алгоритм обработки }
4 способ: перебор всей матрицы по столбцам 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<<sum<<endl; return 0; }
26. Динамическое выделение памяти под данные в программах на С++ (переменная любого типа, строка, одномерный и двумерный числовые массивы). Освобождение памяти. 27. Взаимосвязь массивов и указателей в языке С++: определение адреса и значения по адресу для любого элемента одномерного и двумерного массива, объявленные статически или динамически. +++ 28. Программирование с использованием функций пользователя. Принципы построения функций. 29. Объявление (прототип) функции и оператор вызова функции языка С++. Параметры и аргументы функции. 30. Определение функций языка С++. Результат функций. Функции языка С++ Любая нетривиальная задача требует разбиения ее на несколько логически завершенных частей, каждая из которых реализуется определенной функцией. Выполнение программы начинается с функции main, а она вызывает другие функции. Наличие функций избавляет от повторного программирования. Программа, написанная с помощью функций, имеет более четкую структуру. Небольшую функцию легче написать, отладить и модифицировать. Функция – это самостоятельная независимая единица программы, спроектированная для решения одной подзадачи. Функция - алгоритм,указывающий, как из набора исходных данных получить результат. Каждая функция может находиться в отдельном файле или несколько функций в одном файле, в любом порядке, но при этом каждая функция пишется от начала до конца. Каждая функция состоит из заголовка и тела. Заголовок функции – это директивы препроцессора и имя функции. (//Если все функции помещены в одном файле, директивы препроцессора пишутся в самом начале файла один раз.) Имя функции состоит из типа функции, названия функции и в круглых скобках параметры вместе с их типом, разделенные запятой. Тип функции определяется типом результата функции, передаваемого через оператор return.Если функция не передает результат, тип функции void. Если тип функции не указан, то по умолчанию она типа int. Параметры функции – это переменные для исходных данных функции. Если параметров нет – пишем void. Тело функции пишется аналогично телу main. После {скобки объявляется внутренняя переменная под результат функции или для построения алгоритма функции. Затем следуют операторы, реализующие алгоритм. При этом параметры используем как известные величины(исходные данные). Оператор return обычно завершает функцию. Хотя он может быть написан в любом месте функции. Return; //при этом тип функции void. Returnres;//при этом тип функции как у переменной res returna*b;//при этом тип выражения совпадает с типом функции return 1; //если результат выражен константой Сама по себе функция не выполняется, необходимо, чтобы в теле другой функции, обычно main, появился оператор вызова этой функции. При вызове функции используются аргументы функции (//в том же порядке и количестве, что и параметры), ими могут быть константы, переменные(заранее объявленные и определенные) или выражения. //Аргументы функции – это конкретные значения исходных данных, передаваемых параметрам в процессе выполнения функции. Функции, кроме типа void, могут вызываться внутри выражения. Компилятор контролирует правильность написания каждого оператора, в том числе и оператора вызова функции: он сравнивает вызов с прототипом – вызов должен соответствовать прототипу. Прототип – перечень характеристик функции и фактически повторяет имя функции и завершается ; . Прототип функции помещается перед именем вызывающей функции, (//содержит тип функции, название функции и в круглых скобках список типов параметров. Завершается ; ). Чаще прототип помещают в правильно оформленный заголовочный файл, а заголовочный файл подключают #include //Если тип аргумента в операторе вызова функции не соответствует прототипу, он автоматически (если это возможно) приводятся к нужному типу и функция вызывается правильно; в противном случае возникает ошибка компиляции.
|