![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 05.05.2008
Сообщений: 1
|
![]()
Здравствуйте!У меня такая проблема с курсовой.Писал на визуал студио 2005.В консоли написал.А вот с окнами проблема.Помогите пожалуйста.Надо всего лиши окно вывода и 1 кнопку.
Вот код программы: vector<int> a; vector<int> v; vector <int> mass; const int size = 10; template <class T> void main1(vector <T> a, vector <T> &v) { for (int i = 0; i < size; i++) { v.push_back(a[i]); cout << a[i] << " "; } cout << endl; quicksort(a, 0, size-1,v); for (int i = 0; i < size; i++) cout << v[i] << " "; cout << endl; } template <class T> void quicksort(vector <T> a, int left, int right, vector <T> &v) { int i = left, j = right, middle = v[(left+right)/2]; // T temp; while (i < j) { while (v[i]< middle) i++; while (v[j] > middle) j--; if (i <= j) { swap(v[i], v[j]); i++; j--; } } if (left < j) quicksort(v, left, j,v); if (right > i) quicksort(v, i, right,v); } template <class T> void main2(vector<T> a, vector<T> &v) { for (int i = 0; i < size; i++) { v.push_back(a[i]); cout << a[i] << " "; } cout << endl; heap_sort(a, size,v); for (int i = 0; i < size; i++) cout << v[i] << " "; cout << endl; } template <class T> void down_heap(vector<T> a, long k, long n, vector<T> &v) { T new_elem; long child; new_elem = v[k]; while(k <= n/2) // пока у a[k] есть дети { child = 2*k; // выбираем большего сына if(child < n && v[child] < v[child+1]) child++; // если сын меньше родителя if(new_elem >= v[child]) break; // иначе v[k] = v[child]; // переносим сына наверх k = child; } v[k] = new_elem; } template <class T> void heap_sort(vector<T> a, long size, vector<T> &v) { long i; // строим пирамидку for(i = size/2-1; i >= 0; i--) down_heap(a, i, size-1,v); // теперь a[0]...a[size-1] пирамида for(i = size-1; i > 0; i--) { // меняем первый с последним swap(v[0], v[i]); // восстанавливаем пирамидальность a[0]...a[i-1] down_heap(v, 0, i-1,v); } } template <class T> void main3(vector<T> a, vector<T> &v) { for (int i = 0; i < size;i++) { v.push_back(a[i]); cout << a[i] << " "; } cout << endl; // Сортировка слиянием Поехали! merge_sort(a, 0, size-1,v); for (int i = 0; i < size; i++) cout << v[i] << " "; cout << endl; } template <class T> void merge(vector <T> &v, long left, long centre, long right) { // Слияние упорядоченных частей массива в буфер temp // с дальнейшим переносом temp в вектор а // позиция чтения из первой последовательности a[left]...a[centre] long pos1 = left; // позиция чтения из второй последовательности a[centre+1]...a[right] long pos2 = centre+1; vector <T> temp; // идет слияние, пока в одной из последовательностей не кончатся элементы while (pos1 <= centre && pos2 <= right) { if (v[pos1] < v[pos2]) // выбираем меньший элемент и добавляем его в конец temp.push_back(v[pos1++]); else temp.push_back(v[pos2++]); } // одна последовательность закончилась - // копировать остаток другой в конец буфера while (pos2 <= right) // пока вторая последовательность непуста temp.push_back(v[pos2++]); while (pos1 <= centre) // пока первая последовательность непуста temp.push_back(v[pos1++]); // копируем temp в a[left]...a[right] for (int pos3 = 0; pos3 < right-left+1; pos3++) v[left+pos3] = temp[pos3]; } template <class T> void merge_sort(vector <T> a, long left, long right,vector <T> &v) { long centre; // индекс, по которому делим массив if (left < right) // если есть более 1 элемента { centre = (left + right)/2; merge_sort(v, left, centre,v); // сортируем левую половинку merge_sort(v, centre+1, right,v); // сортируем правую половинку merge(v, left, centre, right); // сливаем результаты в общий массив } } template <class T> void main4(vector<T> a, vector<T> &v) { for(int i = 0; i < size; i++) { v.push_back(a[i]); cout << a[i] << " "; } cout << endl; number_sort(a, size ,v); for (int i = 0; i < size; i++) cout << v[i] << " "; cout << endl; } template <class T> void number_sort(vector<T> a, int size, vector<T> &v) { for (int i (0); i < size; i++) for (int j (0); j < size-i-1; j++) if (v [j] > v [j+1]) //условие :сравнение следующего элемента с предидущим { int tmp = v [j]; //сортировка методом пузырька v [j] = v [j+1]; v [j+1] = tmp; } } int _tmain(int argc, _TCHAR* argv[]) { for (int i = 0; i < size; i++) a.push_back(rand()%10); main1(a,v); cout<<"\n"; main2(a,v); cout<<"\n"; main3(a,v); cout<<"\n"; main4(a,v); system ("PAUSE"); return 0; } |
![]() |
![]() |
![]() |
#2 | |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 09.05.2008
Сообщений: 5
|
![]()
Действительно, Beggins поставьте правильнее вопрос. Что за окно вывода с одной кнопкой?
|
![]() |
![]() |
![]() |
#4 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
![]()
так наверна.
пс. проект для 2008 вижлы, но думаю под 2005 нормально запустится. в крайтем случае копирнешь ресурсы и исходник. пс. твой код вынес в отдельный файл, результаты сортировки выводятся в лист бокс. да, и не смотри что проект так называется) просто шаблон был диалога, влом было новый создавать |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите поставить условия в StringGrid, чтобы выходило диалоговое окно. | Digimon | Помощь студентам | 2 | 18.02.2008 08:28 |
Окно | MadDog__ | Win Api | 0 | 17.01.2008 00:33 |
Окно из DLL | SunKnight | Общие вопросы Delphi | 1 | 16.12.2007 03:36 |
«Окно+символ». Создать класс, представляющий окно в текстовом режиме. | RustreX | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.11.2007 19:28 |