- •14.Цикл с выходом из середины. Привести блок схемы и примеры реализации.
- •15.Итерационные алгоритмы. Привести примеры реализации итерационных алгоритмов в задачах вычисления суммы бесконечного ряда с заданной точностью.
- •Разновидность функций:
- •Формальные и фактические параметры функции.
- •1 Способ
- •2 Способ
- •Функция ввода символов
- •Функция strcmp(str1, str2).
- •Функция stricmp.
- •Функция strncmp.
- •Функция strnicmp. Сравнивает первые num символов без учета регистра.
Формальные и фактические параметры функции.
Формальные параметры – это параметры, которые принимают значение, переменные функции от функционального вызова. Формальные параметры объявляются в списке параметров в начале описания функции. Список параметров определяет имена параметров и порядок, в котором они принимают значение при вызове функции. Формальные параметры – входные и выходные. Входные – те, которые должны быть известны для вычисления в функции. Выходные – результат.
Список параметров состоит из нуля или более идентификаторов, разделенных запятой. Список должен быть ограничен круглыми скобками даже в случае, когда он пуст.
Аргументы, задаваемые при вызове функции, называются фактическими параметрами. Список фактических параметров, как правило, должен в точности соответствовать списку формальных параметров, хотя в С++ возможны исключения.
Примеры объявления функций 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];
Многомерный массив подобно одномерному массиву может быть проинициализирован с помощью списка инициализаторов.