Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 14
1

Исправить сортировку

28.10.2017, 18:47. Показов 321. Ответов 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
76
77
78
79
80
81
82
83
84
85
86
#include<stdafx.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
 
const int n = 10;
int size = 0;
typedef struct BotSad{
        double nomer;// номер участка
        char name[n];// наименование растения
        char sort[n];// сорт
        char group[n];// биологическая группа
        int data[3];// дата посадки
        }BSad;
 
BSad sad[100]; // Оглашение масива структур
 
void input(int size) {
    for(int i = 0; i < size; i++) {
        do {
             printf("\nNomer uchastka: ");
             scanf("%lf", &sad[i].nomer);
            printf("\nNazvanie rasteniya: ", i + 1);
            scanf("%s", &sad[i].name);
        }while(!strcmp(sad[i].name, ""));// выполняется  пока строчка не пуста202
        do {
            printf("\nSort: ");
            scanf("%s", &sad[i].sort);
        }while(!strcmp(sad[i].sort, ""));
        do {
            printf("\nGroup: ");
            scanf("%s", &sad[i].group);
        }while(!strcmp(sad[i].group, ""));
        printf("\nDen\' posadki: ");
        scanf("%d", &sad[i].data[0]);
        printf("\nMesyatc posadki: ");
        scanf("%d", &sad[i].data[1]);
        printf("\nGod posadki: ");
        scanf("%d", &sad[i].data[2]);   
    }
}
 
void show(int size){
    printf("|--------|----------------|----------|---------------|----------|\n");
    printf("|  Nomer |    Rastenie    |   Sort   |  Biol grupa   |   Data   |\n");
    printf("|--------|----------------|----------|---------------|----------|\n");
    for(int i = 0; i < size; i++) {
    printf("|%-8.2lf|%-16s|%-10s|%-15s|%-2d.%-2d.%-2d|\n", 
            sad[i].nomer, sad[i].name, sad[i].sort, sad[i].group, sad[i].data[0], sad[i].data[1], sad[i].data[2]);}
    printf("|--------|----------------|----------|---------------|----------|\n");
    }
 
void sortByNomer(int size) { //Сортировка методом выбора
    double tmp;
    int i, j, pos;
    for(i = 0; i < size; ++i) 
    { 
        pos = i; 
        tmp = sad[i].nomer;
        for(j = i + 1; j < size; ++j) 
        {
            if (sad[j].nomer < tmp) 
            {
               pos = j; 
               tmp = sad[j].nomer; 
            }
        }
        sad[pos].nomer = sad[i].nomer; 
        sad[i].nomer = tmp; 
    }      
}  
 
int main (void){
printf("Skolko adresov budet v strukture? ");
scanf("%d", &size);
input(size);
show(size);
sortByNomer(size);
printf("\n\n Posle sortirovki:\n");
show(size);
 
getchar ();
getchar ();
return 0;
}
У меня отсортировался только первый столбик с номерами участков, а остальные данные остались на месте. Помогите исправить программу, чтобы сортировались полностью все строчки таблицы.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2017, 18:47
Ответы с готовыми решениями:

Исправить сортировку
Добрый вечер, друг написал код, в нем сортировка идет по пункту назначения, а надо по возрастанию...

Исправить сортировку структуры
#pragma hdrstop #pragma argsused #include &lt;tchar.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...

Исправить сортировку подсчетом
Всем привет! Есть программа сортировки подсчетом #include &lt;fstream&gt; #include &lt;iostream&gt; using...

Сортировку вставками меняем на Пирамидальную сортировку и на Сортировку подсчётом
Здравствуйте. Я не как не могу разобраться.Помогите. У меня есть листинг сортировки вставками: ...

1
6987 / 6027 / 2736
Регистрация: 14.04.2014
Сообщений: 25,792
28.10.2017, 20:13 2
Потому что ты переставляешь только номера, а надо целиком структуры.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2017, 20:13

Подскажите как эту сортировку переделать в сортировку по алфавиту?
Подскажите как эту сортировку переделать в сортировку по алфавиту?? vector&lt;std::pair&lt;string,...

Заменить сортировку массива на сортировку ссылками
Код работает. Необходимо заменить в M_F_3 сортировку по массиву на сортировку через ссылки. ...

Сортировку вставками меняем на сортировку слиянием
Код программы выполняет сортировку массива вставками. Как сюда вставить код сортировки массива...

Как исправить сортировку?
Как исправить сортировку? В данном случае сортирует по вес, имени и дату рождения: public...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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