Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TonyKing
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 14
#1

Упорядочить 5 чисел за 7 операций - C++

16.01.2011, 13:29. Просмотров 944. Ответов 6
Метки нет (Все метки)

Каждый частный придуманный мной алгоритм терпел крах.
Если это попадание пальцем в небо, то, видимо, это мне не по силам.


Упорядочить по невозрастанию 5 чисел за 7 операций сравнения.

Может кто уже сталкивался с такой задачей.
Заранее благодарен.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2011, 13:29     Упорядочить 5 чисел за 7 операций
Посмотрите здесь:

перегрузка операций в матрице вещественных чисел - C++
перегрузить операции << и >> для форматированного ввода объектов класса "матрица вещественных чисел"

Программа с классами комплексных чисел и перегрузками операций - C++
Задание состоит из таких частей: Для выбранного варианта определите класс, включив в него: • конструктор по умолчанию; • конструктор...

Хранение в контейнере deque целых чисел и проверка основных операций - C++
Написала код: #include "stdafx.h" #include <iostream> #include <deque> using namespace std; void show (const char *str,...

Перегрузка операций для класса целых двоичных чисел в виде строк - C++
нужна ваша помощь, пожалуйста Создать класс, который запоминает целые двоичные числа в виде строк. Перегрузить операции +, ++ и +=.

Создать динамичный класс для операций с динамическими массивами чисел действительного типа - C++
Создать динамичный класс для операций с динамическими массивами чисел действительного типа. Сделать перегрузки символов операций: "=" -...

Написать функции для выполнения операций над одномерным массивом целых чисел - C++
Написать функции для выполнения операций над одномерным массивом целых чисел: • определить среднее арифметическое отрицательных элементов...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
16.01.2011, 13:35     Упорядочить 5 чисел за 7 операций #2
Цитата Сообщение от TonyKing Посмотреть сообщение
невозрастанию
это по спаданию ???
TonyKing
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 14
16.01.2011, 13:38  [ТС]     Упорядочить 5 чисел за 7 операций #3
a1 => a2 => a3

Вроде так)

Каждый следующий меньше либо равен.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
16.01.2011, 18:57     Упорядочить 5 чисел за 7 операций #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
TonyKing, Почитайте про сортировку слиянием.
Если разбить 5 чисел на 3 и 2, отсортировать вставкой полученную тройку чисел и двойку чисел. После этого соединить эти две части. При самом плохом раскладе получится 7 сравнений.
TonyKing
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 14
19.01.2011, 16:53  [ТС]     Упорядочить 5 чисел за 7 операций #5
Не хватит.

10 11 12 1 2

Для сортировки до 12 11 10 и 2 1 мы потратим 4 сравнения (вставками).

Дальше слияние нам тут не в помощь, если я правильно понимаю.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.01.2011, 17:44     Упорядочить 5 чисел за 7 операций #6
TonyKing, Да, тут я на 1 обсчитался.
И что-то пока не могу придумать. Постараюсь сегодня вечером посидеть над этой задачей.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2011, 23:43     Упорядочить 5 чисел за 7 операций
Еще ссылки по теме:

Вычисление значения логического выражения, состоящего из натуральных чисел, скобок и поразрядных операций - C++
Дорогие друзья, помогите написать программу, не могу понять как и даже с чего начать. Можете дать, пожалуйста, код и написать в...

Упорядочить последовательность целых чисел - C++
Дано натуральное число n, целые числа a1, ... , an. Оставить без изменения последовательность a1, ... , an, если её члены упорядочены по...

Упорядочить список целых чисел - C++
Здравствуйте. Нужно создать список целых чисел. Упорядочить его элементы и вывести на печать. Списки можно создавать вводом из файла или с...

Упорядочить очередь натуральных чисел по возрастанию - C++
Всем привет! Подскажите пожалуйста, как можно упорядочить очередь натуральных чисел, которые вводятся с клавиатуры, по возрастанию.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
TonyKing
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 14
22.01.2011, 23:43  [ТС]     Упорядочить 5 чисел за 7 операций #7
Может пригодится кому.
Идеальность кода не была целью)

Код
#include <cstdlib>
#include <iostream>

using namespace std;

void swap(int a[], int f, int s) 
{
a[f]=a[f]+a[s];
a[s]=a[f]-a[s];
a[f]=a[f]-a[s];     
}

void show(int a[]) 
{
cout<<endl;
int i=0;
while(i<5) { cout<<a[i]<<" "; i++; }
cout<<endl<<endl;
}

void show2(int ar[], int a, int b, int c, int d, int e)
{
cout<<ar[a]<<" "<<ar[b]<<" "<<ar[c]<<" "<<ar[d]<<" "<<ar[e];     
}

int main(int argc, char *argv[])
{
int a[5];
srand(time(0));
int i=0;
while(i<5) { a[i]= rand()%100; i++; }

cout<<"Ishodnaya:\n";
show(a); 

if(a[0]>a[1]) swap(a,0,1);
if(a[2]>a[3]) swap(a,2,3);
if(a[0]>a[2]) { swap(a,0,2); swap(a,1,3); }

//------------------------------
cout<<"Perviy prohod:\n"; 
show(a);

cout<<"Resultat:\n";
 
if(a[2]>a[4])
{
  if(a[1]>a[2])
  {
    if(a[1]>a[3])
    {
       if(a[0]>a[4])
       show2(a,1,3,2,0,4);
       else
       show2(a,1,3,2,4,0);  
    }
    else
    {
       if(a[0]>a[4])
       show2(a,3,1,2,0,4);
       else
       show2(a,3,1,2,4,0); 
    }             
  }
  else 
  {
     if(a[4]>a[1])
     show2(a,3,2,4,1,0);          
     else
     {
       if(a[0]>a[4])
       show2(a,3,2,1,0,4);           
       else
       show2(a,3,2,1,4,0);     
     }         
  }
             
}
else 
{   
  if(a[3]>a[4])
  {
    if(a[1]>a[4])
    {
      if(a[1]>a[3])
      show2(a,1,3,4,2,0);            
      else
      show2(a,3,1,4,2,0);  
    }
    else
    {
      if(a[1]>a[2])
      show2(a,3,4,1,2,0);             
      else
      show2(a,3,4,2,1,0);   
    } 
  
  }
  else
  {
     if(a[1]>a[3])
     {
       if(a[1]>a[4])
       show2(a,1,4,3,2,0);       
       else
       show2(a,4,1,3,2,0);          
     }
     else
     {
       if(a[1]>a[2])
       show2(a,4,3,1,2,0);             
       else
       show2(a,4,3,2,1,0);  
     }    
  }

}



system("PAUSE");
return EXIT_SUCCESS;
}
Yandex
Объявления
22.01.2011, 23:43     Упорядочить 5 чисел за 7 операций
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru