Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamenatsionnye_zadachi_po_Informatike_Resheni...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
96.77 Кб
Скачать

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;

}