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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
nake
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 33
#1

Сортировка, не изменяя структуру - C++

30.04.2012, 11:05. Просмотров 906. Ответов 21
Метки нет (Все метки)

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
#include <conio.h>
#include <string.h>
#include <stdio.h>
 
struct autopark{          //объявление структуры autopark
char brand[30];      //марка автобуса
char date[30];      //год выпуска автобуса
char number[10];          //маршрут автбуса
}a[30];   
int addition(int i);    //добавление данных
int delet(int d);       //удаление данных
void showing(int n);    //показ данных
void sort(int i);     //сортировка данных
 
int main()
{
int key,d=0;
while(1)
 {
 
printf("\nMenu");                 
printf("\n1.Add the data");
printf("\n2.Display all details");
printf("\n3.Deleting data");
printf("\n4.Sort the data");
printf("\n\nTo exit, press Esc \n\n");
key=getch(); 
 
if(key==27) break;
 
switch(key)      //Выбор действия
{ 
case 49: d=addition(d);break;
case 50: showing(d);break;
case 51: d=delet(d);break;
case 52: sort(d);break;
}
getch();
}
}
 
int addition(int i)     //функция для добавления данных
{
puts("Enter the brand of the bus: ");
scanf("%s",a[i].brand);
puts("Enter the year the bus");
scanf("%s",a[i].date);
puts("Enter the number of bus");
scanf("%s",a[i].number);
return i+1;
}
int delet(int n)      //функция для удаления данных
{
int i,d;
printf("\nEnter the number of write to remove: ");
scanf("%d",&d);
for (i=d-1;i<n-1;i++)
{
strcpy(a[i].brand,a[i+1].brand);
strcpy(a[i].date,a[i+1].date);
strcpy(a[i].number,a[i+1].number);
return n-1;
}
}
 
void showing(int n)    //функция показа данных
{
int i;
printf("\n_________________________________\n");
printf("|N |Brand     |Year      |Number|\n");
printf("_________________________________\n");
for (i=0;i<n;i++)
 {
printf("|%-2d|%-10s|%-10s|%-3s   |\n",i+1,a[i].brand,a[i].date,
a[i].number);
}
printf("_________________________________");
}
 
void sort(int i)    //функция сортировки данных
{
int n,temp,button;
printf("\nMenu");                 
printf("\n1.Brand");
printf("\n2.Date");
printf("\n3.Number");
printf("\n\nTo exit, press Esc \n\n");
button=getch(); 
 
if(button==29) break;
 
switch(button)      //Выбор действия
{ 
case 49: for(int i=0;i<30;i++)
    {
            for(int j=i+1;j<30;j++)
            {
                    if(a[i].brand>a[j].brand)
                    {
                           temp=i;;
                           i=j;
                           j=temp;
                    }
            }
    };break;
case 50: for(int i=0;i<30;i++)
    {
            for(int j=i+1;j<30;j++)
            {
                    if(a[i].date>a[j].date)
                    {
                           temp=i;;
                           i=j;
                           j=temp;
                    }
            }
    };break;
case 51: for(int i=0;i<30;i++)
    {
            for(int j=i+1;j<30;j++)
            {
                    if(a[i].number>a[j].number)
                    {
                           temp=i;;
                           i=j;
                           j=temp;
                    }
            }
    };break;
}
}
Нужно, чтобы оно сортировало порядковый номер записи в структуре, но не получается. Не понимаю как это передать в функцию показа данных. И ещё не работает break в функции сортировки, когда if(button==29) break;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2012, 11:05     Сортировка, не изменяя структуру
Посмотрите здесь:

Описать структуру с именем STUDENT. Не работает сортировка - C++
Вот задача: 1 .Описать структуру с именем STUDENT,содержащую следующие поля: •фамилия и инициалы; •номер группы; ...

запись в файл, не изменяя размер самого файла - C++
int stream::write(block blocks, int numOfBlocks,const char *data){ int filesize=strlen(data); ofstream disk(&quot;data.dat&quot;,ios::out...

Упорядочить заданную последовательность по убыванию, изменяя элементы последовательности - C++
Прошу помочь в задаче на функции. Задание в приложении

Получить заданное слово, изменяя в исходном слове по одной букве - C++
Ребят, прошу помощи! Есть задача: Дано исходное и конечное слово равной длины. Длина исходных слов не ограничена. Необходимо составить...

Написать программу, которая получает данные из файла, изменяя их любым образом - C++
Всем доброго времени суток. Очень прошу разобраться с заданием. Напишите программу, которая получает данные из файла, изменяет их (любым...

Циклическая программа (при нажатии клавиши повторяет операцию, изменяя данные) - C++
Нужно написать программу, чтобы при каждом повторном нажатии определённой клавиши, программа выполняла какую-либо операцию с изменяющимися...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
30.04.2012, 16:44     Сортировка, не изменяя структуру #21
Цитата Сообщение от nake Посмотреть сообщение
спасибо, при сравнении номера просто введу нужные числа
Ошибки программы надо тщательно задокументировать как её особенности
Строковое сравнение правильно сравнивает числа одинаковой длины, поэтому можно потребовать вводить, например, трёхзначные номера маршрутов, с ведущими нулями, т. е. 001, 015, 327 и т. д.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2012, 18:45     Сортировка, не изменяя структуру
Еще ссылки по теме:

Изменяя место элементов в столбце матрицы, расположить их в соответствии с ростом характеристик - C++
срочно нужна помощь) Характерисикой столбца целочисленной матрицы именнуем сумму модулей его отрицательных нечетных елементов.Изменяя их...

Найти числа, изменяя которые по заданному правилу можно в итоге получить ноль - C++
1.Игрок А объявляет двузначное число от 01 до 99. Игрок В меняет местами его цифры и прибавляет полученное число к сумме его цифр....

Как сделать, чтобы задаваемый текст вращался вокруг своей оси, изменяя цвет? - C++
С графикой увы не работали, но нужно сдать любую работу по графике в C++. Совсем нет времени, чтобы самому вникнуть в тему. Если не...

Составить новый массив, изменяя значения элементов в зависимости от того, отсортирована ли текущая строка - C++
Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если элементы k-й строки матрицы упорядочены по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nake
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 33
30.04.2012, 18:45  [ТС]     Сортировка, не изменяя структуру #22
grizlik78, большое спасибо ещё раз за помощь
Yandex
Объявления
30.04.2012, 18:45     Сортировка, не изменяя структуру
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru