Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Удалить из первой последовательности каждый символ, принадлежащий и второй https://www.cyberforum.ru/ cpp-beginners/ thread1135239.html
Даны 2 символьные последовательности. Удалить из первой последовательности каждый символ, принадлежащий и второй последовательности.Распечатать заданные и образованную последовательности. То есть нужно удалить совместные символы. Мне на этом форуме написали программу но с ошибками помогите исправить. #include <iostream> #include <string> int main() { std::string txt("dfcc df"),...
Ошибка: член класса QLineEdit C++
ошибка: 'class QLineEdit' has no member named 'str' a=ui->lineEdit->str.toAscii().data(); подскажите что не так. Заранее спасибо.
C++ Как инициализировать Vector <class>? https://www.cyberforum.ru/ cpp-beginners/ thread1135193.html
Нужно реализовать такую задачу: Дан список учеников в формате Имя Оценка1 Оценка2 Оценка3 Надо отсортировать по убыванию суммы оценок. Поправьте меня, если я иду слишком сложным путем. Я создал класс class pupil {
C++ Как обрезать строку типа wchar_t* до определенного символа? https://www.cyberforum.ru/ cpp-beginners/ thread1135185.html
собственно вопрос в названии тему, запнулся казалось бы на самом простом, некогда не любил работу со строками...
C++ WinAPI с чего начать?
Знаю, что тема уже поднималась и тем не менее. С чего начать изучать именно winAPI Например, мой друг написал программу, позволяющую щелкать все время в одном месте и иногда в другом (для игры какой-то. Программа не имеет граф. Интерфейса, но он применяет winAPI . Тоже хочу, но не знаю с чего начать. Сам с++ владею на уровне ооп. Какие книги посоветуете??? #include <cstdio> #include...
C++ Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 Дорогие программисты, помогите мне с такой вот задачкой, никак не могу решить.Написать на с++ вычислить сумму всех чисел фибоначчи которые не превосходят 1000 https://www.cyberforum.ru/ cpp-beginners/ thread1135174.html
C++ С паскаля на с++ https://www.cyberforum.ru/ cpp-beginners/ thread1135173.html
Помогите переписать код с паскаля на с++. вот код: var a:array of longint; k, n, t, i:longint; begin readln (n); for i:=1 to n do begin read (t); inc(a);
C++ Дан символ C и строка S .Удвоить каждое вхождение символа С в строку S
Обработка символьных массивов с помощью указателей: Дан символ C и строка S .Удвоить каждое вхождение символа С в строку S Для модификации строки не использовать дополнительные блоки памяти.После обработки строки освободить выделенный блок памяти.
C++ Хочу научиться программировать https://www.cyberforum.ru/ cpp-beginners/ thread1135159.html
Есть большое желание научиться программированию, хотя бы азам оного! Подскажите, с чего начать?
C++ Задание на двумерный массив: Таблица футбольного чемпионата Таблица футбольного чемпионата задана квадратной матрицей порядка n, в которой все элементы, принадлежащие главной диагонали, равны нулю, а каждый элемент, не принадлежащий главной диагонали, равен 2, 1 или 0 (числу очков, набранных в игре: 2 – выигрыш, 1- ничья, 0 – проигрыш). а) Найти число команд, имеющих больше побед, чем поражений. б) Определить номера команд, прошедших чемпионат без... https://www.cyberforum.ru/ cpp-beginners/ thread1135122.html
Динамический массив классов C++
Добрый день. Прошу помощи, совета или т.п. Есть класс, который содержит динамический массив на тип double. Вот часть класса: C1.h #pragma once public ref class C1 {
C++ Среднее арифметическое ненулевых элементов динамического массива Написать программу среднее арифметическое не значения 0 элементов динамического масиива https://www.cyberforum.ru/ cpp-beginners/ thread1135110.html
76 / 78 / 41
Регистрация: 23.03.2011
Сообщений: 148
09.04.2014, 01:53 0

Сортировки: пять методов на выбор в одной программе - C++ - Ответ 6019227

09.04.2014, 01:53. Показов 4055. Ответов 40
Метки (Все метки)

Ответ

задолбал, там было всего исправить 2 строки и сменить имя у массива

вот рабочий ПРАВИЛЬНЫЙ код, с выбором метода сортировки и с правильным использовании методов сортировки, надёрганных с интернета(в основном данного форума кроме сортировки слиянием), в ранее выложенном вырианте не было выбора метода сортировки, кроме того в быстрой сортировке в этом коде нужно передавать массив и индекс последнего элемента, а не количество элементов из-за чего появляется левый элемент массива

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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
 #include <iostream>
#include <time.h>
using namespace std;
 
int opred_mas(int* Arr, int size);    
template< class T > void selectSort(T* arr, int size);
template< class T > void bubbleSort(T* arr, int size);
template< class T > void insertSort(T* a, int size);
template<class T> void quickSortR(T* a, long N);
template<class T> void merge(T* a, int l, int r);
 
int main()
{
    setlocale(0,"");
    int k=10;     //константа размера массива
    cout<<"Введите количество элементов массива\n";
    cin >>k;
 
    int *Arr1;      //указатель обьявляется, для использования динамического массива
    Arr1=new int [k];     //создание динамического массива
       
    cout<<"Полученный массив\n";
    opred_mas(Arr1,k);
    unsigned int H;
    cout<<"Нажмите 1, если вы хотите провести сортироку методом выбора"<<endl;
    cout<<"Нажмите 2, если вы хотите провести сортироку методом пузырька"<<endl;
    cout<<"Нажмите 3, если вы хотите провести сортироку методом вставок"<<endl;
    cout<<"Нажмите 4, если вы хотите провести сортироку методом быстрой сортировки"<<endl;
    cout<<"Нажмите 5, если вы хотите провести сортироку методом слияния "<<endl;
    cout<<"нажмите 0, если вы хотите выйти"<<endl;
    cin>>H;
    
    switch(H)
    {
        case 1:
            selectSort(Arr1,k);
            break;
        case 2:
            bubbleSort(Arr1,k);
            break;
        case 3:
            insertSort(Arr1,k);
            break;
        case 4:
            quickSortR(Arr1,k-1);
            break;
        case 5:
            merge(Arr1,0,k-1);
            break;
        default:
            exit(0);
    }
    
    
    cout<<endl;
    for(int i=0;i<k;++i)  cout<<Arr1[i]<<" ";
    system("pause");
}
 
int opred_mas(int* Arr, int size)       //функция задания элементов массива
{
    //srand(time(NULL));
    for(int i=0;i<size;++i)
    {
        Arr[i]=rand()%100-50;
        cout<<Arr[i]<<" ";
    }
    cout<<endl;
    return 0; 
}
 
template< class T > void selectSort(T* arr, int size) // сортировка выбором
{
    T tmp;
    for(int i = 0; i < size; ++i) // i - номер текущего шага
    { 
        int pos = i; 
        tmp = arr[i];
        for(int j = i + 1; j < size; ++j) // цикл выбора наименьшего элемента
        {
            if (arr[j] < tmp) 
           {
               pos = j; 
               tmp = arr[j]; 
           }
        }
        arr[pos] = arr[i]; 
        arr[i] = tmp; // меняем местами наименьший с a[i]
    }
}
 
template< class T > void bubbleSort(T* arr, int size)// пузырьком
{
    T tmp;
 
    for(int i = 0; i < size - 1; ++i) // i - номер прохода
    {            
        for(int j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1] < arr[j]) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
}
 
template< class T > void insertSort(T* a, int size) // вставками
{
    T tmp;
    for (int i = 1, j; i < size; ++i) // цикл проходов, i - номер прохода
    {
        tmp = a[i]; 
        for (j = i - 1; j >= 0 && a[j] > tmp; --j) // поиск места элемента в готовой последовательности 
            a[j + 1] = a[j];    // сдвигаем элемент направо, пока не дошли
        a[j + 1] = tmp; // место найдено, вставить элемент    
    }
}
 
template<class T> void quickSortR(T* a, long N) { // быстрая
// На входе - массив a[], a[N] - его последний элемент.
 
  long i = 0, j = N;        // поставить указатели на исходные места
  T temp, p;
 
  p = a[ N>>1 ];        // центральный элемент
 
  // процедура разделения
  do {
    while ( a[i] < p ) i++;
    while ( a[j] > p ) j--;
 
    if (i <= j) {
      temp = a[i]; a[i] = a[j]; a[j] = temp;
      i++; j--;
    }
  } while ( i<=j );
 
  // рекурсивные вызовы, если есть, что сортировать 
  if ( j > 0 ) quickSortR(a, j);
  if ( N > i ) quickSortR(a+i, N-i);
}
 
template<class T> void merge(T* a, int l, int r) {
    if (r == l)
        return;
    if (r - l == 1) { 
        if (a[r] < a[l])
            swap(a[r], a[l]);
        return;
    }
    int m = (r + l) / 2;
    merge(a,l, m);
    merge(a,m + 1, r);
    T *buf=new T[r];
    int xl = l;
    int xr = m + 1;
    int cur = 0;
    while (r - l + 1 != cur) {
        if (xl > m)
            buf[cur++] = a[xr++];
        else if (xr > r)
            buf[cur++] = a[xl++];
        else if (a[xl] > a[xr])
            buf[cur++] = a[xr++];
        else buf[cur++] = a[xl++];
 
    }
    for (int i = 0; i < cur; i++)
        a[i + l] = buf[i];
}
П.С. вроде бы ничего не напутал когда переделывал сортировку слиянием используя шаблон (чтобы работала с любым типом данных), но точно (проверял) она работает с типом int, остальные должны работать в теории (но не проверял)

Вернуться к обсуждению:
Сортировки: пять методов на выбор в одной программе C++
2
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2014, 01:53
Готовые ответы и решения:

Реализация нескольких методов шифрования в одной программе
Здравствуйте, помогите реализовать Алгоритм Евклида, Шифр Цезаря, Шифр Виженера и Магический...

Несколько алгоритмов сортировки в одной программе
Здравствуйте, форумчане. Подскажите пожалуйста, у меня есть 5 кодов программ. Суть в том, что...

Оформите программу для реализации в одной программе рекурсивных методов вычисления факториала
Оформите программу для реализации в одной программе рекурсивных методов вычисления факториала числа...

Реализация нескольких алгоритмов сортировки в одной программе
1)Пузырьком 2)Простейшая сортировка 3)сортировка выбором 4)сортировка вставками 5)сортировка...

40
09.04.2014, 01:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2014, 01:53
Помогаю со студенческими работами здесь

Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным ...

Исправить пять ошибок в программе
program h; uses crt; var f:Ошибка1 n:integer; procedure factorial(n:integer;var f:longint);...

Визуализация методов сортировки
Здравствуйте. Необходимо написать курсовую на тему Визуализация методов сортировки. Подскажите...

Визуализация методов сортировки
Подскажите пожалуйста. Как можно графически(например в виде шкал или каких-нибудь фигур) изобразить...

Использование методов сортировки
Помогите, пожалуйста, составить программу. Дан массив А(А1,А2,…,А24). Вычислить сумму S= а1 а2...

Визуализация методов сортировки
Задание: разработать программу на языке Java, демонстрирующую работу различных алгоритмов...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru