Алгоритм решения задачи

 
 

 
 

 
 



Алгоритм функции для ввода массива void vvod(float *a, int N)

 
 


Алгоритм функции для вывода массива void vivod(float *a, int N)

 
 



Алгоритм функции для сортировки массива и вычисления количества перестановок при сортировке int KOL(float *a, int N)

 
 



Листинг программы

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#include <conio.h> //библиотека подключения функции getch()

#include <iostream.h> //библиотека для cin и cout

#include <malloc.h> //библиотека для динамического выделения памяти

#include <fstream.h> //библиотека для ввода/вывода в файл

#include <windows.h> //библиотека используется в функции RUS

#include <math.h> //библиотека математических функций

#include <ctype.h> // библиотека проверки принадлежности символов

#include <stdlib.h> // библиотека некоторых стандартных функций

#include <string.h> // библиотека функций работы со строками

//

char bufRus[256];

//---------------------------------------------------------------------------

char* RUS(const char*text) //функция поддержки русского языка

{

CharToOem(text,bufRus);

return bufRus;

}

//---------------------------------------------------------------------------

//****************************************************

void vvod(float *a, int N); // объявление функции для ввода массива

void vivod(float *a, int N); // объявление функции для вывода массива

int KOL(float *a, int N); // объявление функции для сортировки массива и вычисления

//количества перестановок при сортировке

//****************************************************

#pragma argsused

int main(int argc, char* argv[])

{

cout<<RUS("***Курсовая работа, задание 4*** \n");

int N, M, mA, mB;

cout<<RUS("\n Введите количество элементов в массиве А: ");

cin>>N;

cout<<RUS("\n Введите количество элементов в массиве В: ");

cin>>M;

float *A= new float[N]; //Динамическое выделение памяти под массив А

float *B= new float[M]; //Динамическое выделение памяти под массив В

float *Acop= new float[N]; //Динамическое выделение памяти под копию массива А

float *Bcop= new float[M]; //Динамическое выделение памяти под копию массива В

if(!A||!B||!Acop||!Bcop) //Проверка факта выделения памяти

{

cout<<RUS("\nНедостаточно памяти");

goto W;

}

cout<<RUS("\nВедите массив A\n");

vvod(A,N); //ввод массива А

cout<<RUS("\nВедите массив B\n");

vvod(B,M); //ввод массива В

for(int i=0;i<N;i++) //копирование массива А

Acop[i]=A[i];

for(int i=0;i<M;i++) //копирование массива В

Bcop[i]=B[i];

mA=KOL(Acop, N); //вызов функции для вычисления количества перестановок при

//сортировке для массива А

mB=KOL(Bcop, M); //вызов функции для вычисления количества перестановок при

//сортировке для массива В

if(mA==mB)

{

cout<<RUS("\nКоличество перестановок в массиве А равно ");

cout<<RUS("количеству перестановок в массиве В \n");

cout<<RUS("\nИсходный массив А\n");

vivod(A,N);

cout<<RUS("\nМассив А упорядоченный по возрастанию:\n");

vivod(Acop,N);

cout<<RUS("\nКоличество перестановок в массиве А: ")<<mA;

cout<<RUS("\nИсходный массив В\n");

vivod(B,M);

cout<<RUS("\nМассив В упорядоченный по возрастанию:\n");

vivod(Bcop,M);

cout<<RUS("\nКоличество перестановок в массиве В: ")<<mB;

}

else

if(mA>mB)

{

cout<<RUS("\nКоличество перестановок в массиве А больше ");

cout<<RUS("количества перестановок в массиве В \n");

cout<<RUS("\nИсходный массив А\n");

vivod(A,N);

cout<<RUS("\nМассив А упорядоченный по возрастанию:\n");

vivod(Acop,N);

cout<<RUS("\nКоличество перестановок в массиве А: ")<<mA;

cout<<RUS("\nИсходный массив В\n");

vivod(B,M);

cout<<RUS("\nМассив В упорядоченный по возрастанию:\n");

vivod(Bcop,M);

cout<<RUS("\nКоличество перестановок в массиве В: ")<<mB;

}

else

{

cout<<RUS("\nКоличество перестановок в массиве В больше ");

cout<<RUS("количества перестановок в массиве А \n");

cout<<RUS("\nИсходный массив А\n");

vivod(A,N);

cout<<RUS("\nМассив А упорядоченный по возрастанию:\n");

vivod(Acop,N);

cout<<RUS("\nКоличество перестановок в массиве А: ")<<mA;

cout<<RUS("\nИсходный массив В\n");

vivod(B,M);

cout<<RUS("\nМассив В упорядоченный по возрастанию:\n");

vivod(Bcop,M);

cout<<RUS("\nКоличество перестановок в массиве В: ")<<mB;

}

delete [] A; // освобождение памяти от массивов и их копий

delete [] Acop;

delete [] B;

delete [] Bcop;

W:

cout<<RUS("\nНажмите любую клавишу для завершения программы...\n");

getch();

return 0;

}

//---------------------------------------------------------------------------

void vvod(float *a, int N) // определение функции для ввода массива

{

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

cin>>a[i];

}

void vivod(float *a, int N) // определение функции для вывода массива

{

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

cout<<' '<<a[i];

}

int KOL(float *a, int N)); // определение функции для сортировки массива и вычисления

{ //количества перестановок при сортировке

int k=0;

float t;

for(int i=N-1;i>0;i--)

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

if(a[j]>a[j+1])

{

t=a[j]; //

a[j]=a[j+1]; //

a[j+1]=t;

k++; //

}

return k;

}

//---------------------------------------------------------------------------



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: