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

Пример структуры для изучения - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.82
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
11.10.2013, 22:25     Пример структуры для изучения #1
Пожалуйста,приведите пример структуры для разбора,сначала пробовал смотреть чужие темы на эту тему на форуме,но там у всех со своими ошибками,что побудило создать свою тему чем запоминать чужие ошибки.
Например что должно быть в структуре:
1, Описать структуру с именем Dota2, содержащую следующие поля:
- Имя героя;
- Основная характеристика;
- Его роль.
2. Следующие действия:
- ввод с клавиатуры данных в массив, состоящий из десяти структур типа Dota2; записи должны быть размещены по алфавиту.
- вывод на дисплей имена героев, чья основная характеристика введенная с клавиатуры;
- если таких героев нет, вывести на дисплей соответствующее сообщение.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
11.10.2013, 22:50     Пример структуры для изучения #2
Посмотрите здесь
http://ci-plus-plus-snachala.ru/?p=30
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
12.10.2013, 11:42  [ТС]     Пример структуры для изучения #3
Ваша ссылка помогла,но не во всём.
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
// 1, Описать структуру с именем WORKER, содержащую следующие поля:
// - фамилия и инициалы работника;
// - название занимаемой должности;
// - год поступления на работу.
// 2. Написать программу, выполняющую следующие действия:
// - ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту.
// - вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;
// - если таких работников нет, вывести на дисплей соответствующее сообщение.
 
#include "stdafx.h"
#include "iostream"
#include <locale>
#include <conio.h>
#include <string>
using namespace std;
 
struct WORKER
{
    int F;
    int I;
    int O;
    int Name;
    int Year;
};
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    const int size = 10;
    int i,b,c = 0;
    WORKER a[size];
    for ( i = 0; i < size; i++ )
    {
        cout << "Введите Ф.И.О. "
             << i + 1
             << "-ого работника "
             << endl;
        cout << "Фамилия: ";
        cin >> a[i].F;
        cout << "Имя: ";
        cin >> a[i].I;
        cout << "Отчество ";
        cin >> a[i].O;
        cout << endl;
        cout << "Его должность: ";
        cin >> a[i].Name;
        cout << endl;
        cout << "Год поступления на работу: ";
        cin >> a[i].Year;
        cout << endl;
    }
    cout << "Введите стаж работы";
    cin >> b;
    cout << endl;
    for ( i = 0; i < size; i++)
    {
        if ( b < a[i].Year )
        {
            cout << a[i].F
                 << " ";
            c++;
        }
        else if ( i == size - 1 && c > 0 )
        {
            cout << "Работников с более высоким стажом нет.";
        }
    }
 
system("pause");
return 0;
}
При вводе текста на Русском или Английском языке,вся программа прокручивается без последующих запросов ввода(cin)
При цифрах всё в порядке.
К тому же не понятно как сделать сортировку по алфавиту.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
12.10.2013, 12:20     Пример структуры для изучения #4
Цитата Сообщение от StriBog45 Посмотреть сообщение
При цифрах всё в порядке.
Ну у тебя только цифры можно вводить int стоить, что бы можно вводить строку нужно ставить char*
C++
1
2
3
4
5
6
7
8
struct WORKER
{
    int F;
    int I;
    int O;
    int Name;
    int Year;
};
Наверно нужно как то так сделать:
C++
1
2
3
4
5
6
7
8
struct WORKER
{
    char F[30];
    char I[30];
    char O[30];
    int Name;
    int Year;
};
Добавлено через 4 минуты
Цитата Сообщение от StriBog45 Посмотреть сообщение
К тому же не понятно как сделать сортировку по алфавиту.
Просто сравнивай первую букву, операциями > <, ну например как то так сортировку по F
if(a[i].F[0]>a[j].F[0]) то меняешь местами.
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
12.10.2013, 13:59  [ТС]     Пример структуры для изучения #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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "stdafx.h"
#include "iostream"
#include <locale>
#include <conio.h>
#include <string>
using namespace std;
 
struct WORKER
{
    char F;
    char I;
    char O;
    char Name;
    int Year;
};
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    const int size = 10;
    int i,b,c = 0;
    WORKER a[size];
    for ( i = 0; i < size; i++ )
    {
        cout << "Введите Ф.И.О. "
             << i + 1
             << "-ого работника "
             << endl;
        cout << "Фамилия: ";
        cin >> a[i].F;
        cout << "Имя: ";
        cin >> a[i].I;
        cout << "Отчество ";
        cin >> a[i].O;
        cout << endl;
        cout << "Его должность: ";
        cin >> a[i].Name;
        cout << endl;
        cout << "Год поступления на работу: ";
        cin >> a[i].Year;
        cout << endl;
    }
    cout << "Введите стаж работы";
    cin >> b;
    cout << endl;
    for ( i = 0; i < size; i++)
    {
        if ( b < a[i].Year )
        {
            cout << a[i].F
                 << " ";
            c++;
        }
        else if ( i == size - 1 && c > 0 )
        {
            cout << "Работников с более высоким стажом нет.";
        }
    }
 
system("pause");
return 0;
}
Теперь при вводе одной буквы,программа работает. При вводе двух букв в Фамилии,строка Имя пропускается и переходит сразу на Отчество. Если Вводить три и более букв,то сразу вся программа прокручивается

Добавлено через 2 минуты
Цитата Сообщение от ninja2 Посмотреть сообщение
Просто сравнивай первую букву, операциями > <, ну например как то так сортировку по F
if(a[i].F[0]>a[j].F[0]) то меняешь местами.
Если первые буквы одинаковы,то должны сравниваться вторые,вторые одинаковы и сравниваются третие... и.т.д
И неизвестно сколько должно быть сравнений. Нужен какой-то цикл
Tsin
 Аватар для Tsin
419 / 395 / 108
Регистрация: 30.12.2012
Сообщений: 1,086
Записей в блоге: 2
Завершенные тесты: 3
12.10.2013, 14:01     Пример структуры для изучения #6
StriBog45, тогда Вам следует начать с чего-то более простого, чем структуры
Цитата Сообщение от StriBog45 Посмотреть сообщение
При вводе двух букв в Фамилии,строка Имя пропускается
Так происходит, потому что типы переменных в структуре - char-ы. Они хранят по одному символу.
При вводе нескольких символов вы заполняете сразу несколько полей по одному символу в каждый.
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
12.10.2013, 15:31  [ТС]     Пример структуры для изучения #7
Цитата Сообщение от Tsin Посмотреть сообщение
Так происходит, потому что типы переменных в структуре - char-ы. Они хранят по одному символу.
При вводе нескольких символов вы заполняете сразу несколько полей по одному символу в каждый.
Разве нет способа для пользователя вводить целые имена(Володя,Эдик... т.п.)?

Добавлено через 36 минут
Есть такая мысль,что можно задать массив для каждого заполнения,и каждую букву приравнивать к B[ i + 1 ],но как он это будет считывать...
Tsin
 Аватар для Tsin
419 / 395 / 108
Регистрация: 30.12.2012
Сообщений: 1,086
Записей в блоге: 2
Завершенные тесты: 3
12.10.2013, 18:08     Пример структуры для изучения #8
Цитата Сообщение от StriBog45 Посмотреть сообщение
Разве нет способа для пользователя вводить целые имена
Конечно есть! можно сделать поля либо фиксированного размера, как сказал вам ninja2, либо типа указателя на char.
C++
1
2
3
char F[30];    
//либо 
char* F;
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
12.10.2013, 18:24  [ТС]     Пример структуры для изучения #9
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
// 1, Описать структуру с именем WORKER, содержащую следующие поля:
// - фамилия и инициалы работника;
// - название занимаемой должности;
// - год поступления на работу.
// 2. Написать программу, выполняющую следующие действия:
// - ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту.
// - вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;
// - если таких работников нет, вывести на дисплей соответствующее сообщение.
 
#include "stdafx.h"
#include "iostream"
#include <locale>
#include <conio.h>
#include <string>
using namespace std;
 
struct WORKER
{
    char F[30];
    char I[30];
    char O[30];
    char Name[30];
    int Year;
};
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    const int size = 10;
    int i,b,c = 0;
    WORKER a[size];
    for ( i = 0; i < size; i++ )
    {
        cout << "Введите Ф.И.О. "
             << i + 1
             << "-ого работника "
             << endl;
        cout << "Фамилия: ";
        cin >> a[i].F;
        cout << "Имя: ";
        cin >> a[i].I;
        cout << "Отчество ";
        cin >> a[i].O;
        cout << endl;
        cout << "Его должность: ";
        cin >> a[i].Name;
        cout << endl;
        cout << "Год поступления на работу: ";
        cin >> a[i].Year;
        cout << endl;
    }
    cout << "Введите стаж работы ";
    cin >> b;
    cout << endl;
    for ( i = 0; i < size; i++)
    {
        if ( b < 2013 - a[i].Year )
        {
            cout << a[i].F
                 << " ";
            c++;
        }
        else if ( i == size - 1 && c > 0 )
        {
            cout << "Работников с более высоким стажом нет.";
        }
    }
 
system("pause");
return 0;
}
Вот такой код получился в данный момент. Работает,но при выводе русских слов получается "ыЧждлг"....
Не корректно выводит русский.
Так же остался вопросов с сортировкой по алфавиту. Как и говорил ранее: если первые буквы одинаковы,то должны сравниваться вторые,вторые одинаковы и сравниваются третьи... и.т.д.
И неизвестно сколько должно быть сравнений. Нужен какой-то цикл
Tsin
 Аватар для Tsin
419 / 395 / 108
Регистрация: 30.12.2012
Сообщений: 1,086
Записей в блоге: 2
Завершенные тесты: 3
13.10.2013, 00:06     Пример структуры для изучения #10
StriBog45, проблему кракозябр можно попробовать решить так :
C++
1
2
3
#include <Windows.h>;
 
SetConsoleCP(1251);
Сравнение строк в лексикографическом порядке выглядит так :
C++
1
2
3
4
5
6
7
8
9
10
#include <string.h>;
 
char F1[30] = "Иванов";
char F2[30] = "Сидоров";
 
int result = strcmp(F1, F2);
 
// result < 0 - значит, F1 < F2
// result = 0 - значит, F1 = F2
// result > 0 - значит, F1 > F2
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
13.10.2013, 09:07  [ТС]     Пример структуры для изучения #11
Цитата Сообщение от Tsin Посмотреть сообщение
#include <string.h>;
char F1[30] = "Иванов";
char F2[30] = "Сидоров";
int result = strcmp(F1, F2);
// result < 0 - значит, F1 < F2
// result = 0 - значит, F1 = F2
// result > 0 - значит, F1 > F2
Если я правильно понял,то
#include <string.h> нужен для strcmp
F1,F2 входные данные
result = strcmp тот самый цикл который сравнивает алфавит
result < 0 значит, что всё стоит по алфавиту
result = 0 значит, что слова полностью одинаковы
result > 0 значит, что в первом слове буквы алфавита более поздние чем во втором,их надо менять местами.

Попытался это сделать методом пузырька,но программе он не нравится...
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
// 1, Описать структуру с именем WORKER, содержащую следующие поля:
// - фамилия и инициалы работника;
// - название занимаемой должности;
// - год поступления на работу.
// 2. Написать программу, выполняющую следующие действия:
// - ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту.
// - вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;
// - если таких работников нет, вывести на дисплей соответствующее сообщение.
 
#include "stdafx.h"
#include "iostream"
#include <locale>
#include <conio.h>
#include <string.h>    // Для алфавита,strcmp
#include <Windows.h>   // Для SetConsoleCP(1251);
using namespace std;
 
struct WORKER
{
    char F[30];
    char I[30];
    char O[30];
    char Name[30];
    int Year;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    const int size = 10;
    int i,b,c = 0;
    char* d;
    WORKER a[size];
    for ( i = 0; i < size; i++ )
    {
        cout << "Введите Ф.И.О. "
             << i + 1
             << "-ого работника "
             << endl;
        cout << "Фамилия: ";
        cin >> a[i].F;
        cout << "Имя: ";
        cin >> a[i].I;
        cout << "Отчество ";
        cin >> a[i].O;
        cout << endl;
        cout << "Его должность: ";
        cin >> a[i].Name;
        cout << endl;
        cout << "Год поступления на работу: ";
        cin >> a[i].Year;
        cout << endl;
    }
 
    for ( i = 0; i < size; i++)
    {
        int result = strcmp(a[i].F, a[i + 1].F);
        if ( a[i].F > a[i + 1].F )
        {
            d = a[i].F;
            a[i].F = a[i + 1].F;
            a[i + 1] = d;
        }
    }
    cout << "Список рабочих: "
         << endl;
    for ( i = 0; i < size; i++)
    {
        cout << a[i].F
             << endl;
    }
 
    cout << "Введите стаж работы ";
    cin >> b;
    cout << endl;
    SetConsoleCP(1251); // Переводит крякозябру на русский язык
    for ( i = 0; i < size; i++)
    {
        if ( b < 2013 - a[i].Year )
        {
            cout << a[i].F
                 << " ";
            c++;
        }
        else if ( i == size - 1 && c > 0 )
        {
            cout << "Работников с более высоким стажом нет.";
        }
    }
 
system("pause");
return 0;
}
Tsin
 Аватар для Tsin
419 / 395 / 108
Регистрация: 30.12.2012
Сообщений: 1,086
Записей в блоге: 2
Завершенные тесты: 3
13.10.2013, 12:04     Пример структуры для изучения #12
StriBog45, если я тебя правильно понял, то тебе надо сравнивать фамилии у разных структур.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Пусть a - массив из N структур.
 
//Цикл до N-2, потому что последними будут сравниваться a[N-2] и a[N-1] элементы,
//a[N-1] - последний. Значит, цикл обойдет все пары
for(int i = 0; i < N - 2; i++) 
{
    char[30] temp;
    //Сортировка по возрастанию, от 'А' до 'Я'
    if(strcmp(a[i].F, a[i + 1].F) < 0) 
    {
        strcpy(temp, a[i].F);
        strcpy(a[i].F, a[i + 1].F);
        strcpy(a[i + 1].F, temp);
    }
}
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
13.10.2013, 15:07  [ТС]     Пример структуры для изучения #13
Цитата Сообщение от Tsin Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
for(int i = 0; i < N - 2; i++) 
{
    char[30] temp;
    //Сортировка по возрастанию, от 'А' до 'Я'
    if(strcmp(a[i].F, a[i + 1].F) < 0) 
    {
        strcpy(temp, a[i].F);
        strcpy(a[i].F, a[i + 1].F);
        strcpy(a[i + 1].F, temp);
    }
}
Error: идентификатор "temp" не определён.
Tsin
 Аватар для Tsin
419 / 395 / 108
Регистрация: 30.12.2012
Сообщений: 1,086
Записей в блоге: 2
Завершенные тесты: 3
13.10.2013, 17:41     Пример структуры для изучения #14
C++
1
2
//Да, я забыл. Задай какое-нибудь начальное значение для temp, например
char[30] temp = " ";
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
13.10.2013, 17:51  [ТС]     Пример структуры для изучения #15
И всё равно идентификатор не определён,ещё и точку с запятой требует перед temp
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
// 1, Описать структуру с именем WORKER, содержащую следующие поля:
// - фамилия и инициалы работника;
// - название занимаемой должности;
// - год поступления на работу.
// 2. Написать программу, выполняющую следующие действия:
// - ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту.
// - вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;
// - если таких работников нет, вывести на дисплей соответствующее сообщение.
 
#include "stdafx.h"
#include "iostream"
#include <locale>
#include <conio.h>
#include <string.h>    // Для алфавита,strcmp
#include <Windows.h>   // Для SetConsoleCP(1251);
using namespace std;
 
struct WORKER
{
    char F[30];
    char I[30];
    char O[30];
    char Name[30];
    int Year;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    const int size = 10;
    int i,b,c = 0;
    char* d;
    WORKER a[size];
    for ( i = 0; i < size; i++ )
    {
        cout << "Введите Ф.И.О. "
             << i + 1
             << "-ого работника "
             << endl;
        cout << "Фамилия: ";
        cin >> a[i].F;
        cout << "Имя: ";
        cin >> a[i].I;
        cout << "Отчество ";
        cin >> a[i].O;
        cout << endl;
        cout << "Его должность: ";
        cin >> a[i].Name;
        cout << endl;
        cout << "Год поступления на работу: ";
        cin >> a[i].Year;
        cout << endl;
    }
 
 
    for(int i = 0; i < N - 2; i++) 
 
    {    
        char[30] temp = " ";
        if(strcmp(a[i].F, a[i + 1].F) < 0)     
        {        
            strcpy(temp, a[i].F);        
            strcpy(a[i].F, a[i + 1].F);        
            strcpy(a[i + 1].F, temp);    
        }
    }
    cout << "Список рабочих: "
         << endl;
    for ( i = 0; i < size; i++)
    {
        cout << a[i].F
             << endl;
    }
 
    cout << "Введите стаж работы ";
    cin >> b;
    cout << endl;
    SetConsoleCP(1251); // Переводит крякозябру на русский язык
    for ( i = 0; i < size; i++)
    {
        if ( b < 2013 - a[i].Year )
        {
            cout << a[i].F
                 << " ";
            c++;
        }
        else if ( i == size - 1 && c > 0 )
        {
            cout << "Работников с более высоким стажом нет.";
        }
    }
 
system("pause");
return 0;
}
Tsin
 Аватар для Tsin
419 / 395 / 108
Регистрация: 30.12.2012
Сообщений: 1,086
Записей в блоге: 2
Завершенные тесты: 3
13.10.2013, 18:01     Пример структуры для изучения #16
StriBog45, аа. Ясно почему так. Где у тебя N определен? Вместо N поставь size.

Не по теме:

Будь внимательней к подсказкам на форуме. Здесь тебе могут подсказать пример решения твоей задачи. Не надо просто вставлять ответ к себе в программу. Сначала проанализируй что делает код, который тебе подсказали, а потом уже используй его, подставляя названия своих переменных)

StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
13.10.2013, 18:49  [ТС]     Пример структуры для изучения #17
Цитата Сообщение от Tsin Посмотреть сообщение
Вместо N поставь size.
Что-то я не совсем понимаю о каком N речь... В коде такового нету...
Tsin
 Аватар для Tsin
419 / 395 / 108
Регистрация: 30.12.2012
Сообщений: 1,086
Записей в блоге: 2
Завершенные тесты: 3
13.10.2013, 18:52     Пример структуры для изучения #18
StriBog45, 56 строка
StriBog45
5 / 5 / 2
Регистрация: 03.09.2013
Сообщений: 81
13.10.2013, 19:23  [ТС]     Пример структуры для изучения #19
Исправил N, но всё равно temp не определён...
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
// 1, Описать структуру с именем WORKER, содержащую следующие поля:
// - фамилия и инициалы работника;
// - название занимаемой должности;
// - год поступления на работу.
// 2. Написать программу, выполняющую следующие действия:
// - ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту.
// - вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;
// - если таких работников нет, вывести на дисплей соответствующее сообщение.
 
#include "stdafx.h"
#include "iostream"
#include <locale>
#include <conio.h>
#include <string.h>    // Для алфавита,strcmp
#include <Windows.h>   // Для SetConsoleCP(1251);
using namespace std;
 
struct WORKER
{
    char F[30];
    char I[30];
    char O[30];
    char Name[30];
    int Year;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    const int size = 10;
    int i,b,c = 0;
    char* d;
    WORKER a[size];
    for ( i = 0; i < size; i++ )
    {
        cout << "Введите Ф.И.О. "
             << i + 1
             << "-ого работника "
             << endl;
        cout << "Фамилия: ";
        cin >> a[i].F;
        cout << "Имя: ";
        cin >> a[i].I;
        cout << "Отчество ";
        cin >> a[i].O;
        cout << endl;
        cout << "Его должность: ";
        cin >> a[i].Name;
        cout << endl;
        cout << "Год поступления на работу: ";
        cin >> a[i].Year;
        cout << endl;
    }
 
 
    for(int i = 0; i < size - 2; i++)
    {    
        char[30] temp = " ";
        if(strcmp(a[i].F, a[i + 1].F) < 0)     
        {        
            strcpy(temp, a[i].F);        
            strcpy(a[i].F, a[i + 1].F);        
            strcpy(a[i + 1].F, temp);    
        }
    }
    cout << "Список рабочих: "
         << endl;
    for ( i = 0; i < size; i++)
    {
        cout << a[i].F
             << endl;
    }
 
    cout << "Введите стаж работы ";
    cin >> b;
    cout << endl;
    SetConsoleCP(1251); // Переводит крякозябру на русский язык
    for ( i = 0; i < size; i++)
    {
        if ( b < 2013 - a[i].Year )
        {
            cout << a[i].F
                 << " ";
            c++;
        }
        else if ( i == size - 1 && c > 0 )
        {
            cout << "Работников с более высоким стажом нет.";
        }
    }
 
system("pause");
return 0;
}
Вот она эта противная часть...
C++
1
2
3
4
5
6
7
8
9
10
    for(int i = 0; i < size - 2; i++)
    {    
        char[30] temp = " ";
        if(strcmp(a[i].F, a[i + 1].F) < 0)     
        {        
            strcpy(temp, a[i].F);        
            strcpy(a[i].F, a[i + 1].F);        
            strcpy(a[i + 1].F, temp);    
        }
    }
p.s. Знаю что уже замучил.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2013, 19:28     Пример структуры для изучения
Еще ссылки по теме:

Сайты для изучения с++ C++
C++ Пособие для изучения С++
Приведите пример, как можно связать знания консольного C++ (где алгоритмы, структуры, массивы) с WinAPI? C++

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

Или воспользуйтесь поиском по форуму:
Tsin
 Аватар для Tsin
419 / 395 / 108
Регистрация: 30.12.2012
Сообщений: 1,086
Записей в блоге: 2
Завершенные тесты: 3
13.10.2013, 19:28     Пример структуры для изучения #20
StriBog45, тьфу. Это моя промашка. Надо так
C++
1
char temp[30];
То есть размер после имени переменной, а не после типа.
Yandex
Объявления
13.10.2013, 19:28     Пример структуры для изучения
Ответ Создать тему
Опции темы

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