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

Void main()//точка входа в программу

{

Func1();//вызов функции Func1

}

#include<stdio.h> //подключение библиотеки ввода/вывода

//подключение библиотек для реализации функции заполнения массива

//разупорядоченными значениями вектора

#include<algorithm>

#include<functional>

#include<vector>

#include<iostream>

using namespace std; //определение рабочего пространства

//объявление и определение функции, выполняющей заполнение массива перетасованными значениями

template<typename T>

void quickSortR(T* a, long N)

{

// На входе - массив a[], a[N] - его последний элемент.

long i = 0, j = N; // поставить указатели на исходные места

T temp, p;

p = a[ N>>1 ]; // центральный элемент

// процедура разделения

do {

while ( a[i] < p ) i++;

while ( a[j] > p ) j--;

if (i <= j)

{

temp = a[i];

a[i] = a[j];

a[j] = temp;

i++;

j--;

}

} while ( i<=j );

// рекурсивные вызовы, если есть, что сортировать

if ( j >= 0 ) quickSortR(a, j);

if ( N >= i ) quickSortR(a+i, N-i);

}

void RandomShuffle(int *pA, int r, int x, int n)

{

const int VECTOR_SIZE=r; //число элементов вектора

typedef vector<int> IntVector;

typedef IntVector::iterator IntVectorlt;

IntVector Numbers(VECTOR_SIZE);

IntVectorlt start, end, it;

for(int i=0;i<r;i++) //заполнения вектора значениями

{

Numbers[i]=x;

x=x+n;

}

start=Numbers.begin(); //определение границ вектора

end=Numbers.end();

random_shuffle(start,end); //вызов функции, тасующей значения вектора

//заполнение динамического массива значениями вектора

for(it=start;it!=end;it++)

{

*(pA++)=*it;

}

}

void Func1()

{

Int *pArr;//создание указателя

Int z;//переменная отв за размер

int k;

printf("Vvedite razmer massiva:");

scanf("%i",&z);

cout<<"Kak zapolnyat massiv:"<<endl;

cout<<"1-auto,2-manual"<<endl;

cin>>k;

///////создание линамического двумерного массива//////////

int **ppArr = new int*[z];

for(int i=0;i<z;i++)

{

ppArr[i]=new int[z];

}

if(k==1)

{

pArr=new int[z*z];//создание одномерного динамического массива

Int I,j;//создание переменных

////////////////вызов ф-ции для заполнения массива//////////////////////////////////////////////////////

RandomShuffle(pArr,z*z,1,1);

//////////////////запись из одномерного массива в двухмерный///////////////////////////

int k=0;

for(i=0;i<z;i++)

for(j=0;j<z;j++)

{

ppArr[i][j]=pArr[k];

k++;

}

////////////////вывод массива на экран/////////////////////////////////////////////////////////////////////

for(i=0;i<z;i++)

{

for(j=0;j<z;j++)

cout<<ppArr[i][j]<<'\t'<<flush;

cout<<endl<<endl;

}

}

/////////////////заполнение массива в ручную////////////////////////////////////////

else

{

if(k==2)

{

for(int t=0;t<z;t++)

for(int n=0;n<z;n++)

{

cout<<"Vvedite element Arr["<<t<<"]["<<n<<"]= "<<flush;

cin>>ppArr[t][n];

}

}

}

//////////////////////запись по диагонали///////

//переменные для функции

int *pSize;

int nsize=(z*z-z)/2+z;

pSize=new int [nsize];

int j;

int t=0;

int size=z;

i=size-1;

j=size-1;

k=0;

//цыкл перебора всех елементов массива//

for(t=0;t<size;t++)

{

if(t%2==0)//если диагональ четная

{

while(j!=0)//пока строка не равен нулю

{

pSize[k]=ppArr[i][j];//перезапись массива

i--;//уменьшение столбцов

j--;//уменшение строк

k++;//инкриминтирование переменной

}

pSize[k]=ppArr[i][j];//перезапись массива

i++;//увеличение строки

k++;//инкриминтирование переменной

continue;

}

else

{

while(i!=size-1)//пока не закончатся столбцы

{

pSize[k]=ppArr[i][j];//перезапись массива

i++;//уменьшение столбца

j++;//уменьшение строки

k++;//инкриментирование переменной

}

pSize[k]=ppArr[i][j];//перезапись массива

j--;//уменщение строки

k++;//инкриментирование переменной

continue;

}

}

//вывод массива на экран//

for(int r=0;r<nsize;r++)

{

cout<<pSize[r]<<" "<<flush;

}

cout<<" "<<endl;

/////////////////////линейный поиск/////////////////////////////////////

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]