Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование ответы.docx
Скачиваний:
58
Добавлен:
30.01.2018
Размер:
407.05 Кб
Скачать

Формальные и фактические параметры функции.

Формальные параметры – это параметры, которые принимают значение, переменные функции от функционального вызова. Формальные параметры объявляются в списке параметров в начале описания функции. Список параметров определяет имена параметров и порядок, в котором они принимают значение при вызове функции. Формальные параметры – входные и выходные. Входные – те, которые должны быть известны для вычисления в функции. Выходные – результат.

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

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

Примеры объявления функций maximum:

Intmaximum(intx;inty;intz– фактические параметр) { формальные параметры }

19.Рекурсия. Привести пример рекурсивной функции в С/C++.

Рекурсивная функция – это функция которая может вызвать саму себя.

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

Пример 2. Вычислить сумму чисел в интервале, заданном вводимыми числами. Использовать рекурсивную функцию.

#include <iostream>

using namespace std;

int sum(int y, int x);

int main()

{

int a, b;

cout << "Enter 1-st number: " << endl;

cin >> a;

cout << "Enter 2-st number: " << endl;

cin >> b;

cout << sum(b, a) << endl;

system ("pause");

return 0;

}

int sum(int y, int x)

{

int s = 0;

if ((y - 1) == x)

s = y + x;

else

s = y + sum(y - 1, x);

return s;

}

20.Передача параметров в функцию по ссылке. Привести примеры определения и вызова таких функций в С/C++.

#include <iostream>

using namespace std;

void foo1(int value) { value = value + 1; } //У параметра обычный тип

void foo2(int& value){ value = value + 1; } //У параметра ссылочный тип

void foo3(int* value){ *value = *value + 1; } //У параметра указательный тип

int main()

{

int x = 100;

foo1(x);

cout << "foo1, x == " << x << '\n'; //100 //x не изменился (обычный тип параметра, нет влияния)

foo2(x);

cout << "foo2, x == " << x << '\n'; //101 //x изменился (ссылочный тип параметра повлиял)

foo3(&x);

cout << "foo3, x == " << x << '\n'; //102 //x изменился (указательный тип параметра повлиял)

foo1(x);

cout << "foo1, x == " << x << '\n'; //102 //x не изменился (обычный тип параметра, нет влияния)

foo1(x);

cout << "foo1, x == " << x << '\n'; //102 //x не изменился (обычный тип параметра, нет влияния)

cin.get();

}

void swap (int &a, int &b)

Амперсанды перед именем переменной означают, что эта переменная является не локальной переменной, а ссылкой на переменную, указанную в качестве параметра при вызове функции. Теперь при вызове swap (p,q) переменные a и b являются синонимами для переменных p и q, и изменение их значений влечет изменение значений p и q.

21.Одномерные массивы: объявление, инициализация, обработка, использование массивов в С/C++.

Массивы – это набор переменных, имеющих один и тот же тип и одно и тоже имя.

Объявление:(тип имя[кол-во. Элементов]) int month [12] или double mas [32]

Инициализация: int mas [5] = {1, 2, 3, 4, 5} или с клавиатуры. for (int i=0; i<12; ++i)

cin>>mas[i]

Обработка:Получение суммы элементов массива.

Поиск максимума, минимума и др. задаваемых значений.

Сортировка массива.

Выполнение однотипных действий над всеми элементами массива.

Использование:Массивы используются для обработки большого количества однотипных данных.

#include <iostream>

using namespace std;

int main()

{

int vera[100];

cout<<"Vedite massiv";

for(int i=0;i<=99;i++)

{vera[i]=rand()%10;}

cout<<"Vera :";

for(int i=0;i<=99;i++)

{cout<<vera[i];}

system("pause");

return 0;

}

22.Одномерные массивы: последовательный поиск элементов в массивах и его организация на языке С/C++.

Одномерный массив — массив, с одним параметром, характеризующим количество элементов одномерного массива. Фактически одномерный массив — это массив, у которого может быть только одна строка, и n-е количество столбцов. Столбцы в одномерном массиве — \это элементы массива.

Индекс ячейки – это целое неотрицательное число, по которому можно обращаться к каждой ячейке массива и выполнять какие-либо действия над ней (ячейкой).

Всегда сразу после имени массива идут квадратные скобочки, в которых задаётся размер одномерного массива, этим массив и отличается от всех остальных переменных.

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

// массивы могут быть инициализированы при объявлении:

int a[16] = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 }; // инициализация одномерного массива

В данном случае компилятор сам определит размер одномерного массива. Размер массива можно не указывать только при его инициализации, при обычном объявлении массива обязательно нужно указывать размер массива.

Int a[]={5,-12,-12,9,10,0,-9,-12,-1,23,65,64,11,43,39,-15};//инициализации массива без определения его размера.

23.Что такое вложенные циклы? Проанализировать работу программы, содержащей вложенные циклы.

Вложенные циклы – это когда в теле одного цикла (внешнего) размещается другой цикл (внутренний). Таких вложенных циклов во внешнем цикле может быть несколько. Пример:

#include <iostream>

using namespace std;

 

int main()

{

for (int i = 0; i < 5; i++) // этот цикл отвечает за кол-во строк

{

for (int j = 0; j < 15; j++) // этот - за кол-во символов в каждой строке

{

cout << '@';  

}

cout << endl; // переход на строку ниже

}

return 0;

}

24.Алгоритм пузырьковой сортировки и его реализация на языке С/C++.

Назван так, потому что большее или меньшее значение “всплывает” (сдвигается) к краю массива после каждой итерации, это будет видно в примере. Алгоритм работает очень просто. Программа проходит по всем элементами массива по порядку. Каждый текущий элемент сравнивается с соседним и, если он меньше/больше(если сортируем по убыванию/возрастанию соответственно) меняется местами с соседним. Программа на убывание:

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL,"RUS");

int mass[4];

for(int i = 0; i < 4; ++i)

{

cout << i+1 << "-ый элемент: ";

cin >> mass[i];

}

for(int i = 1; i < 4; ++i)

{

for(int r = 0; r < 4-i; r++)

{

if(mass[r] < mass[r+1])

{

// Обмен местами

+ int temp = mass[r];

mass[r] = mass[r+1];

mass[r+1] = temp;

}

}

}

cout << "Отсортированный массив: ";

for(int i = 0; i < 4; ++i)

{

cout << mass[i] << " ";

}

cout << endl;

system("pause");

return 0;

}

25.Алгоритмы перестановок элементов массива и их реализация на языке С/C++.

Сортировка вставками (Insertion Sort) — это простой алгоритм сортировки. Суть его заключается в том что, на каждом шаге алгоритма мы берем один из элементов массива, находим позицию для вставки и вставляем. Программа (Перестановка элементов массива в обратном порядке):

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL,"RUS");

int days[]={10,2,3,4,50,6,7,8},i,tmp;

int n=sizeof(days)/sizeof(int);

for(i=0;i<(n/2);++i)

{

tmp=days[i];

days[i]= days[n-i-1];

days[n-i-1]=tmp;}

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

cout<< days[i];

system("pause");

return 0;

}

26.Двумерные массивы: объявление, инициализация, использование. Привести пример реализации какого-либо алгоритма обработки и преобразования матриц на языке С/C++.

Двумерный массив — это обычная таблица, со строками и столбцами. Фактически двумерный массив — это одномерный массив одномерных массивов.

(a[m][n]) где, m — количество строк двумерного массива;

n — количество столбцов двумерного массива;

m * n — количество элементов массива.

В объявлении  двумерного массива, также как и в объявлении одномерного массива, первым делом, нужно указать:

  • тип данных;

  • имя массива.

1

2

// пример объявление двумерного массива:

int a[5][3];

1

2

// инициализация двумерного массива:

int a[5][3] = { {4, 7, 8}, {9, 66, -1}, {5, -5, 0}, {3, -3, 30}, {1, 1, 1} };

В данном массиве 5 строк, 3 столбца. после знака присвоить ставятся общие фигурные скобочки, внутри которых ставится столько пар фигурных скобочек, сколько должно быть строк в двумерном массиве, причём эти скобочки разделяются запятыми. В каждой паре фигурных скобочек записывать через запятую элементы двумерного массива. Во всех фигурных скобочках количество элементов должно совпадать.

Пример программы «Найти сумму элементов матрицы, лежащих выше главной диагонали»:

#include <iostream>

using namespace std;

int main()

{float b,a[20][20],s;

int i,j,n,m;

cout<<"n=";

cin>>n;

cout<<"m=";

cin>>m;

cout<<"\n Vvedite A \n"; //ввод матрицы

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

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

{ a[i][j]=rand()%10; }

cout<<"\n Matrica A \n"; //вывод матрицы

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

{for (j=0;j<m;j++)

cout<< a[i][j]<<" ";

cout<<"\n";}

for (s=0,i=0;i<n;i++)//нажождение суммы

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

if(i<j)

{s+=a[i][j];}

cout<<"\n S="<<s;

system("pause");

return 0;}

27.Понятие о многомерных массивах. Привести пример инициализации элементов многомерных массивов на языке С/C++.

В языке Си могут быть также объявлены многомерные массивы. Отличие многомерного массива от одномерного состоит в том, что в одномерном массиве положение элемента определяется одним индексом, а в многомерном — несколькими. Примером многомерного массива является матрица.

Общая форма объявления многомерного массива

тип имя[размерность1][размерность2]...[размерностьm];

Многомерный массив подобно одномерному массиву может быть проинициализирован с помощью списка инициализаторов.