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

Отсортировать и вывести на экран массив структур - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.76
kryasan
-22 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 38
29.11.2011, 20:46     Отсортировать и вывести на экран массив структур #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
 
 
#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <stdio.h> 
using namespace std; 
 
int _tmain(int argc, _TCHAR* argv[])
{   
        setlocale (0,"Rus");
        struct rabotniki
        {
                char fio[20];
                int number;
                char pol[1];
                int godrozhd;
                int godpost;
        };
        struct rabotniki rab[9];
        int n;
        cout<<"Введите количество работников:";
        cin>>n;
        for(int i=0;i<n;i++)
        {
                cout<<"Введите ФИО "<<i+1<<" рабочего:";
                cin>>rab[i].fio;
                {
                        cout<<"Введите пол :";
                        cin>>rab[i].pol;
                        {
                                cout<<"Год рождения:";
                                cin>>rab[i].godrozhd;
                                {
                                        cout<<"Год поступления на работу:";
                                        cin>>rab[i].godpost;
                                }
                        }
                }
 
        }
        for(int i=0;i<n;n++)         
 
         for(int j=0;j<n;j++)
 
                  if(rab[j].godrozhd<rab[j+1].godrozhd)    
 
                  {int temp=rab[j].godrozhd;
 
                 rab[j].godrozhd=rab[j+1].godrozhd;
 
                  rab[j].godrozhd=temp;
        }
    for(int i=0;i<n;i++)
                cout<<rab[i].godrozhd<<"\t"<<endl;
                   
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 20:46     Отсортировать и вывести на экран массив структур
Посмотрите здесь:

C++ заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран
C++ Отсортировать массив по возрастанию и вывести на экран
Прочитать из файла массив, отсортировать, результат вывести на экран. C++
C++ Вывести на экран отсортированный массив структур.
C++ Отсортировать массив структур по возрастанию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.11.2011, 20:57     Отсортировать и вывести на экран массив структур #2
 Комментарий модератора 
Рекомендации участникам форума при создании тем
Прежде чем задать вопрос, воспользуйтесь поиском - возможно ответ на него уже был дан ранее.


http://www.cyberforum.ru/cpp-beginne...ead388989.html
kryasan
-22 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 38
30.11.2011, 22:50  [ТС]     Отсортировать и вывести на экран массив структур #3
там написано на си а мне надо на с++

Добавлено через 4 часа 41 минуту
..up)
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
30.11.2011, 22:56     Отсортировать и вывести на экран массив структур #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <iostream>
#include <algorithm>
 
struct rabotniki
{
   char fio[20];
   int number;
   char pol[1];
   int godrozhd;
   int godpost;
   
};
 
bool grc (const rabotniki& r1, const rabotniki& r2) {return r1.godrozhd > r2.godrozhd; } 
        
int main(){    
    rabotniki r[9];
    //здесь ввод
    std::sort(r, r + 9, grc);
}
kryasan
-22 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 38
01.12.2011, 11:11  [ТС]     Отсортировать и вывести на экран массив структур #5
можно плиз небольшие комментарии, а то че то я ничего не понял.
А как потом отсортированную структуру вывести на экран?
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
01.12.2011, 12:06     Отсортировать и вывести на экран массив структур #6
а как учили?
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.12.2011, 12:24     Отсортировать и вывести на экран массив структур #7
Цитата Сообщение от kryasan Посмотреть сообщение
А как потом отсортированную структуру вывести на экран?
1)
C++
1
copy(r, r + 9, ostream_iterator<rabotniki>(cout, "\n"));
2)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   friend ostream& operator<<(ostream& os, const rabotniki& ob)
   {
       os << ob.fio      << "  "
       .....
       .....
 
          return os;
   }
 
      //main
       for (int i = 0; i < 9; ++i)
       {
            cout << r[i];
       }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 14:30     Отсортировать и вывести на экран массив структур
Еще ссылки по теме:

Отсортировать массив и вывести на экран (массивы и указатели на указатели) C++
Отсортировать массив по сумме баллов студентов и вывести на экран вместе с их фамилиями C++
Отсортировать массив структур согласно заданию C++

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

Или воспользуйтесь поиском по форуму:
kryasan
-22 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 38
01.12.2011, 14:30  [ТС]     Отсортировать и вывести на экран массив структур #8
вот, сделал проще)
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
#include "stdafx.h"
#include <cmath>
#include <cstring>
#include <iostream>
#include <cstdio>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{   
    setlocale (0,"Rus");
    struct rabotniki
    {
        char fio[20];
        int number;
        char pol[1];
        int godrozhd;
        int godpost;
    }rab[9];
    rabotniki temp;
    int n;
cout<<"Введите количество работников : ";
cin>>n;
for (int i=0;i<n;i++)
{
   cout<<"Введите ФИО " <<i+1<< " рабочего : ";
   cin>>rab[i].fio;
    
   cout<<"Введите пол: ";
        cin>>rab[i].pol;
        
   cout<<"Год рождения : ";
           cin>>rab[i].godrozhd;
    
  cout<<"Год поступления на работу : ";
        cin>>rab[i].godpost;
                        
}
    for(int i=0;i<n;i++)         
 
         for(int j=0;j<n-1;j++)
 
                  if(rab[j].godrozhd<rab[j+1].godrozhd)    
 
                  { temp=rab[j];
 
                 rab[j]=rab[j+1];
 
                  rab[j+1]=temp;
        }
    printf("-----------------------------------------------------------\n");
    printf("|        ФИО       | Пол | Год рождения | Год поступления |\n");
    printf("-----------------------------------------------------------\n");
 
    for(int i=0;i<n;i++)
    
    cout<<rab[i].fio<<"\t"<<rab[i].pol<<"\t"<<rab[i].godrozhd<<"\t"<<rab[i].godpost<<"\t"<<"\n-----------------------------------------------------------"<<endl;
    cout<<endl<<endl;
           
    return 0;
}
Yandex
Объявления
01.12.2011, 14:30     Отсортировать и вывести на экран массив структур
Ответ Создать тему
Опции темы

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