6 / 6 / 3
Регистрация: 03.09.2013
Сообщений: 81
1

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

11.10.2013, 22:25. Показов 14739. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пожалуйста,приведите пример структуры для разбора,сначала пробовал смотреть чужие темы на эту тему на форуме,но там у всех со своими ошибками,что побудило создать свою тему чем запоминать чужие ошибки.
Например что должно быть в структуре:
1, Описать структуру с именем Dota2, содержащую следующие поля:
- Имя героя;
- Основная характеристика;
- Его роль.
2. Следующие действия:
- ввод с клавиатуры данных в массив, состоящий из десяти структур типа Dota2; записи должны быть размещены по алфавиту.
- вывод на дисплей имена героев, чья основная характеристика введенная с клавиатуры;
- если таких героев нет, вывести на дисплей соответствующее сообщение.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2013, 22:25
Ответы с готовыми решениями:

Какие книги посоветуйте для изучения для изучения STL, C++
Попробовал Страуструп но видимо сложновато пока.

Нужен пример объявления структуры
прошу помощи разобраться любая структура struct human { int age; int height; }; если я...

Легкий пример про структуры
Задача заключается в том чтобы присвоить значения переменной х и всем объектам к которым она имеет...

Игра на Java. Нужен пример для изучения
Я так понял это раздел для программировании на Java SE джава Сони- эриксон то есть. Народ кто...

37
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
11.10.2013, 22:50 2
Посмотрите здесь
http://ci-plus-plus-snachala.ru/?p=30
1
6 / 6 / 3
Регистрация: 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)
При цифрах всё в порядке.
К тому же не понятно как сделать сортировку по алфавиту.
0
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
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]) то меняешь местами.
0
6 / 6 / 3
Регистрация: 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]) то меняешь местами.
Если первые буквы одинаковы,то должны сравниваться вторые,вторые одинаковы и сравниваются третие... и.т.д
И неизвестно сколько должно быть сравнений. Нужен какой-то цикл
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
12.10.2013, 14:01 6
StriBog45, тогда Вам следует начать с чего-то более простого, чем структуры
Цитата Сообщение от StriBog45 Посмотреть сообщение
При вводе двух букв в Фамилии,строка Имя пропускается
Так происходит, потому что типы переменных в структуре - char-ы. Они хранят по одному символу.
При вводе нескольких символов вы заполняете сразу несколько полей по одному символу в каждый.
1
6 / 6 / 3
Регистрация: 03.09.2013
Сообщений: 81
12.10.2013, 15:31  [ТС] 7
Цитата Сообщение от Tsin Посмотреть сообщение
Так происходит, потому что типы переменных в структуре - char-ы. Они хранят по одному символу.
При вводе нескольких символов вы заполняете сразу несколько полей по одному символу в каждый.
Разве нет способа для пользователя вводить целые имена(Володя,Эдик... т.п.)?

Добавлено через 36 минут
Есть такая мысль,что можно задать массив для каждого заполнения,и каждую букву приравнивать к B[ i + 1 ],но как он это будет считывать...
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
12.10.2013, 18:08 8
Цитата Сообщение от StriBog45 Посмотреть сообщение
Разве нет способа для пользователя вводить целые имена
Конечно есть! можно сделать поля либо фиксированного размера, как сказал вам ninja2, либо типа указателя на char.
C++
1
2
3
char F[30];    
//либо 
char* F;
1
6 / 6 / 3
Регистрация: 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;
}
Вот такой код получился в данный момент. Работает,но при выводе русских слов получается "ыЧждлг"....
Не корректно выводит русский.
Так же остался вопросов с сортировкой по алфавиту. Как и говорил ранее: если первые буквы одинаковы,то должны сравниваться вторые,вторые одинаковы и сравниваются третьи... и.т.д.
И неизвестно сколько должно быть сравнений. Нужен какой-то цикл
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
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
1
6 / 6 / 3
Регистрация: 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;
}
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
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);
    }
}
1
6 / 6 / 3
Регистрация: 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" не определён.
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
13.10.2013, 17:41 14
C++
1
2
//Да, я забыл. Задай какое-нибудь начальное значение для temp, например
char[30] temp = " ";
1
6 / 6 / 3
Регистрация: 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;
}
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
13.10.2013, 18:01 16
StriBog45, аа. Ясно почему так. Где у тебя N определен? Вместо N поставь size.

Не по теме:

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

1
6 / 6 / 3
Регистрация: 03.09.2013
Сообщений: 81
13.10.2013, 18:49  [ТС] 17
Цитата Сообщение от Tsin Посмотреть сообщение
Вместо N поставь size.
Что-то я не совсем понимаю о каком N речь... В коде такового нету...
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
13.10.2013, 18:52 18
StriBog45, 56 строка
1
6 / 6 / 3
Регистрация: 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. Знаю что уже замучил.
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
13.10.2013, 19:28 20
StriBog45, тьфу. Это моя промашка. Надо так
C++
1
char temp[30];
То есть размер после имени переменной, а не после типа.
1
13.10.2013, 19:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2013, 19:28
Помогаю со студенческими работами здесь

Посоветуйте пожалуйста книгу или пример для изучения PHP+MySQL+HTML
Есть задача написать базу данных в связке PHP+MySQL+HTML. Планируется, что с базой будут работать...

Пример структуры программы
Помогите... Скиньте, пожалуйста, структуру программы, в которой много различных процедур.. Шапку и...

Пример структуры сайта на MVC
Здравствуйте. У меня понятие MVC несколько &quot;расплывчатое&quot;, хотелось бы увидеть на примере, в...

Запись структуры в бинарный файл , пример
Здравствуйте . Есть ли у кого то пример программы записи структуры в бинарный файл, и вывод...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru