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

Структура "Рабочий". Сортировка - C++

Восстановить пароль Регистрация
 
Nazar199506
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 19
28.05.2014, 21:01     Структура "Рабочий". Сортировка #1
Описать структуру с именем WORKER, содержащую следующие поля:
• фамилия и инициалы работника;
• название занимаемой должности;
• год поступления на работу.
сортировка по году поступления на работу




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
#include<iostream>
using namespace std;
int main()
{
    struct Worker
    {
        char f[25], d[15];
        int r, nom;
        
 
    }a[25];
 
    cout << "vvedit PIB"<<endl;
    int l;
    cin >> l;
    for (int i = 0; i < l; i++)
 
{
    a[i].r = i;
        cout << "vvedit PIB" << endl;
        cin >> a[i].f;
        cout << "vvedit posady " << a[i].f << endl;
        cin >> a[i].d;
        cout << "vvedit pik postyplenia " << a[i].f << endl;
        cin >> a[i].r;
    }
 
    for (int j = 0; j < l - 1; j++)
    {
        for (int i = 0; i < l - 1; i++)
        {
            if (a[i].d > a[i + 1].d)
            {
                int t;
                a[i].d = t;
                a[i].d = a[i + 1].d;
                a[i + 1].d = t;
                int g;
                g = a[i].nom;
                a[i].nom = a[i + 1].nom;
                a[i + 1].nom = g;
            }
            
        }
        if (j == l - 2)
        {
            for (int c = 0; c < l; c++)
                cout << a[a[c].nom].f << "_____" << a[a[c].nom].d << "_____" << a[c].r << endl;
        }
    }
    return 0;
}
Добавлено через 9 минут
ПОМОГИТЕ!!!!

Добавлено через 48 минут
a[i].d = t;
a[i].d = a[i + 1].d;
a[i + 1].d = t;
Error 1 error C2440: '=' : cannot convert from 'int' to 'char [15]' e:\projects c++\fdhgfj\fdhgfj\source.cpp 36 1 fdhgfj
Error 3 error C2440: '=' : cannot convert from 'int' to 'char [15]' e:\projects c++\fdhgfj\fdhgfj\source.cpp 38 1 fdhgfj

такие вот ошибки выбивает
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
28.05.2014, 21:10     Структура "Рабочий". Сортировка #2
a[i].d у Вас char[].
Компилятор не знает, как можно a[i].d присвоить целое число
Nazar199506
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 19
28.05.2014, 21:27  [ТС]     Структура "Рабочий". Сортировка #3
что делать?

Добавлено через 19 секунд
zss, Что делать?
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
28.05.2014, 21:33     Структура "Рабочий". Сортировка #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ

Не по теме:

Цитата Сообщение от zss Посмотреть сообщение
как можно a[i] присвоить целое число
и наоборот, как из целого сделать структуру.
Вы, наверно, не заметили. Там обращение не к a[i], а к a[i].d. То есть к элементу структуры, а не к самой структуре.



Цитата Сообщение от Nazar199506 Посмотреть сообщение
C++
1
2
3
4
5
struct Worker
* * {
* * * * char f[25], d[15];
* * * * int r, nom;
}a[25];
вы определяете 25 элементов структуры типа Worker
C++
1
2
3
4
int t;
a[i].d = t;
a[i].d = a[i + 1].d;
a[i + 1].d = t;
создаете целочисленную переменную int и пытаетесь присвоить её массиву char d[15];
Эти строки равносильны такому:
C++
1
2
3
int t;
char d[15]
d=t;
О чем вам и сообщает компилятор:
Bash
1
cannot convert from 'int' to 'char [15]'
Вот так будет работать:
C++
1
2
3
4
char t[15];
strcpy(a[i].d,t);
strcpy(a[i].d,a[i + 1].d);
strcpy(a[i + 1].d,t);
Не знаю, что вы хотите сделать, но думаю вам нужно это:
C++
1
2
3
4
char temp[15];
strcpy(temp,a[i].d);         // temp = a[i].d
strcpy(a[i].d,a[i + 1].d);   // a[i].d = a[i+1].d
strcpy(a[i + 1].d,temp);     // a[i+1].d = temp;
Добавлено через 5 минут
Цитата Сообщение от Nazar199506 Посмотреть сообщение
сортировка по году поступления на работу
Если вы в d хотите хранить только год, и можно изменить структуру, то измените структуру исходной программы на такую и все:
C++
1
2
3
4
5
6
7
8
    struct Worker
    {
        char f[25];
        int d;
        int r, nom;
        
 
    }a[25];
и никаких манипуляций не понадобится, а в коде так:
C++
1
2
3
4
int temp;
temp = a[i].d
a[i].d = a[i+1].d
a[i+1].d = temp;
Nazar199506
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 19
29.05.2014, 17:11  [ТС]     Структура "Рабочий". Сортировка #5
TrueBit, спасибо.
Yandex
Объявления
29.05.2014, 17:11     Структура "Рабочий". Сортировка
Ответ Создать тему
Опции темы

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