Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Передача одномерных массивов в функцию. Написать схематично программу с функцией, использующей одномерный числовой массив с десятичной точкой в качестве исходного данного.↑ ⇐ ПредыдущаяСтр 8 из 8 Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Для передачи необходимо: 1) указатель на тип массива для передачи адреса (тип *p) 2) величина целого типа для передачи размерности (int n)
void func(const double *p, double *p1, int n) { int i; for(i=0;i<n;i++) *(p1+i)=*(p+i)*2; for(i=0;i<n;i++) cout<<p1[i]<<' '; return; }
int main(void) { const int SIZE=10; double mas1[SIZE]={1.2,2.3,3.7,4.1,5.9,6.1,7.7,8.4,9.6,10.3}; double mas2[SIZE]; func(mas1,mas2,SIZE); return 0; }
Если исходное данное – одномерный числовой массив типа double с const, говоря о том, что массив не изменим. Цикл перебора. Элементы массива можем анализировать и использовать при вычислениях в правой части. Изменять не можем.
+ Выделение памяти под массив-результат функции пользователя в функции main(). Написать схематично программу с функцией пользователя, в которой на основе исходного одномерного числового массива формируется массив-результат.
void func(int *p, int *p1, int n) { int i, j; for(i=0,j=0;i<n;i++) *(p1+i)=*(p+i)*2; for(j=0;j<n;j++) cout<<p1[j]<<' '; return; }
int main(void) { const int SIZE=10; int mas1[SIZE]={1,2,3,4,5,6,7,8,9,10}; int mas2[SIZE]; func(mas1,mas2,SIZE); return 0; } + 37.Передача многомерных массивов в функцию (на примере двумерных). Написать схематично программу с функцией, использующей целый двумерный числовой массив в качестве исходного данного. Любая матрица определяется адресом 1-го элемента, количеством строк и столбцов. Для передачи матрицы в функцию, необходимо объявить эти 3 параметра: 1) int *p; // для передачи адреса 2) int *n; // количество строк 3) int *m; // количество столбцов
void InMas(const int *p,int *pr, int n, int m) { int i,j; for(i=0;i<n;i++) for(j=0;j<m;j++) pr[i*m+j]=p[i*m+j]*2; for(i=0;i<n;i++) { for(j=0;j<m;j++) cout<<setw(4)<<pr[i*m+j]<<' '; cout<<endl; } return; }
int main(void) { const int STR=3, STLB=4; int mas[STR][STLB]={1,2,3,4,5,6,7,8,9,10,11,12}; int masr[STR][STLB]; InMas(mas[0],masr[0],STR,STLB);
return 0; }
+ Использование const при объявлении параметров функции. func(const int a, …)
Интерфейс функции(заголовок) должен содержать максимальный объем информации о том, что будет происходить с параметрами (или с данными через параметры). Что будет происходить с данными внутри функции через параметр.
Слово const перед типом параметра означает, что объект внутри функции не будет изменён. Примеры: (const int &a, …) a – это ссылка на аргумент, без слова const мы можем аргумент внутри функции менять или не менять, но! если стоит слово const, то это явное указание, что аргумент внутри функции изменяться не будет.
int *p, int n – одномерный массив const int *p – элементы массива изменяться не будут + 39.Рекурсивные функции языка С++ и их применение при программировании. Рекурсивная функция Если функция вызывает саму себя, то возникает рекурсия. Рекурсия – мощный инструмент разработки программ, когда большие объемы действий могут быть записаны кратко. Рекурсию можно рассматривать как еще одну управляющую структуру – управление из точки рекурсивного вызова передается на начало функции. Ключевым фактором обеспечения рекурсии является использование стека. Стек – особое устройство оперативной памяти по принципу: последним пришел – первым вышел.
При выполнении программы в стек сохраняются параметры функции, внутренние локальные переменные и адреса возврата при завершении функции. При рекурсии функция, не завершив своего выполнения, вызывается снова и снова. Стек постоянно пополняется, не освобождаясь, и может переполниться. Этого допустить нельзя. Поэтому при написании рекурсивной функции мы должны стремиться к минимизации количества параметров, количества локальных переменных, количества рекурсивных вызовов или к их оптимальному соотношению.
Числа Фибоначчи
, n>2
a=0, b=1, c=a+b, a=b, b=c
int Fib(int n) { if(n==0) return 0; else if(n==1) return 1; else return Fib(n-2)+Fib(n-1); }
int main(void) { int n; cin>>n; cout<<Fib(n)<<endl; return 0; } Задача: вычислить факториал числа N N!=N*(N-1)
int rek(int n) рабочая { if (n==1||n==0) return n; else return rek(n-1)*n;
} int main(void) { int N=5; cout<<rek(N)<<endl; return 0; } + Передача функции в другую функцию через указатель.
|
||||
Последнее изменение этой страницы: 2016-06-06; просмотров: 476; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.205.114 (0.009 с.) |