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

Алгоритмом быстрой сортировки строк - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить, равны ли все элементы первого столбца матрицы соответствующим элементам главной диагонали http://www.cyberforum.ru/cpp-beginners/thread1169545.html
Задана матрица F(9,3). определить, равны ли все элементы первого столбца соответствующим элементам главной диагонали. Если нет, то поменять их местами.
C++ Определить в матрице максимальный среди положительных, минимальный среди отрицательных и поменять их местами Задана матрица D(4,4). Определить максимальный среди положительных, минимальный среди отрицательных и поменять их местами. http://www.cyberforum.ru/cpp-beginners/thread1169543.html
C++ Извлечение из строки отдельных элементов
Имеется поток считываемый с файла: sr->ReadToEnd(); Необходимо достать из него элементы, ну к примеру "33,12,1" а мне нужно чтобы в массив были переданы 33 12 и 1 подскажите как это сделать ?
Найти набольший элемент среди нечетных столбцов этой матрицы C++
Ребят, выручайте. В заданной целочисленной прямоугольной матрице 1) Найти набольший элемент среди нечетных столбцов этой матрицы; 2) Последний отрицательный элемент каждого столбца матрицы заменить нулём
C++ Создать класс triangle с полями-сторонами http://www.cyberforum.ru/cpp-beginners/thread1169515.html
Создать класс triangle с полями-сторонами. Определить методы изменения сторон вычисления углов, вычисление периметра. создать производный класс Rightangled (прямоугольный), имеющий поле площади. определить метод вычисления площади Добавлено через 15 часов 21 минуту Код для Equiteral(равносторонний) Помогите доработать его до Rightangled (прямоугольный) #include <iostream> #include...
C++ Создать динамический список для структуры Здраствуйте! Очень нужна Ваша помощь... Нужно создать динамический список для структуры. В списке должны быть реализованы следующие функции: создание списка, просмотр списка, удаление списка, вывод на экран, поиск, редактирование записи, удаление записи, добавление новой записи, создание записи, вывод на экран. Чтение и запись в файл. Помогите хотя бы с некоторыми... Получилось сделать только... подробнее

Показать сообщение отдельно
Тангенс
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 121
07.05.2014, 21:19     Алгоритмом быстрой сортировки строк
Необходимо отсортировать дату,она же char, по возрастанию.

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
void q_sort(Medicament m[], int f, int l){
 
  int i = f, j = l;
  char *mid = m[(f + l) / 2].form;
 
  while(i <= j) {
      while(strcmp(m[i].form, mid) < 0)
        i++;
      while(strcmp(mid, m[j].form) > 0)
        j--;
    if(j<=i) {
      char *tmp = m[i].form;
      strcpy(m[j].form, m[i].form);
      strcpy(m[i].form, tmp);
      i++;
      j--;
    }
  }
 
  if (f < j)
    q_sort(m, j, f);
  if (i < l)
     q_sort(m, i, l);
}
Алгоритм не работает

Полный код

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
#include <iostream>
#include <conio.h>
#include <ctime>
 
using namespace std;
 
const int N = 10;
 
struct Medicament{
    int num;
    char* name;
    char form[20];
    int price;
 
    // условие хранения
    int day;
    int mounth;
    int year;
};
 
void fill(Medicament m[]){
    for(int i=0;i<N;i++){
        m[i].num = rand()%100 + 200;
        
        m[i].day = rand()%29+1;
        m[i].mounth = rand()%12+1;
        m[i].year = rand()%44+1970;
 
        sprintf(m[i].form,"%d.%d.%d",m[i].day,m[i].mounth,m[i].year);
    }
}
 
 
void q_sort(Medicament m[], int f, int l){
 
  int i = f, j = l;
  char *mid = m[(f + l) / 2].form;
 
  while(i <= j) {
      while(strcmp(m[i].form, mid) < 0)
        i++;
      while(strcmp(mid, m[j].form) > 0)
        j--;
    if(j<=i) {
      char *tmp = m[i].form;
      strcpy(m[j].form, m[i].form);
      strcpy(m[i].form, tmp);
      i++;
      j--;
    }
  }
 
  if (f < j)
    q_sort(m, j, f);
  if (i < l)
     q_sort(m, i, l);
}
 
void print(Medicament m[]){
    for(int i=0;i<N;i++){
        cout<<"Дата лекарства "<<' '<<m[i].form<<endl;
    }
}
 
void main(){
 
    setlocale(LC_ALL,"rus");
 
    Medicament m[N];
 
    fill(m);
 
    print(m);
    cout<<endl<<endl;
 
    q_sort(m,0,N);
    print(m);
 
    _getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru