
Void main()
{
srand(time(0)); //чтобы рандомить ноые числа
int l,v;
double k;
cout <<"Vvedite chislo"<<endl;
cin>>l;
int *mas1=new int[l]; //создание динамического массива
for (int i=0;i<l;i++) //рандомный массив (1) делаем
{
mas1[i]=rand()%200-100;
cout<<mas1[i]<<" "; //выводим его
}
cout<<endl;
Massiv <int> intmas(mas1,l); //создаем класс intmas в котором забиты целые числа
double *mas2=new double[l];
for (int i=0;i<l;i++) //рандомный массив (2) делаем
{
mas2[i]=(rand()%200-100)*1.33;
cout<<mas2[i]<<" "; //выводим его
}
cout<<endl;
Massiv <double> dobmas(mas2,l); //создаем класс dobmas в котором вещественные числа
intmas.print(); //вывести на экран
dobmas.print();
cout<<"Vvedite dobavku int i dob:"<<endl; //вводим числа которые хотим добавить (целое и вещественное)
cin>>v>>k;
intmas.add(v); //реализация добавления
dobmas.add(k);
intmas.print(); //вывод
dobmas.print();
cout<<"Kol-vo int:"<<intmas.GetN(); //Получает количество элементов в массиве
cout<<"Kol-vo dob:"<<dobmas.GetN();
}
Задача 11:
#include <iostream>
using namespace std;
template <class T> class Queue
{
//Класс узла очереди
class Node
{
public:
T value; // Содержимое узла
Node *next; // Ссылка на следующий лемент
Node *prev; // Сссылка на предыдущий элемент
// Конструктор узла по умолчанию
Node(T d = 0)
{
value = d;
next = 0;
prev = 0;
}
};
Node *startPoint, *endPoint;
public:
//Конструктор
Queue()
{
startPoint = 0;
endPoint = 0;
}
//Деструктор - пробегаемся по всей очереди попутно удаляя текущий элемент и переходя на следующий
~Queue()
{
if (startPoint != 0)
{
Node *point = startPoint;
while (point)
{
point = point->next;
delete startPoint;
startPoint = point;
}
}
}
// Добавление в очередь
void Add(T d)
{
Node *point = new Node(d);
if (startPoint == 0)
startPoint = endPoint = point;
else
{
point->prev = endPoint;
endPoint->next = point;
endPoint = point;
}
}
T myextract()
{
if (endPoint==0)
{
cout<<"empty"<<endl;
return 0;
}
else
{
Node *point = startPoint;
T d = point->value;
if (startPoint == endPoint)
{
startPoint = endPoint = 0;
}
else
{
startPoint = point->next;
startPoint->prev = 0;
}
delete point;
return d;
}
}
friend ostream& operator <<(ostream& out, Queue& queue)
{
Node *point = queue.startPoint;
while(point)
{
out<< point->value <<" ";
point = point->next;
}
return out;
}
};
Void main()
{
Queue<int> list;
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(5);
list.Add(6);
cout<<list<<endl;
cout<<list.myextract()<<endl;
cout<<list<<endl;
cout<<list.myextract()<<endl;
int N;
cin>>N;
}
Задача 12:
#include <iostream>
#include <stdlib.h>
using namespace std;
void QuickSort (int *mas, int nach, int kon)
{
int i=nach, j=kon, sred=mas[(nach+kon)/2];
do
{
while (mas[i]<sred)i++;
while(mas[j]>sred)j--; // ищет середину
if (i<= j) //следит чтобы элементы не прошли дальше середины
{
int b;
b=mas[i];
mas[i]=mas[j];
mas[j]=b;
i++;
j--;
}
}
while(i<=j); //этот цикл закночится когда i<=j, в итоге образовываются два подмассива по правую и по левую сторону от середины
if(nach<j)QuickSort(mas, nach, j);
if(i<kon) QuickSort(mas, i, kon);
} //а потом if сравнивают элементы в маленьньких подмассивах, разбивая их все мень и меньше на эоементы и сравнивая их
void print(int *mas, int n)
{
for(int i=0; i<n; i++)
cout<<mas[i]<<" ";
cout<<endl;
}