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

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

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

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

02.05.2010, 16:28. Просмотров 1046. Ответов 5
Метки нет (Все метки)

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;
}
Имеется такая програмка. Она записывает значения фамилии, дохода и расхода в файл. Имеется так же разность которая считается путем вычитания расхода из дохода. Значения разности нужно сортировать в порядке возрастания. Не пойму как сделать....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2010, 16:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка массива структур (C++):

Сортировка массива структур через сортировку массива указателей - C++
Ошибка возникает в функции void sort(student **ppStud, int k, char ch). Кто видит ошибку - помогите, пожалуйста. Код программы: ...

Сортировка массива структур... - C++
Здравствуйте! Не могли бы вы выложить примеры или кинуть ссылочку на интересную статью по сортировке массива структур. Имеется массив...

Сортировка массива структур - C++
Есть файл с текстом(this is spartaaaaaa!), нужно посчитать количество повторений каждого символа, вывести все это в консоль, затем...

Сортировка массива структур - C++
имеется структура struct { char lastname, firstname; unsigned int math, inf, phys; }rat, temp; необходимо отсортировать...

Сортировка массива структур - C++
Имеется структура : struct Data_base { string team_name; string city; int scored_goals; int missed_goals;...

Сортировка массива структур - C++
Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи...

5
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 строки в код
1
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 минут
с этим разобрался. но он перемещает только разность а мне нужно чтобы всю структуру
0
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;
                }
1
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];
0
SashaPinsk
39 / 37 / 2
Регистрация: 27.12.2009
Сообщений: 73
04.05.2010, 18:35 #6
опечатка
надо конечно employee[j+dp]=employee[j];
0
04.05.2010, 18:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2010, 18:35
Привет! Вот еще темы с ответами:

Сортировка массива структур - C++
Дана структура WORKER и массив из 10 стркутур. Нужно 1)сортировать список 2) вывести на экран рабочих чей стаж больше числа введённого с...

Сортировка массива структур - C++
Господа есть массив структур, необходимо его отсортировать по полю name с помощью функции qsort. Вроде как написал без ошибок, но...

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

Сортировка массива структур - C++
void sortByFio() { int i,j; char temp; char temp2; char temp3; for (i = 0; i&lt;len; i++) { for ( i = j+1; j&lt;len; j++) { ...


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

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

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