0 / 0 / 0
Регистрация: 03.05.2011
Сообщений: 16
1

Очередная сортировка структуры

12.06.2011, 09:34. Показов 640. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подобных вопросов были тонны, и тонны еще будут.
Есть прога, кривая и написанная собственноручно. Написать ее ума хватило, а вот чтоб откомпилировать...
Описание: Имеется файл со структурой. Научить прогу писать, дополнять и внятно выводить результат чтения сего файла получилось. На сортировке все застопорилось - не пойму никак, где у меня написано не правильно, ибо плоховато понимаю саму механику работы со структурой. За код, приведенный ниже не пинать. Как и всегда в подобных вопросах, все срочно. И спасибо большое всем отписавшимся.

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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct zemlya
{
    char name[25];
    int  S, Sp, Sr, So, Sy, Up, Ur, Uo, Uy;
};
 
void Merge(zemlya *A, int const nA, zemlya *B, int const nB, zemlya *C)
{
     int a(0), b(0);
     while( a+b < nA+nB )
     {
         if( (b>=nB) || ((a<nA) && (strcmp(A[a].name,B[b].name))) )
         {
             C[a+b] = A[a];
             ++a;
         }
         else
         {
             C[a+b] = B[b];
             ++b;
         }
     }
}
 
void MergeSort(zemlya *A, int n)
{
     zemlya t;
     if( n < 2 )
        return;
     if( n == 2 )
     {
        if(strcmp(A[1].name,A[0].name)) {t=A[0]; A[0]=A[1]; A[1]=t; }
            return;
     }
     MergeSort(A, n/2);
     MergeSort(A+n/2, n-n/2);
     zemlya *C;
     Merge(A,n/2, A+n/2,n-n/2, C);
     for(int i=0; i<n; ++i)
        A[i]=C[i];
}
 
void main()
{
    zemlya zl;
    char filename[]="C:\\area.dat";
    char s='\0';
    int SoblP=0, SoblR=0, SoblO=0, SoblY=0, S=0;
    int UoblP=0, UoblR=0, UoblO=0, UoblY=0;
    float UroblP, UroblR, UroblO, UroblY;
    float URp, URr, URo, URy, buff;
    FILE *f;
    clrscr();
    f=fopen(filename,"rb+");
    if(f)
    {
    do
    {
        fflush(stdin);
        printf("\n File suhcestvuet. Chto delat'? \n");
        printf(" 0-sozdat' zanovo \n 1-dobavit' dannie v etu structuru \n 2-otkazat'sya ot vvoda \n");
        s=getche();
        if(s=='0')
        f=fopen(filename,"wb+");
        else
        if(s=='1')
            f=fopen(filename, "ab+");
    }
    while(s!='0' && s!='1' && s!='2');
    if(s!='2')
    {
        do
        {
        fflush(stdin);
        printf("\n Nazvanie rayona: ");                     scanf("%s", &zl.name);
        fflush(stdin);
        printf("\n Plosh'yad', zaseyannaya pshenicey: ");   scanf("%d", &zl.Sp);
        fflush(stdin);
        printf("\n Plosh'yad', zaseyannaya rozhyu: ");      scanf("%d", &zl.Sr);
        fflush(stdin);
        printf("\n Plosh'yad', zaseyannaya ovsom: ");       scanf("%d", &zl.So);
        fflush(stdin);
        printf("\n Plosh'yad', zaseyannaya yachmenem: ");   scanf("%d", &zl.Sy);
        fflush(stdin);
        zl.S=zl.Sp+zl.Sr+zl.So+zl.Sy;
        printf("\n Predidush'iy urozhay pshenici: ");       scanf("%d", &zl.Up);
        fflush(stdin);
        printf("\n Predidush'iy urozhay rzhi: ");           scanf("%d", &zl.Ur);
        fflush(stdin);
        printf("\n Predidush'iy urozhay ovsa: ");           scanf("%d", &zl.Uo);
        fflush(stdin);
        printf("\n Predidush'iy urozhay yachmenya: ");      scanf("%d", &zl.Uy);
        fflush(stdin);
        fwrite(&zl, sizeof(zl),1,f);
        printf("\n Prodolzhit' vvod? [Y/N]: ");
        fflush(stdin);
        s=getchar();
        }
        while(s=='Y' || s=='y');
        fflush(stdin);
    }
        printf("\n File zapolnen. Chto delat'? \n");
        printf(" 0-vivesti statistiku \n 1-prochitat' tablicu \n 2-uiti \n");
        s=getche();
        if (s!='2')
        {
        if (s=='0')
        {
            printf("\n Obshyaya statistika: \n Srednyaya urozhaynost' po rayonam s 1 posevnoy plosh'yadi");
            printf("\n ЪДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДї");
            printf("\n |     Nazvanie rayona     | pshenica |   rozh   |   oves   | yachmen' |");
            printf("\n ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДґ");
            rewind(f);
            while (fread(&zl, sizeof(zl),1,f))
            {
            SoblP=SoblP+zl.Sp;  SoblR=SoblR+zl.Sr;  SoblO=SoblO+zl.So;  SoblY=SoblY+zl.Sy;  S=S+zl.Sp+zl.Sr+zl.So+zl.Sy;
            UoblP=UoblP+zl.Up;  UoblR=UoblR+zl.Ur;  UoblO=UoblO+zl.Uo;  UoblY=UoblY+zl.Uy;
            buff=zl.Up;      URp=buff/zl.Sp;
            buff=zl.Ur;      URr=buff/zl.Sr;
            buff=zl.Uo;      URo=buff/zl.So;
            buff=zl.Uy;      URy=buff/zl.Sy;
            printf("\n |%-25s|%10.4f|%10.4f|%10.4f|%10.4f|",zl.name, URp, URr, URo, URy);
            }
            printf("\n АДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДЩ");
            getch();
            buff=UoblP;     UroblP=buff/SoblP;
            buff=UoblR;     UroblR=buff/SoblR;
            buff=UoblO;     UroblO=buff/SoblO;
            buff=UoblY;     UroblY=buff/SoblY;
            printf("\n Oblastnaya statistika");
            printf("\n ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДї");
            printf("\n |                     | pshenica |   rozh   |   oves   | yachmen' |");
            printf("\n ГДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДґ");
            printf("\n |Sredyaya urozhaynost'|%10.4f|%10.4f|%10.4f|%10.4f|", UroblP, UroblR, UroblO, UroblY);
            printf("\n |Obsh'iy urozhay      |%10d|%10d|%10d|%10d|", UoblP, UoblR, UoblO, UoblY);
            printf("\n АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДЩ");
            printf("\n V oblasti zernovimi zaseyano %d zemli", S);
            getch();
        }
        if (s=='1')
        {
            printf("\n ЪДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДВДДДДДДДДВДДДДДДДДВДДДДДДДДВДДДДДДДДї");
            printf("\n |     Nazvanie rayona     | S / Ur | S / Ur | S / Ur | S / Ur |    S   |");
            printf("\n |                         |pshenica|  rozh  |  oves  |yachmen'|zernovih|");
            printf("\n ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДДДДґ");
            while (fread(&zl, sizeof(zl),1,f))
            {
            printf("\n |%-25s|%3d /%3d|%3d /%3d|%3d /%3d|%3d /%3d|%8d|",zl.name, zl.Sp, zl.Up, zl.Sr, zl.Ur, zl.So, zl.Uo, zl.Sy, zl.Uy, zl.S);
            }
            printf("\n АДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДБДДДДДДДДБДДДДДДДДБДДДДДДДДБДДДДДДДДЩ");
            getch();
        }
        }
    }
    printf ("\n Vi hotite sortirovat' dannie? [Y/N]");
    fflush(stdin);
    s=getche();
    if (s=='Y' || s=='y')
    {
    S=0;
    while (fread(&zl, sizeof(zl),1,f))   S++;
    MergeSort(*zl,S);
    printf("\n ЪДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДВДДДДДДДДВДДДДДДДДВДДДДДДДДВДДДДДДДДї");
    printf("\n |     Nazvanie rayona     | S / Ur | S / Ur | S / Ur | S / Ur |    S   |");
    printf("\n |                         |pshenica|  rozh  |  oves  |yachmen'|zernovih|");
    printf("\n ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДДДДґ");
    for (int i=0;i<S;i++)
    {
        printf("\n |%-25s|%3d /%3d|%3d /%3d|%3d /%3d|%3d /%3d|%8d|",zl.name, zl.Sp, zl.Up, zl.Sr, zl.Ur, zl.So, zl.Uo, zl.Sy, zl.Uy, zl.S);
    }
        printf("\n АДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДБДДДДДДДДБДДДДДДДДБДДДДДДДДБДДДДДДДДЩ");
    }
    fclose(f);
    getch();
}
Чуть не забыл, все на простом С#, без плюсов. И алгоритм сортировки на числовых массивах как часы. Именно в работе со структурой косяки.
0
12.06.2011, 09:34
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.06.2011, 09:34
Ответы с готовыми решениями:

Очередная сортировка пузырьком
Здравствуйте! :) Нашёл я сортировку пузырьком на Википедии: void bubble_sort(int *a, int length) { for (int i = 0; i &lt;=...

Структуры. Сортировка массива структуры
Здравствуйте! В чем моя ошибка?? Нужно отсортировать массив структуры по возрастанию среднего балла?? Делаю это с помощью...

Сортировка Структуры
Помогите пожалуйста, не получается исправить ошибку. Суть: задается кафедра, по этой кафедре сортируются студенты и выводятся по...

4
 Аватар для Mиxaил
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
12.06.2011, 11:21 2
Эта фраза
Цитата Сообщение от Kr1s Посмотреть сообщение
Чуть не забыл, все на простом С#, без плюсов
меня убила...

Не по теме:

C#++ - очень круто


Насчет вашей темы - ищите на форуме, вот есть
1
0 / 0 / 0
Регистрация: 03.05.2011
Сообщений: 16
12.06.2011, 11:31  [ТС] 3
Спасибо, а про плюсы - шутка юмора же)
0
 Аватар для Mиxaил
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
12.06.2011, 11:33 4
Я про то, что нет C# с плюсами и без, есть просто C, C++, C#
0
0 / 0 / 0
Регистрация: 03.05.2011
Сообщений: 16
12.06.2011, 12:06  [ТС] 5
Mиxaил, ты - кэп...
0
12.06.2011, 12:06
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2011, 12:06
Помогаю со студенческими работами здесь

Сортировка структуры
Второй день бьюсь с сортировкой структур, покажу код, входные и выходные данные: struct TZap{ char Name; char...

Сортировка структуры
Есть структура struct v{ string one; string two; int three; }; Подскажите как отсортировать массив структур по полю...

Сортировка структуры
Отсортировать структуру по желанию пользователя. 1. Вывести на экран книги в алфавитном порядке с указанием авторов, 2. Число книг...

сортировка структуры
есть очередь. в ней элемент int gdsr (год сооружения). надо отсортировать по возрастанию. как это сделать? #include...

Структуры(сортировка)
есть программа с описание структуры......вбиваем начальный маршрут(точка отправки) и конечный(точка прибытия), а также его номер........ЭТА...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией через Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru