
- •Оглавление
- •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. Работа со стеком динамическое распределение памяти
21. Вычисление определителя матрицы второго порядка
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
int main()
{
int A [2][2]={{1,2},{3,4}},i,det;
det=A[0][0]*A[1][1]-A[1][0]*A[0][1];
cout<<"Determinater is "<<det;
_getch();
return 0;
}
22. Вычисление определителя матрицы 3 - го порядка
#include "stdafx.h"
#include <iostream>
using namespace std;
#include "conio.h" // библиотека для функции _getch();
#define N 3
int Det(); // объявление функции
int B[N][N]; // назначение глобального массива данных
int main()
{
int A[N][N]={{1,2,3},{4,5,6},{7,8,9}};
int i,j,m,D,k,k1=0,AB,SUM=0;
//Разложение по нулевому столбцу, поиск миноров и алгебраических дополнений
while(k1<=N-1) // шагаем по строкам
{
//поиск миноров
k=0;
for(i=0;i<=N-1;i++)
{
if (i==k1) continue; // пропускаем строку i
m=0;
for(j=1;j<=N-1;j++)
{
B[k][m]=A[i][j]; // строка минора
m++;
}
k++; // переход к следующей строке минора
}
for(i=0;i<=N-2;i++)
{
cout<<"\n";
for(j=0;j<=N-2;j++) cout<<" "<<B[i][j];
}
D=1;
for(i=1;i<=k1;i++) D=D*(-1);
AB=A[k1][0]*D;
AB=AB*Det();
cout<<"\n Det = "<<Det();
SUM=SUM+AB;
cout<<"\n SUM = "<<SUM;
k1++; //номер вычеркиваемой строки
}
cout<<" \n Determinator = "<<SUM;
_getch();
return 0;
}
int Det()
{
int det;
det=B[0][0]*B[1][1]-B[1][0]*B[0][1];
return det;
}
23. Нахождение обратной перестановки и по ней циклической формы
Автор Уваров Е. ГИП-111
#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;
#define SIZE 6
#define S 20 // максимальный размер циклической записи
int main()
{
char m1[SIZE] = {'a','b','c','d','e','f'}; // 1- строка символов
char m2[SIZE] = {'a','d','b','e','c','f'}; // 2- строка символов
char m11[SIZE] = {'a','b','c','d','e','f'};
// m11[] -массив задает порядок перстановки столбцов
int m[SIZE] = {-1,-1,-1,-1,-1,-1}; // инициализация рабочего массива
char m3[S]; // циклическая форма перестановки
char ch,x,y,z;
int i,j=0,k=0,t,ii=-1; // ii- индекс в массиве m3[]
// Построение обратной перестановки
for(i = 0; i < SIZE; i++)
{
ch=m1[i];
m1[i]=m2[i];
m2[i]=ch;
}
cout<<"\n Given m1 :"<<endl;
for(i = 0; i < SIZE; i++) cout<<m2[i]<<" ";
cout<<"\n Given m2 :"<<endl;
for(i = 0; i < SIZE; i++) cout<<m1[i]<<" ";
// перстанока столбцов в первоначальном порядке
for(j = 0; j < SIZE-1; j++) // j - индекс массива MAS_11[]
for(i=0;i<SIZE;i++) // индекс первой строки
{ if(m11[j]==m1[i]) // i-й столбец должен стать j- ым
{
ch=m1[i];
m1[i]=m1[j];
m1[j]=ch;
ch=m2[i];
m2[i]=m2[j];
m2[j]=ch;
}
}
cout<<"\n New m1 with old oder :"<<endl;
for(i = 0; i < SIZE; i++) cout<<m1[i]<<" ";
cout<<"\n New m2 :"<<endl;
for(i = 0; i < SIZE; i++) cout<<m2[i]<<" ";
cout<<endl;
// формированиециклическо формы перестановки
for (i=0;i<SIZE;i++) // i - индекс символа 1-й строки
{
z=m1[i];
x=z;
y=m2[i];
t=0;
for (j=0;j<SIZE;j++)
if (i==m[j]) t=1; // поиск индекса i в m[]
if (t==1) continue; // переход к началу цикла и i++
j=0;
if ((x==y)&&(x!=0)) // единичный цикл
{
ii++;
m3[ii]='(';
ii++;
m3[ii]=x;
ii++;
m3[ii]=')';
}
// пробегаем массивы строк инабираем блок с начальным символом 'y'
while(z!=y) // собираем блок с начальным символом z
{
if (m1[j]==y)
{
m[k]=j; //формируем массив индексов символов блока
k++;
if (z==x)
{
ii++;
m3[ii]='('; // открываем блок цикла
}
ii++;
m3[ii]=x; // записываем символ в блок
x=y; // продолжаем набирать блок
y=m2[j];
j=0;
if (z==y) // нашли конец блока
{
ii++;
m3[ii]=x;
ii++;
m3[ii]=')';
}
}
j++;
if ((z==y)||(j>SIZE)) break;
}
}
cout<<"\n cycle form : \n";
for(i=0;i<=ii;i++) cout<<m3[i]<<" ";
getch();
return 0;
}