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

Найти три наименьших элемента произвольного одномерного массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Загрузка проекта на sourceforge http://www.cyberforum.ru/cpp-beginners/thread1226936.html
Никогда не пользовался svn ( загрузкой файлов на репозиторий ) , и задаюсь вопросом, как закачать исходники на репозиторий? К примеру сюда http://sourceforge.net/p/tankclient/code/ ( сюда и хочу ) Помогите пожалуйста
C++ Зависимость преодолённого бегуном расстояния от времени Нужна подсказка в решении задачи, новичку! (толчок в нужном направлении) Всем привет! есть такая задача, по которой надо написать небольшую консольку на с++ но я не могу пока в суть въехать, с чего начать! надеюсь на подсказку) суть задачи такова: " Некий спортсмен бежит "Х" количество метров за "Y" секунд! Вывести на экран количество км (метров) которое он пробежал, и за какое... http://www.cyberforum.ru/cpp-beginners/thread1226924.html
Бинарное дерево с шаблоном C++
Пишу бинарное дерево типа BST<Key, Value>. Значениями хочу сделать любые типы данных. По-этому пришол к шаблонам, но с реализацией не выходит особенно с двумя типами. Наверное плохо понял принцип работы. Кусок кода: заголовочный файл #ifndef BSTREE_H_INCLUDED #define BSTREE_H_INCLUDED //#define Value int template <typename Key, typename Value>
Шаблонные методы шаблонного класса в cpp-файле C++
Есть класс-шаблон Map. В нем обьявленны несколько шаблонных методов forEach. template<typename K, typename V> class Map : public Object { public: /**/ template<typename A, typename R> R& forEach(A& arg, R& badResult, R&(*func)(Entry<K, V>*, A&)); template<typename A>
C++ Общий параметр для всех классов и создание объекта по известному адресу http://www.cyberforum.ru/cpp-beginners/thread1226868.html
Разработайте и реализуйте класс counted_ptr<T>, владеющий указателем на объект типа T, и указатель, подсчитывающий количество ссылок (переменная типа int), общий для всех указателей, с подсчетом ссылок на один и тот же объект типа T. Счетчик ссылок должен содержать количество указателей, ссылающихся на данный объект типа т. Конструктор класса counted_ptr должен размещать в свободной памяти...
C++ Реализовать проверку введенный значений Мне нужно, чтобы пользователь мог вводить только числа (например, в калькуляторе), а если вводится буква, выводится сообщение "Введите число, а не букву". Как это сделать? Подскажите, пожалуйста. подробнее

Показать сообщение отдельно
IrineK
Заблокирован
14.07.2014, 15:32     Найти три наименьших элемента произвольного одномерного массива
Впору разбрасывать тему по разным разделам )

Можно не сортировать весть массив (~N logn), а упорядочивать выбранную тройку (от 2 до 4 сравнений)
За один проход можно управиться (~N)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
#include <ctime>
 
//---------------------------------------------------------------
int *CreateRandomArray (int N)
{
    int *arr = new int [N];
    for (int i = 0; i<N; i++)
        arr[i] = rand()%100;
 
    return arr;
}
 
void PrintArray (char *name, int *arr, int N)
{
    std::cout <<"\n"<<name <<":\n";
    for (int i = 0; i<N; i++)
        std::cout << *(arr+i) << "  ";
    std::cout <<"\n";
}
//-----------------------------------------------------------------
 
typedef struct trio
{
    int min,middle,max;
}TRIO;
 
 
void ArrangeTrio (TRIO *order)
{
    int a = order->min, b = order->middle, c= order->max;
    if(a>b)
    {   if(b>c)
        {   order->min = c;
            order->middle = b;
            order->max = a;
        }
        else if(a>c)
        {   order->min = b;
            order->middle = c;
            order->max = a;
        }
        else
        {   order->min = b;
            order->middle = a;
            order->max = c;
        }
    }
    else
    {   if(b<c)
        {   order->min = a;
            order->middle = b;
            order->max = c;
        }
        else if(a<c)
        {   order->min = a;
            order->middle = c;
            order->max = b;
        }
        else
        {   order->min = c;
            order->middle = a;
            order->max = b;
        }
    }
}
 
void GetTrio (int *arr, int M, TRIO *res)
{
    for (int i = 4; i<M; i++)
        if (arr[i]<res->max)
        {   res->max = arr[i];
            ArrangeTrio(res);
        }
}
 
//----------------------------------------------------------------------------
int main()
{   
    srand ((unsigned int)time (NULL));
    
    int M = 15;
    int *arr = CreateRandomArray (M);
    PrintArray ("Array", arr, M);
 
    TRIO *res = new TRIO;
    res->min = arr[0];
    res->middle = arr[1];
    res->max = arr[2];
    ArrangeTrio(res);
    
    GetTrio (arr,M,res);
 
    std::cout<< '\n'<< res->min<<'\t'<<res->middle<<'\t'<<res->max;
 
    delete []arr;
    delete res;
 
    std::cin.get();
    return 0;
}
 
Текущее время: 15:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru