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

Реализовать сортировку по возрастанию и убыванию - C++

Восстановить пароль Регистрация
 
TRIPTIXX
0 / 0 / 0
Регистрация: 01.04.2014
Сообщений: 18
19.05.2014, 20:09     Реализовать сортировку по возрастанию и убыванию #1
Здравствуйте!
имеется код готовой программы. В нем нужно наиболее легким способом ( как сказал преподаватель с помощью двух строк) создать сортировку и по возрастанию и по убыванию!
Сам код в спойлере
Кликните здесь для просмотра всего текста
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
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main(){ clrscr();
 
  struct Kurs{
    char Strana[15];
    float SR, max, C[6];
    int nom;  };
 
    Kurs *M;
    Kurs x;
    float  MSR;
    int Nstrana, N, i, j, usl, p;
    MSR=0; Nstrana=0;
 
    cout <<"\n input N:"; cin >> N;
    M = new Kurs[N];
 
    for (i=0; i<N; i++){
    cout <<"\n \n input name Strani ["<<i+1<<"]: "; cin >> M[i].Strana;
         M[i].SR=0; M[i].max=0;
    for (j=0; j<6; j++) {
    cout << "\n Input God ["<<j+1<<"]="; cin>> M[i].C[j];
    }}
 
    for (i=0; i<N; i++) {
      for (j=0; j<6; j++){
    M[i].SR+=M[i].C[j];
    if (M[i].C[j]>M[i].max) {M[i].max=M[i].C[j]; M[i].nom=j+1;}
    }
      M[i].SR/=6;
      if (M[i].SR>MSR) {MSR=M[i].SR; Nstrana=i+1;}
    }
 
    printf ("\n --------------------------------------------------------------------------");
    printf("\n| Nom | Strana | 1-i | 2-i | 3-i | 4-i | 5-i | 6-i | SR | Max | N |");
    printf("\n----------------------------------------------------------------------------");
 
    for (i=0; i<N; i++) {
     printf ("\n %5d| %7s|", i+1, M[i].Strana);
     for (j=0; j<6; j++) {  printf ("%5.0f|", M[i].C[j]);  }
    printf ("%4.0f| %4.0f| %2d|", M[i].SR, M[i].max, M[i].nom);
     }
    printf("\n---------------------------------------------------------------------");
    cout << " \n \n MaxSredni=" << MSR;
    cout << " \n Nomer:" << Nstrana;
    printf("\n---------------------------------------------------------------------");
 
    do {
    cout <<("\n \n Input pole sortirovki: "); cin>> p;
    for (i=0; i<N; i++)
    for (j=i+1; j<N; j++) {
      switch(p) {
        case 2: case 3: case 4: case 5: case 6: case 7: usl= M[i].C[p-2] > M[j].C[p-2]; break;
        case 8: usl=M[i].SR>M[j].SR; break;
        case 9: usl=M[i].max>M[j].max; break;
        case 10: usl=M[i].nom>M[j].nom; break;
      }
    if (usl) {x=M[i]; M[i]=M[j]; M[j]=x;}
    }
    if (p!=0){
    printf ("\n--------------------------------------------------------------------");
    printf("\n| Nom | Strana | 1-i | 2-i | 3-i | 4-i | 5-i | 6-i | SR | Max | N |");
    printf("\n--------------------------------------------------------------------");
 
    for (i=0; i<N; i++) {
     printf ("\n %5d| %6s|", i+1, M[i].Strana);
     for (j=0; j<4; j++) {  printf ("%5.0f|", M[i].C[j]);  }
    printf ("%4.0f| %4.0f| %2d|", M[i].SR, M[i].max, M[i].nom);
     }}
    } while (p!=0);
    cout<< ("Press to Key...");
    getch();
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2014, 20:09     Реализовать сортировку по возрастанию и убыванию
Посмотрите здесь:

C++ Найти сортировку по возрастанию
Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных строках. C++
в одномерном массиве произвести сортировку элементов по убыванию C++
Сделать сортировку строк по сумме элементов по возрастанию C++
C++ Реализовать сортировку функции по возрастанию или по убыванию, направление должнен указывать пользователь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
19.05.2014, 20:25     Реализовать сортировку по возрастанию и убыванию #2
60 строка.
Цитата Сообщение от TRIPTIXX Посмотреть сообщение
if (usl) {x=M[i]; M[i]=M[j]; M[j]=x;}
Завести переменную direction, которая определяет направление сортировки
(например, равную 1 - по возрастанию и -1 - по убыванию).
Тогда.
C++
1
if (direction==1 && usl  || direction==-1 && !usl   ) {x=M[i]; M[i]=M[j]; M[j]=x;}
TRIPTIXX
0 / 0 / 0
Регистрация: 01.04.2014
Сообщений: 18
19.05.2014, 22:49  [ТС]     Реализовать сортировку по возрастанию и убыванию #3
Завести переменную direction, которая определяет направление сортировки
(например, равную 1 - по возрастанию и -1 - по убыванию).
Тогда.
C++
1
if (direction==1 && usl  || direction==-1 && !usl   ) {x=M[i]; M[i]=M[j]; M[j]=x;}
[/QUOTE]
То есть в этом коде мы сами указываем (написав нужное значение либо 1 либо -1) по возрастанию или убыванию. или все же полностью переписываем вашу строчку?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
20.05.2014, 06:47     Реализовать сортировку по возрастанию и убыванию #4
Цитата Сообщение от TRIPTIXX Посмотреть сообщение
Завести переменную direction
Цитата Сообщение от TRIPTIXX Посмотреть сообщение
То есть в этом коде мы сами указываем
Можем direction либо присвоить значение
C++
1
int direction=1;
либо ввести
C++
1
2
cout>>"введите 1 для сотрировки по возрастанию\n, или -1 для сортировки по убыванию";  
int direction;cin>>direction;
Yandex
Объявления
20.05.2014, 06:47     Реализовать сортировку по возрастанию и убыванию
Ответ Создать тему
Опции темы

Текущее время: 09:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru