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

Сортировка массива структур - C++

Восстановить пароль Регистрация
 
BigBrain
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 27
02.05.2010, 16:28     Сортировка массива структур #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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <string.h>
#include <fstream>
#include <tchar.h>
//---------------------------------------------------------------------------
 
#pragma argsused
struct emp
{
    char name[15];
    int dohod;
    int rash;
    int raznost;
};
 
int main()
{
//setlocale(LC_ALL,"Russian");
 ofstream out("d://file.txt");
 struct emp employee[20];
 int i,n,g,min;
 printf("Kol-vo elementov: ");
 scanf("%d", &n);
 for(i=0;i<n;i++)
    {
    printf("Familiya: ");
    scanf("%s",employee[i].name);
    printf("Vvedite dohod: ");
    scanf("%d", &employee[i].dohod);
    printf("Vvedite rashod: ");
    scanf("%d", &employee[i].rash);
    employee[i].raznost=employee[i].dohod-employee[i].rash; // разность
    }
   out << employee[i].name;out << "\n";
    out << employee[i].dohod;out << "\n";
    out << employee[i].rash;out << "\n\n";
    out << employee[i].raznost;
    out.close();
return 0;
}
Имеется такая програмка. Она записывает значения фамилии, дохода и расхода в файл. Имеется так же разность которая считается путем вычитания расхода из дохода. Значения разности нужно сортировать в порядке возрастания. Не пойму как сделать....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2010, 16:28     Сортировка массива структур
Посмотрите здесь:

Сортировка массива структур C++
C++ Сортировка массива структур
C++ Сортировка массива структур
Сортировка массива структур C++
Сортировка массива структур C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SashaPinsk
 Аватар для SashaPinsk
39 / 37 / 2
Регистрация: 27.12.2009
Сообщений: 73
02.05.2010, 18:31     Сортировка массива структур #2
C++
1
2
3
4
5
6
7
8
9
int j, buffer, dp;
for(dp=n/2; dp>0; dp/=2)
    for(i=dp; i<n; i++)
        for(j=i-dp; j>=0 && employee[j].raznost>employee[j+dp].raznost; j-=dp)
        {
            buffer=employee[j+dp].raznost;
            employee[j+dp].raznost=employee[j].raznost;
            employee[j].raznost=buffer;
        }
Нужно вставить эту сортировку после 37 строки в код
BigBrain
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 27
02.05.2010, 19:27  [ТС]     Сортировка массива структур #3
Цитата Сообщение от SashaPinsk Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
int j, buffer, dp;
for(dp=n/2; dp>0; dp/=2)
    for(i=dp; i<n; i++)
        for(j=i-dp; j>=0 && employee[j].raznost>employee[j+dp].raznost; j-=dp)
        {
            buffer=employee[j+dp].raznost;
            employee[j+dp].raznost=employee[j].raznost;
            employee[j].raznost=buffer;
        }
Нужно вставить эту сортировку после 37 строки в код
Спасибо!
Код мнемного исправлен там была не правильно операторная скобка. А тут куда? О_о
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <string.h>
#include <fstream>
#include <tchar.h>
//---------------------------------------------------------------------------
 
#pragma argsused
struct emp
{
    char name[15];
    int dohod;
    int rash;
    int raznost;
};
int main()
{
//setlocale(LC_ALL,"Russian");
 ofstream out("d://file.txt");
 emp employee[20];
 int i,n,g;
 printf("Kol-vo elementov: ");
 scanf("%d", &n);
 for(i=0;i<n;i++)
    {
    printf("Familiya: ");
    scanf("%s",employee[i].name);
    printf("Vvedite dohod: ");
    scanf("%d", &employee[i].dohod);
    printf("Vvedite rashod: ");
    scanf("%d", &employee[i].rash);
    employee[i].raznost=employee[i].dohod-employee[i].rash; // разность
    out << employee[i].name;out << "\n";
    out << employee[i].dohod;out << "\n";
    out << employee[i].rash;out << "\n\n";
  //    out << employee[i].raznost;
    }
    out.close();
}
//---------------------------------------------------------------------------
Добавлено через 38 минут
с этим разобрался. но он перемещает только разность а мне нужно чтобы всю структуру
SashaPinsk
 Аватар для SashaPinsk
39 / 37 / 2
Регистрация: 27.12.2009
Сообщений: 73
03.05.2010, 00:36     Сортировка массива структур #4
А чтобы структуры сортировала надо так:
C++
1
2
3
4
5
6
7
8
9
10
int j, dp;
emp buffer;
for(dp=n/2; dp>0; dp/=2)
        for(i=dp; i<n; i++)
                for(j=i-dp; j>=0 && employee[j].raznost>employee[j+dp].raznost; j-=dp)
                {
                        buffer=employee[j+dp];
                        employee[j+dp].raznost=employee[j];
                        employee[j]=buffer;
                }
BigBrain
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 27
04.05.2010, 05:39  [ТС]     Сортировка массива структур #5
Цитата Сообщение от SashaPinsk Посмотреть сообщение
А чтобы структуры сортировала надо так:
C++
1
2
3
4
5
6
7
8
9
10
int j, dp;
emp buffer;
for(dp=n/2; dp>0; dp/=2)
        for(i=dp; i<n; i++)
                for(j=i-dp; j>=0 && employee[j].raznost>employee[j+dp].raznost; j-=dp)
                {
                        buffer=employee[j+dp];
                        employee[j+dp].raznost=employee[j];
                        employee[j]=buffer;
                }
[BCC32 Error] emp.cpp(50): E2034 Cannot convert 'emp' to 'int'
на строке employee[j+dp].raznost=employee[j];
SashaPinsk
 Аватар для SashaPinsk
39 / 37 / 2
Регистрация: 27.12.2009
Сообщений: 73
04.05.2010, 18:35     Сортировка массива структур #6
опечатка
надо конечно employee[j+dp]=employee[j];
Yandex
Объявления
04.05.2010, 18:35     Сортировка массива структур
Ответ Создать тему
Опции темы

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