
- •Оглавление
- •1. Вычисление нод алгоритмом Евклида
- •2. Нахождение нод и нок
- •3. Вычисление факториала
- •4. Вычисление факториала рекурсивно
- •5. Вычисление биноминального коэффициента
- •7. Разложение целого числа на сумму биноминальных коэффициентов
- •8. Сумма некоторых элементов массива
- •9. Модификация массива данных. Вариант 1.
- •10. Модификация массива данных. Вариант 2.
- •11. Работа с числами массива
- •12. Поиск совпадений чисел в массиве
- •13. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 1.
- •14. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 2.
- •15. Подсчет количества цифр в целом числе
- •16. Проверка целого числа на симметрию цифр. Вариант 1.
- •17. Проверка целого числа n на симметрию цифр Вариант 2.
- •19. Программа проверки глубины вложения скобок
- •20. Формирование двумерного массива
- •21. Вычисление определителя матрицы второго порядка
- •22. Вычисление определителя матрицы 3 - го порядка
- •23. Нахождение обратной перестановки и по ней циклической формы
- •24. Сортировка_1 простыми вставками
- •25. Сортировка_2 простыми вставками
- •26. Сортировка алгоритмом Шелла
- •27. Быстрая сортировка Хоора
- •28. Поразрядная сортировка
- •29. Cортировка 1 методом пузырька
- •30. Cортировка 2 методом пузырька
- •31. Работа с библиотечными карточками
- •32. Работа 1 с конструктором и деструктором
- •33. Работа 2 с конструктором и деструктором
- •34. Работа с комплексными числами
- •35. Работа_1 с комплексными числами через указатели
- •36. Работа_2 с комплексными числами через указатели
- •37. Построение циклической очереди статическое распределение памяти
- •38. Построение стека символов статическое распределение памяти
- •39. Код работы с циклической очередью, переделанный из кода стека
- •40. Код работы со стеком, переделанный из кода циклической очереди
- •41. Генерирование случ. Чисел с показательным распределением
- •42. Работа со стеком динамическое распределение памяти
39. Код работы с циклической очередью, переделанный из кода стека
#include "stdafx.h"
#include <ctype.h>
#include <iostream>
using namespace std;
#include <conio.h>
#define SIZE 2
class q_type
{
char queue[SIZE]; // очередь в виде массива
int head,tail; // голова и хвост
public:
q_type(); // конструктор
~q_type(); // диструктор
void push(char ch); // втолкнуть в стек
char pop(); // вытолкнуть из стека
};
q_type::q_type()
{
head=tail=-1;
}
q_type::~q_type()
{
}
void q_type::push(char ch)
{
if(head==tail) { head=tail=-1;} // зацикливание очереди
tail++; // 0,1,2
if(tail==SIZE)
{
cout<<"\n queue is overflow\n";
tail--;
return;
}
queue[tail]=ch; //a,b
}
char q_type::pop()
{
if(head==tail)
{
cout<<"queue is underflow\n";
return 0;
}
head++;
return queue[head];
}
int main()
{
q_type s1,s2;
int i;
s1.push('a');
s1.push('b');
s1.push('c');
s2.push('x');
s2.push('y');
s2.push('z');
for(i=0;i<2;i++) cout <<"Item from s_1: "<<s1.pop()<<"\n";
for(i=0;i<2;i++) cout <<"Item from s_2 : "<<s2.pop()<<"\n";
// запись после выталкивания всех элементов,т.е. работает зацикливание очереди
s1.push('i');
s1.push('j');
s2.push('k');
s2.push('n');
for(i=0;i<2;i++) cout <<"Item from s_1: "<<s1.pop()<<"\n";
for(i=0;i<2;i++) cout <<"Item from s_2 : "<<s2.pop()<<"\n";
_getch();
return 0;
}
40. Код работы со стеком, переделанный из кода циклической очереди
#include "stdafx.h"
#include <ctype.h>
#include <iostream>
using namespace std;
#include <conio.h>
#define SIZE 5 // всего 5 ячеек, начиная с 0
class stack
{
int stck[SIZE];
int tos;
public:
void init();
void put(int num); // вставка элемента
int push(); // выталкивание элемента
};
void stack::init()
{
tos=0;
}
void stack::put(int num) // блок вставки в очередь
{
if(tos==SIZE)
{
cout<<"\n stack is overflow\n";
return;
}
stck[tos]=num; // 0,1,2,3,4
tos++;
/* 1,2,3,4,5 - вершина стека имеет индекс на 1 больше, чем индекс последнего элемента */
}
int stack::push() // блок выталкивания из очереди
{
if(tos==0)
{
cout<<"\n Queue is underflow\n";
return 0;
}
tos--;
return stck[tos]; // извлечение элемента
}
void main()
{
stack s;
int i;
s.init();
for(i=0;i<SIZE;i++) s.put(i); // 0,1,2,3,4
s.put(5); // для проверки
for(i=0;i<SIZE;i++) cout <<"\n Item from stack is "<<s.push()<<"\n for(i=0;i<SIZE;i++) s.put(i);
for(i=0;i<SIZE;i++) cout <<"\n Item from stack is "<<s.push()<<"\n";
_getch();
}
41. Генерирование случ. Чисел с показательным распределением
/*
Программа генирирования последовательности случайных чисел
линейным конгруэнтным методом и с показательным распределением
*/
#include "stdafx.h"
#include <math.h>
#include <iostream>
using namespace std;
#include <conio.h>
#define TOTAL 20 // размер генерируемой последовательности
#define PERIOD 1000 // период повторения чисел
#define MULTIPLIER 7 // множитель
#define INCREMENT 7 // приращение
#define mean_time_request 5
// среднее время заявки при показательном распределении
int main()
{
int a[TOTAL];
// массив сгенерированных целых случайных чисел линейным конгруэнтным методом
float b[TOTAL];
//массив сгенерированных дробных случайных чисел линейным конгруэнтным методом
float aa[TOTAL];
// массив сгенерированных целых псевдослучайных чисел по показательному закону
char ch;
// признак выбора метода генерации чисел
a[0]=1; // начало последовательности ХХ[]
b[0]=1/PERIOD; // начало последовательности UU[]
cout<<"Do you like to use the linear congruous method? [y/n] \n";
cin>>ch;
if((ch=='y')||(ch=='Y'))
{
// линейный конгруэнтный метод
for(int i=1;i<=TOTAL-1;i++)
{
a[i]=(MULTIPLIER*a[i-1]+INCREMENT)%PERIOD;
b[i]=(float) a[i]/PERIOD;
}
cout<<"New array of the random integer numbers is ";
cout<<"\n";
for(int i=0;i<=TOTAL-1;i++) cout<<" "<<a[i];
cout<<" \n New array of the random fractional numbers is ";
cout<<"\n";
for(int i=0;i<=TOTAL-1;i++) cout<<" "<<b[i];
}
cout<<"\n Do you like to use the exponential distribution method? [y/n] \n";
cin>>ch;
if((ch=='y')||(ch=='Y'))
{
//метод показательного распределения
for(int i=1;i<=TOTAL-1;i++)
{
a[i]=(MULTIPLIER*a[i-1]+INCREMENT)%PERIOD; // целое число
b[i]=(float) a[i]/PERIOD; // дробное число
//формула показательного распределения
aa[i]=(float)-mean_time_request*log(b[i]);
}
cout<<" \n New random integer array is obtained by the exponential distribution method \n ";
for(int i=1;i<=TOTAL-1;i++) cout<<" "<<aa[i];
_getch();
return 0;
}
else cout<<"\n Method is not choosen!";
_getch();
return 0;
}