Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2015, 14:27   #1
overload
 
Регистрация: 08.04.2012
Сообщений: 3
По умолчанию Функции сортировки структур

Есть код задачи, скриншот работы добавил. Но мне нужно переделать следующее:
Цитата:
1. массив структур оставить неизменным, сортировать указатели на структуру.
2. заменить 2 функции сортировки на одну, с дополнительным параметром типа "указатель на функцию"
3. (если возможно) написать "универсальную" функцию сортировки указателей, независимую от типа указываемых элементов, т.е. сортировать элементы типа void*
Прошу подсказать может указать где почитать.
Код:
#pragma hdrstop
#pragma argsused

#ifdef _WIN32
#include <tchar.h>
#else
  typedef char _TCHAR;
  #define _tmain main
#endif

#include <stdio.h>
#include <cstdlib>
#include <iostream>

using namespace std;

const int N=10;

struct Sizes{
	double width;
	double height;
};

struct RectParams{
	double area;
	double perimeter;
	Sizes rect;
};

/*ФУНКЦИЯ ОБЕСПЕЧИВАЕТ ВЫВОД ДАННЫХ НА ЭКРАН*/
void showData(RectParams *R,int N)
{
	cout<<"\n";
	cout<<"AREA PERIMETER WIDTH HEIGHT"<<"\n\n";
	for (int i=0;i<N;i++)
    {
		cout<<R[i].area<<" ";
		cout<<R[i].perimeter<<" ";
		cout<<R[i].rect.width<<" ";
		cout<<R[i].rect.height<<" ";
		cout<<"\n";
	}
	cout<<"\n";
}

/*ФУНКЦИЯ ЗАНОСИТ ДАННЫЕ В СТРУКТУРУ*/
void getData(RectParams *R,int N)
{
	for (int i=0;i<N;i++)
	{
		R[i].area = 0;
		R[i].perimeter = 0;
		R[i].rect.width = rand()%50;
		R[i].rect.height = rand()%50;
    }
}

/*ФУНКЦИЯ ОБЕСПЕЧИВАЕТ РАСЧЕТ ПЕРИМЕТРА И ПЛОЩАДИ*/
void getPerimeterArea(RectParams *R,int N)
{
	for (int i=0;i<N;i++)
	{
		R[i].perimeter = 2*(R[i].rect.width + R[i].rect.height);
		R[i].area = R[i].rect.width * R[i].rect.height;
    }
}

/*ФУНКЦИЯ ОБЕСПЕЧИВАЕТ СОРТИРОВКУ ПО ПЛОЩАДИ*/
void sortArea(RectParams *R,int N)
{
	for(int i = N-1;i>0;i--)
    {
        bool inspect = true;
        for(int j = 0; j< i; j++)
        {
			if(R[j].area < R[j+1].area)
            {
                inspect = false;
				swap(R[j],R[j+1]);
            }
        }
        if(inspect == true)
            break;
    }
}

/*ФУНКЦИЯ ОБЕСПЕЧИВАЕТ СОРТИРОВКУ ПО ПЕРИМЕТРУ*/
void sortPerimeter(RectParams *R,int N)
{
	for(int i = N-1;i>0;i--)
    {
        bool inspect = true;
        for(int j = 0; j< i; j++)
        {
			if(R[j].perimeter < R[j+1].perimeter)
            {
                inspect = false;
				swap(R[j],R[j+1]);
            }
        }
        if(inspect == true)
            break;
    }
}

int main() {
	RectParams *R=new RectParams[N];
	getData(R,N); 			//Ввод данных в массив структур
	showData(R,N); 			//Вывод массива структур на экран

	getPerimeterArea(R,N); //Расчет периметра и площади
	showData(R,N);         //Вывод массива структур на экран

	cout<<"SORTED BY AREA";
	sortArea(R,N); 			//Сортировка по площади
	showData(R,N);         //Вывод массива структур на экран

	cout<<"SORTED BY PERIMETER";
	sortPerimeter(R,N); 	//Сортировка по периметру
	showData(R,N);         //Вывод массива структур на экран

	delete []R;
	system("PAUSE");
}
Изображения
Тип файла: jpg Скриншот 2015-05-23 14.14.34.jpg (36.7 Кб, 117 просмотров)
overload вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В модуль поместить функции сортировки символьных и числовых массивов. Подключить созданный модуль и применить эти функции к вводим Tuns Помощь студентам 6 27.05.2014 15:07
массив структур в функции andrei100 Общие вопросы C/C++ 1 26.11.2011 16:56
Определение и использование структур. Методы сортировки. inc Помощь студентам 1 25.05.2011 06:21
шаблон функции для сортировки массива. tub0rg Помощь студентам 5 23.01.2011 09:39
Массив структур, как возвращаемое значение функции BadProgrammer Общие вопросы C/C++ 1 08.11.2010 17:49