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

Быстрая сортировка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтение из файла http://www.cyberforum.ru/cpp-beginners/thread920419.html
Всем привет . У меня возникла небольшая проблема . int main(int argc, char* argv) { FILE * ptr ; unsigned char ch; if ((ptr=fopen("text3.txt", "r"))!=NULL) { ch = getc(ptr) ; while (!feof(ptr))
C++ Dev C++ выдает непонятную ошибку Вот код программы: #include <iostream> using namespace std; int main() { cout<<"Hello world\n"; return 0; } Вот ошибка: cannot find -lbgi http://www.cyberforum.ru/cpp-beginners/thread920416.html
C++ Не работают функции <math.h> в методе (функции-члене)
Сделал программу которая решает по формуле задачу. Все работает, но стоило вынести нахождение y в функцию, как компилятор стал писать ошибки! код, ошибки и скриншот #include "stdafx.h" #include <iostream> #include <conio.h> #include <math.h> using namespace std; double yCacl(int x){
C++ Алгоритм проверки числа на "совершенность"
Приветствую всех! Прошу помочь со следующей задачей: "Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за исключением себя самого. Число 6 – совершенное, так как 6 = 1+2+3. Число 8 – не совершенное, так как 8 ≠ 1+2+4.Дано натуральное число n. Получить все совершенные числа, меньшие n." Задачу я решил (код ниже), но работает программа слишком медленно....
C++ Массивы и перестановка http://www.cyberforum.ru/cpp-beginners/thread920370.html
Помогите пожалуйста с задачей. Дано 2 массива, заполненных случайными числами, размером от 10-20 (рандом). Найти в первом массиве максимальное число и все числа, находящиеся до него записать в 3ий массив. Во втором массиве найти максимальное число и все числа после него записать в 3ий массив (т.е. переместить к тому что получили из 1ого массива). Заранее спасибо!
C++ Создайте класс на основе данной программы Создайте класс на основе данной программы #include <iostream> using namespace std; int main ( ) { const int n=10; int* ap; for(int j=0;j<n;j++) *(ap+j)=new int; подробнее

Показать сообщение отдельно
1richard
15 / 5 / 2
Регистрация: 22.06.2013
Сообщений: 25
10.07.2013, 23:19     Быстрая сортировка
Смею заметить, что "Petrov Sergey 4 3 5" и "Ivanov Vasiliy 5 3 4" - эквивалентны, тоесть их параметр sr в поле структуры одинаковый, а значит результат, как этот:
" Выводится:
Konstantinov Nikolay
Konstantinov Nikolay
Kuznetsov Ivan
Kuznetsov Ivan
Ivanov Vasiliy
Petrov Sergey
Petrov Sergey
Ivanov Vasiliy"
есть правильный, так же, я бы посоветовал, писать в коде
C++
1
p .sr = a[ N / 2].sr;
что я вляется более наглядным способом определения середины сортируемого массива.
Так же, если внимательно читать условие задачи, а именно "Если несколько учащихся имеют одинаковые средние баллы, то их нужно выводить в порядке, заданном во входных данных." То для ваших входных данных, правильным выводом будет:
"Konstantinov Nikolay
Konstantinov Nikolay
Kuznetsov Ivan
Kuznetsov Ivan
Ivanov Vasiliy
Petrov Sergey
Ivanov Vasiliy
Petrov Sergey"

Добавлено через 16 минут
Добиться правильного результата, можно добавив в структуру еще одно поле, которое бы хранило начальный порядок элементов:
C++
1
2
3
4
5
6
7
8
9
10
struct pupils
{
       string name1;
       string name2;
       long inf;
       long fiz;
       long mat;
       long sr;
       long key;
};
И заполнялось бы при вводе следующим образом:
C++
1
2
3
4
5
6
for (long i = 0; i < n; i++)
    {
        in >> a[i].name1 >> a[i].name2 >> a[i].mat >> a[i].fiz >> a[i].inf;
        a[i].sr = a[i].mat + a[i].fiz + a[i].inf;
        a[i].key = i;
    }
В связи с чем, перестановка элементов сортировкой может выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (i <= j) 
{
 if(a[i].sr != a[j].sr)
 {
  temp = a[i]; 
  a[i] = a[j]; 
  a[j] = temp;
 }
 else
  if(a[i].key < a[j].key )
 {
  temp = a[i]; 
  a[i] = a[j]; 
  a[j] = temp;
 }
i++; 
j--;
}
 
Текущее время: 19:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru