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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2013, 22:48   #1
СветланаТолмачева
Новичок
Джуниор
 
Регистрация: 22.09.2013
Сообщений: 1
Восклицание С++ помогите пожалуйста

Нужно составить алгоритм, упорядочивающий заданную последовательность чисел так, чтобы каждый элемент, стоящий на четном месте, был больше каждого из соседних. Обеспечить ввод параметров и количество элементов массива с клавиатуры.
СветланаТолмачева вне форума Ответить с цитированием
Старый 23.09.2013, 07:17   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Наработки есть какие-нибудь??? Ввод параметров, что вы имеете в виду.... , заполнение массива???
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 23.09.2013 в 11:33.
Bugrimov вне форума Ответить с цитированием
Старый 23.09.2013, 12:54   #3
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Влоб.
Не всегда верно работает с четными количеством элементов, т.к с четным количеством бывают ситуации, что задача неразрешима или я что-то упустил...

Код:
#include "stdio.h"
#include "stdlib.h"


template <typename T>
struct mysort
{
	static void sort(T* arr, size_t size)
	{
	   for(size_t i = size - 1; i > 0; i--)
	   {
          bool _ch = false;
		  for(size_t j = 0; j < i; j++)
		  {
			 if(arr[j] > arr[j+1])
			 {
			   T tmp = arr[j];
			   arr[j]=arr[j+1];
			   arr[j+1] = tmp;
               _ch = true; 
			 }
		  }
		  if(!_ch)
            break;
	   }
	   for(size_t i = 1; i < size; i = i + 2)
	   {
		 if(size % 2 == 0 ? i + 2 <= size : i + 2 < size)
		 {
			T tmp = arr[i];
			arr[i] = arr[i+2];
			arr[i+2] = tmp;
		 }

	   }
	   if(size % 2 != 0)
	   {
		  T tmp = arr[size-1];
		  arr[size-1] = arr[size-2];
		  arr[size-2] = tmp;
	   }
    }
};

template <typename T>
struct myprint
{
	static void print(T* arr, size_t size)
	{
		for(size_t i = 0; i < size; i++)
		{
            printf("%d ",arr[i]);
		}
		printf("\n");
    }
};

template
<
  typename T,
  template <class> class sortpolicy,
  template <class> class printpolicy
>
class sequence
{
public:
   sequence() : _arr(NULL), _size(0) {}
   
   sequence(size_t size) : _size(size)
   {
	  unsigned long seed = time(NULL);
	  srand(seed);
	  _arr = new T[_size];
	  for(size_t i = 0; i < _size; i++)
	  {
		  _arr[i] = rand()%99 + 1;
	  }
   }

   ~sequence()
   {
	   if(_arr)
         delete [] _arr;
   }

   void sort()
   {
      sortpolicy<T>::sort(_arr,_size);
   }

   void print()
   {
	   printpolicy<T>::print(_arr,_size);
   }
   
private:
   sequence(const sequence&);
   sequence& operator=(const sequence&);
private:
   size_t _size;
   T* _arr;	
};

typedef sequence<int,mysort,myprint> myseq;


int main()
{
  myseq s(25);
  s.print();
  s.sort();
  s.print();
  return 0;
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 23.09.2013, 14:24   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Здорово, конечно мне кажется сложновато для начинающего программиста... (ВРОДЕ МЕНЯ) но неплохо написано ВЛОБ....
СветланаТолмачева Вы разобрались в том, что Вам Helloween написал???? Можно попробовать вариант по проще написать...
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 23.09.2013 в 14:46.
Bugrimov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите создать програму для роботы с файлами, пожалуйста помогите нужно очень срочно Сергей Человек Фриланс 3 06.07.2009 19:30
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! VisTBacK Помощь студентам 6 19.09.2008 13:44