krollik Опубликовано 4 марта, 2008 Жалоба Поделиться Опубликовано 4 марта, 2008 Собствено при компиляции не вылетает никаких ошибок, зато при первой же попытке применить qsort - рушиться =( Помогите понять проблему //6.8.1: Дан массив действительных чисел, содержащий n элементов (n = 100, 200). //Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort, //прототип которой находится в заголовочном файле stdlib.h (написать для нее функцию сравнения, //которая передается в качестве параметра, и заполнить таблицу строк) //Для тестирования программы массив значений заполнять тремя способами: //по возрастанию, по убыванию, случайным образом. #include <iostream>#include <conio.h>#include <windows.h>#include <iomanip>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;//фнкция для сравнения 2 элементовint CompareThey( const void *First, const void *Second ){return _stricmp( * ( char** ) First, * ( char** ) Second );}template <class T>int CompareThey(T* First, T* Second){return (int)(*First - *Second)}//фнкция для вывода матрицы template <class S>void ShowArray(S Array, int iSize = 2){for (int i = 0; i < iSize; i++) cout << setw(4) << Array[i];cout << endl;}int main(int argc, char* argv[]){//инициализацияint iSize = 2;srand(time(NULL));//получаем размерность матрицыcout << "Enter array's size: ";cin >> iSize;//Формируем и заполняем матрицы iA, fB, dC по возрастанию, убыванию и случайным образом соответсвенноint* iA = new int[iSize];float* fB = new float[iSize];double* dC = new double[iSize];for (int i=0; i < iSize; i++){ iA[i] = i; fB[i] = (float)iSize - (float)i; dC[i] = rand() % 20;}//вывод результатовcout << "Array #1 (integer):" << endl;ShowArray(iA, iSize);qsort(iA, iSize, sizeof(iA[0]), CompareThey);cout << "Array #1 (integer) after qsort():" << endl;ShowArray(iA, iSize);cout << "Array #2 (float):" << endl;ShowArray(fB, iSize);qsort(fB, iSize, sizeof(fB[0]), CompareThey);cout << "Array #2 (float) after qsort():" << endl;ShowArray(fB, iSize);cout << "Array #3 (double):" << endl;ShowArray(dC, iSize);qsort(dC, iSize, sizeof(dC[0]), CompareThey);cout << "Array #3 (double) after qsort():" << endl;ShowArray(dC, iSize);cout.flush();_getch();return 0;} Ссылка на комментарий Поделиться на другие сайты Поделиться
krollik Опубликовано 5 марта, 2008 Автор Жалоба Поделиться Опубликовано 5 марта, 2008 Вопрос закрыт, решилось после незначительных изменений. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти