Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

04.04.2010, 20:06
|
|
Познающий
Регистрация: 20.01.2008
Сообщений: 65
Провел на форуме: 664107
Репутация:
25
|
|
Сообщение от Lewis Carroll
А можно ли как то реализовать такую фичу, чтобы на основании затраченного времени строилась гистограмма для каждой сортировки?
например создать функцию вывода звездочек
void chart(difftime)
которая в цикле до difftime будет печатать "*"
|
|
|

05.04.2010, 04:10
|
|
Познающий
Регистрация: 28.02.2010
Сообщений: 35
Провел на форуме: 41688
Репутация:
0
|
|
#include <iostream.h>
#include <conio.h>
#include <dos.h>
#define MAX 20
void bubble(int *x,int n);
void shell(int *x,int n);
void insert(int *x,int n);
void main()
{ int num[MAX],i;
int t1,t2;
cout << "Before sort:\n";
for(i=0; i<MAX; i++)
{ num[i]=random(MAX);
cout << num[i] << " ";
}
cout << endl;
t1=GetTickCount();
bubble(num,MAX);
shell(num,MAX);
insert(num,MAX);
t2=GetTickCount();
cout << t2-t1;
cout << "After sort:" << endl;
for(i=0; i<MAX; i++)
cout << num[i] << " ";
cout << endl;
cout << "end";
getch();
}
void bubble(int *x, int n)
{ register int i,j;
int tmp;
for(i=1;i<n;i++)
for(j=n-1;j>=i; j--)
if(x[j-1]>x[j])
{ tmp=x[j-1]; x[j-1]=x[j]; x[j]=tmp; }
}
void insert(int *x, int n)
{ register int i,j;
int tmp;
for(i=1;i<n;i++)
{ tmp=x[i];
for(j=i-1;j>=0 && tmp<x[j]; j--)
x[j+1]=x[j];
x[j+1]=tmp;
}
}
void shell(int *x, int n)
{ register int i,j,gap,k;
int xx;
char a[5]={9,5,3,2,1};
for(k=0;k<5;k++)
{ gap=a[k];
for(i=gap;i<n;i++)
{ xx=x[i];
for(j=i-gap; xx<x[j] && j>=0; j=j-gap)
x[j+gap]=x[j];
x[j+gap]=xx;
}
}
}
переписал программу сортировки в следующем виде...
вылетают непонятные ошибки.. может кто нибудь разъяснить?
|
|
|

05.04.2010, 11:44
|
|
Новичок
Регистрация: 29.03.2010
Сообщений: 6
Провел на форуме: 61723
Репутация:
0
|
|
Сообщение от Lewis Carroll
#include <iostream.h>
#include <conio.h>
#include <dos.h>
#define MAX 20
void bubble(int *x,int n);
void shell(int *x,int n);
void insert(int *x,int n);
void main()
{ int num[MAX],i;
int t1,t2;
cout << "Before sort:\n";
for(i=0; i<MAX; i++)
{ num[i]=random(MAX);
cout << num[i] << " ";
}
cout << endl;
t1=GetTickCount();
bubble(num,MAX);
shell(num,MAX);
insert(num,MAX);
t2=GetTickCount();
cout << t2-t1;
cout << "After sort:" << endl;
for(i=0; i<MAX; i++)
cout << num[i] << " ";
cout << endl;
cout << "end";
getch();
}
void bubble(int *x, int n)
{ register int i,j;
int tmp;
for(i=1;i<n;i++)
for(j=n-1;j>=i; j--)
if(x[j-1]>x[j])
{ tmp=x[j-1]; x[j-1]=x[j]; x[j]=tmp; }
}
void insert(int *x, int n)
{ register int i,j;
int tmp;
for(i=1;i<n;i++)
{ tmp=x[i];
for(j=i-1;j>=0 && tmp<x[j]; j--)
x[j+1]=x[j];
x[j+1]=tmp;
}
}
void shell(int *x, int n)
{ register int i,j,gap,k;
int xx;
char a[5]={9,5,3,2,1};
for(k=0;k<5;k++)
{ gap=a[k];
for(i=gap;i<n;i++)
{ xx=x[i];
for(j=i-gap; xx<x[j] && j>=0; j=j-gap)
x[j+gap]=x[j];
x[j+gap]=xx;
}
}
}
переписал программу сортировки в следующем виде...
вылетают непонятные ошибки.. может кто нибудь разъяснить?
Если ты используешь Visual Studio то для твоей программы следующие хедеры:
#include <windows.h> // для работы GetTickCount(); (Windows API function)
#include <conio.h>
#include <iostream>
использовать пространство имен
using namespace std;
я не помню что нужно подключить чтобы заработал random()  почему бы не использовать rand() и srand() ? 
|
|
|

05.04.2010, 17:47
|
|
Познающий
Регистрация: 28.02.2010
Сообщений: 35
Провел на форуме: 41688
Репутация:
0
|
|
пишу на борланде..) windows.h не хочет подключаться %)
может как то по-другому можно посчитать время выполнения алгоритма?
|
|
|

05.04.2010, 18:25
|
|
Новичок
Регистрация: 29.03.2010
Сообщений: 6
Провел на форуме: 61723
Репутация:
0
|
|
функция difftime не подойдет?
Код:
#include <time.h>
#include <stdio.h>
int main(void)
{
time_t start, end;
volatile long unsigned t;
start = time(NULL);
for(t = 0; t < 5000000; t++);
end = time(NULL);
printf("Цикл использовал %f секунд. \n", difftime(end, start));
return 0;
}
|
|
|

05.04.2010, 18:32
|
|
Участник форума
Регистрация: 20.12.2008
Сообщений: 130
Провел на форуме: 436500
Репутация:
11
|
|
Сообщение от Lewis Carroll
windows.h не хочет подключаться %)
это как понять?? 0_о
что происходит то вообще?
|
|
|

05.04.2010, 20:48
|
|
Познающий
Регистрация: 28.02.2010
Сообщений: 35
Провел на форуме: 41688
Репутация:
0
|
|
о спасибо, попробую эту конструкцию )
|
|
|

07.04.2010, 19:43
|
|
Новичок
Регистрация: 03.01.2010
Сообщений: 10
Провел на форуме: 121459
Репутация:
0
|
|
Всем салют  У меня домашка. 3 задачи сделал (потенциально  ), а одно нет.
Нужно на C.
Задачу проще было пртскринуть
Спасибо за внимание!
Последний раз редактировалось Voz7Var; 07.04.2010 в 20:16..
|
|
|

07.04.2010, 22:40
|
|
Новичок
Регистрация: 29.10.2008
Сообщений: 5
Провел на форуме: 36637
Репутация:
0
|
|
Привет всем...можете написать следующие программы на АСМ...Я незнаю алгоритма построения программ...
1)Составить ассемблер-программу кодирования и раскодирования произвольной текстовой строки по произвольной кодирующей таблице. Вывести на экран исходную, колированную и раскодированную строки.
2)Сбросить биты 1, 4, 5, 10, 12, 15 заданного слова ОП.
3)Через сдвиг быстро умножить заданное слово ОП на 30.
4)Копировать из заданного массива слов в другой массив только отрицательные числа.
5)Создайте произвольное собственное прерывание и занесите его в любое место таблицы векторов прерывания.
|
|
|

07.04.2010, 23:58
|
|
Новичок
Регистрация: 21.02.2010
Сообщений: 4
Провел на форуме: 7039
Репутация:
0
|
|
Помогите сделать пожалуйста - очень срочно! Заранее благодарен!
Создать *.exe программу, которая размещает в памяти данных компьютера, операнды, которые заданы вариантом.
Входные операнды А, В, С, D, E, F с индексом u считать без знаковыми и длиной в байтах, согласно с индексу, с индексом fs считать с подвижной запятой одинарной точности (32 биты), с индексом fd считать с подвижной запятой двойной точности (64 биты), с индексом fe считать с подвижной запятой расширенной точности (80 бит); операнды А, В, С разместить в сегменте DATA с произвольным выравниванием сегмента, D, E, F разместить в сегменте DATA1 с выравниванием сегмента BYTE, WORD, DWORD, PARA, PAGE (см. [5]). Кроме этого операнд А является массивом из 3-ох элементов.При объявленные назначить операндам начальные значения, используя все возможны системы счета. К – константа, длина которой определяется значением(согласно варианта), а значение задано в шестнадцатиричном формате. Для ее описания следует использовать директиву EQU. Задать одну метку в произвольном месте сегмента данных. В одном из сегментов на выбор расположить переменную Message db 'Sorokroy',13,10,'$', где 'Sorokroy' – фамилия преподавателя, которую вывести на экран.
http://clip2net.com/clip/m0/12706704....png?nocache=1
Последний раз редактировалось seowayder; 08.04.2010 в 00:02..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|