Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mugik
-18 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 3
#1

сделать коментарии и проверьте код к задаче ргр по теории информатики - C++

01.09.2012, 19:21. Просмотров 335. Ответов 0
Метки нет (Все метки)

Задача: Написать алгоритм который сортирует массив следующим образом: если его длина меньше n то использовать метод пузырьковой сортировки а иначе-метод Хоара. Экспериментальным путём определить оптимальное значение n для типов date int и строк 16
ПРошу сделать коменты желательно поподробнее ну проверить правильность кода. Заранее благодарен тем кто поможет!
#include<iostream>
#include <ctime>
using namespace std;
struct date{
int year;
int month;
int day;
};
struct str16{
char str [16];
};
int cmp(int arg1, int arg2){
if(arg1>arg2)
return 1;
else if(arg1<arg2)
return -1;
else
return 0;
}
int cmp(date arg1, date arg2){
if(arg1.year>arg2.year)
return 1;
else if (arg1.year<arg2.year)
return -1;
else
if(arg1.month>arg2.month)
return 1;
else if(arg1.month<arg2.month)
return -1;
else
if(arg1.day>arg2.day)
return 1;
else if(arg1.day<arg2.day)
return -1;
else
return 0;
}
int cmp(str16 arg1, str16 arg2){
for(int i=0; i<16; i++){
if(arg1.str[i]>arg2.str[i])
return 1;
if(arg1.str[i]<arg2.str[i])
return -1;
}
return 0;
}
template <class T>
void bubble(T*a, int n){
for (int i=n-1;i>0;i--){
for (int j=0;j<i;j++){
if(cmp(a[j],a[j+1])==1){
T tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}
template <class T>
void qSort(T *A, int low, int high) {
int i = low;
int j = high;
T x = A[(low+high)/2];
do {
while(cmp(A[i],x)==-1) ++i;
while(cmp(A[j] , x)==1) --j;
if(i <= j){
T temp = A[i];
A[i] = A[j];
A[j] = temp;
i++; j--;
}
} while(i <= j);

if(low < j) qSort(A, low, j);
if(i < high) qSort(A, i, high);
}
void randArr(int *mass, int count){
for(int i=0;i<count;i++){
mass[i]=rand();
}
}
void randArr(str16 *mass, int count){
for(int i =0; i<count; i++)
for(int j=0; j<16; j++)
mass[i].str[j]=rand()%255;
}
void randArr(date *mass, int count){
for(int i=0; i<count;i++){
mass[i].year=rand()%10000;
mass[i].month=rand()%12;
mass[i].day=rand()%31;
}
}
template <class T>
int optimal(){
int result=0;
int iter=400;
for(int i=0; i<iter; i++){
float bTime=0, qTime=0;
int n=2;
for(;qTime>=bTime;n++){
T *mass=new T [n];
randArr(mass,n);
clock_t t0 = clock();
bubble(mass,n);
clock_t t1 = clock();
bTime=(float)t1-t0;
clock_t t2=clock();
qSort(mass,0,n-1);
clock_t t3=clock();
qTime=(float)t3-t2;
}
result+=n;
}
return result/iter;
}
template <class T>
void mySort(T *mass, int count){
int o=optimal<T>();
if(count<o){
bubble<T>(mass,count);
cout<<"Bubble sort :"<<endl;
}
else{
qSort<T>(mass,0, count-1);
cout<<"Quick sort :"<<endl;
}
}
int main(){
cout<<"For int :"<<optimal<int>()<<endl;
cout<<"For date :"<<optimal<date>()<<endl;
cout<<"For str16 :"<<optimal<str16>()<<endl;
int count=55;
int *mass=new int [count];
randArr(mass,count);
cout<<"Test sequence :"<<endl;
for(int i=0;i<count;i++)
cout<<mass[i]<<" ";
cout<<endl;
mySort<int>(mass, count);
for(int i=0;i<count;i++)
cout<<mass[i]<<" ";
cout<<endl;
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2012, 19:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос сделать коментарии и проверьте код к задаче ргр по теории информатики (C++):

Проверьте правильность написания кода и коментарии - C++
Задача: Написать программу которая принимает в качестве аргумента имя файла f с русским текстом и печатает его в точности по одному...

РГР по Теории автоматического управления. - Matlab
Задали в универе РГР-ку по Теории автоматического управления. Возникла трудность: надо составить диф уравнения звена. Начинаю решать, но...

РГР по Теории автоматического управления: определить тип звена. - Электричество и магнетизм
Привет. это какой тип звена? дифференцирующее? а это какой:

РГР тема основы зонной теории твердого тела - Квантовая и атомная физика
Собственный полупроводник - кремний (Si) при температуре Т = 300 K имеет удельное сопротивление p = 300 Om * m. Полагая, что подвижности...

Как сделать коментарии на странице? - HTML, CSS
Здравствуйте, мне нужно сделать на одной страниц своего сайта внизу возможность добавления комментариев посетителями страницы. В php и...

не могу сделать коментарии к материалам - Joomla
у меня стоит joomla версии 1.5.13, сделал шаблон на Artisteer 2, теперь не могу сделать коментарии к материалам :( т.е. ссылка (добавить...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2012, 19:21
Привет! Вот еще темы с ответами:

Сделать коментарии к каждой строке - Java SE
Здравствуйте, очень вас прошу, может кто-нибудь прокоментировать каждую строку в коде,т.е. что она делает и для чего нужна.Программа...

Есть код , написать коментарии к каждой строке. Episode 1 - C++ Builder
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &amp;Key) { if ((Key &gt;='0' &amp;&amp; Key &lt;='9') || Key==VK_BACK) //если ...

Написать код для игры НИМ. проверьте пожалуйста тот ли это код - C++
#include &lt;string&gt; using namespace std; int compChoose(int markers); int userChoose(int markers); int...

Не большой код, нужно написать коментарии хотябы на главные строчки! - C++
string fixErrors(string encfile) { int doh = 0; int sindromeOneOriginal; int sindromeTwoOriginal; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.