Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
1

Структуры в С++

19.06.2011, 02:37. Показов 1511. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер, не могли бы кто нибудь мне помочь написать код программы, следующего задания:
Описать структуру с именем ZNAK содержащие следующие поля:
-фамилия и имя
-знак зодиака
-дата рождения(массив из 3-х чисел)
Написать программу выполняющую следующие действия:
-ввод с клавиатуры данных в массив состоящих из 8 элементов типа ZNAK; записи должны быть упорядочены по знакам зодиака
-вывод на экран информации о людях родившихся в месяц значения которого введено с клавиатуры
-если таких нет выдать на дисплей соответствующее сообщение.

Буду очень признательна!!!!!!!!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2011, 02:37
Ответы с готовыми решениями:

Помещение структуры в вектор, удаление структуры, изменение элементов структуры
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный...

Функция внутри структуры использует указатель, как поле этой структуры
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё.
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об...

Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры)
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом...

15
31 / 31 / 16
Регистрация: 30.11.2010
Сообщений: 81
19.06.2011, 22:58 2
Ну как-то так))
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
#include <iostream>
 
using namespace std;
 
const int MAX_NAME = 10;
const int MAX_SIGN = 8;
const int MAX_DATE = 3;
 
struct sign{
    char *last_name;
    char *first_name;
    char *sign_of_zodiac;
    int *date_of_birth;
};
 
void bubble_sort(sign*);
 
int main(){
    sign* s1 = new sign[MAX_SIGN];
    int month;
    for (int i=0; i<MAX_SIGN; i++){
        cout << "\nEnter last name: ";
        (s1+i)->last_name = new char[MAX_NAME];
        cin >> (s1+i)->last_name;
        (s1+i)->first_name = new char[MAX_NAME];
        cout << "Enter first name: ";
        cin >> (s1+i)->first_name;
        cout << "Enter sign of zodiac: ";
        (s1+i)->sign_of_zodiac = new char[MAX_NAME];
        cin >> (s1+i)->sign_of_zodiac;
        cout << "Enter date of birth: ";
        (s1+i)->date_of_birth = new int[MAX_DATE];
        for (int j=0; j<MAX_DATE; j++){
            cin >> *(((s1+i)->date_of_birth)+j);
        }
    }
    
    bubble_sort(s1);
    
    for (int i=0; i<MAX_SIGN; i++){
        cout << "\nLast name is: ";
        cout << (s1+i)->last_name << endl;
        cout << "First name is: ";
        cout << (s1+i)->first_name << endl;
        cout << "Sign of zodiac is: ";
        cout << (s1+i)->sign_of_zodiac << endl;
        cout << "Date of birth is: ";
        for (int j=0; j<MAX_DATE; j++){
            cout << *(((s1+i)->date_of_birth)+j) << ".";
        }
    }
 
    cout << "Enter month: ";
    cin >> month;
 
    for (int i=0; i<MAX_SIGN; i++){
        if(month==*((s1+i)->date_of_birth+1)){
            cout << "\nLast name is: ";
            cout << (s1+i)->last_name << endl;
            cout << "First name is: ";
            cout << (s1+i)->first_name << endl;
            cout << "Sign of zodiac is: ";
            cout << (s1+i)->sign_of_zodiac << endl;
            cout << "Date of birth is: ";
            for (int j=0; j<MAX_DATE; j++){
                cout << *(((s1+i)->date_of_birth)+j) << ".";
            }
        }
        else{
            cout << "Find no matches.";
            exit(1);
        }
    }
    
    return 1;
} 
 
void bubble_sort(sign* s){
    for (int i=0; i<MAX_SIGN-1; i++){
        for (int j=i+1; j<MAX_SIGN; j++){
            if (stricmp(((s+i)->sign_of_zodiac),((s+j)->sign_of_zodiac))>0){
                swap(((s+i)->sign_of_zodiac),((s+j)->sign_of_zodiac));
            }
        }
    }
}
0
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
20.06.2011, 00:18  [ТС] 3
Vergil111, спасибо ,но у меня выходит 2 ошибки, по поводу переменных i,j
error C2065: 'i' : undeclared identifier
Я убрала int везде перед данными переменными и объявила их вначале( т.к в прошлой программе ошибка была в этом ) , но сейчас мне все равно выдает ошибку, в чем дело не подскажите?
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.06.2011, 00:22 4
Цитата Сообщение от nuri Посмотреть сообщение
Я убрала int везде перед данными переменными и объявила их вначале
зачем вы это сделали? верните все как было!
0
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
20.06.2011, 00:25  [ТС] 5
Maxwe11, хорошо, я вернула и выходят следующие ошибки:
error C2374: 'i' : redefinition; multiple initialization
see declaration of 'i'
'i' : redefinition; multiple initialization
see declaration of 'i'
Error executing cl.exe.
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.06.2011, 00:27 6
какая у вас версия студии?
0
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
20.06.2011, 00:28  [ТС] 7
может не получается из за того что у меня программа Microsoft Visual C++
может к ней код чуть чуть другой

Добавлено через 1 минуту
Maxwe11, Microsoft Visual C++ 6.0
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.06.2011, 00:29 8
deleted
0
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
20.06.2011, 00:32  [ТС] 9
Maxwe11, ошибки такие: D:\книги\l4\lab_6_17\6_17.cpp(41) : error C2374: 'i' : redefinition; multiple initialization
D:\книги\l4\lab_6_17\6_17.cpp(22) : see declaration of 'i'
D:\книги\l4\lab_6_17\6_17.cpp(57) : error C2374: 'i' : redefinition; multiple initialization
D:\книги\l4\lab_6_17\6_17.cpp(22) : see declaration of 'i'
Error executing cl.exe.

lab_6_17.exe - 2 error(s), 0 warning(s)
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.06.2011, 00:33 10
а так?
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
#include <iostream>
 
using namespace std;
 
const int MAX_NAME = 10;
const int MAX_SIGN = 8;
const int MAX_DATE = 3;
 
struct sign{
        char *last_name;
        char *first_name;
        char *sign_of_zodiac;
        int *date_of_birth;
};
 
void bubble_sort(sign*);
 
int main(){
        sign* s1 = new sign[MAX_SIGN];
        int month, i;
        for (i=0; i<MAX_SIGN; i++){
                cout << "\nEnter last name: ";
                (s1+i)->last_name = new char[MAX_NAME];
                cin >> (s1+i)->last_name;
                (s1+i)->first_name = new char[MAX_NAME];
                cout << "Enter first name: ";
                cin >> (s1+i)->first_name;
                cout << "Enter sign of zodiac: ";
                (s1+i)->sign_of_zodiac = new char[MAX_NAME];
                cin >> (s1+i)->sign_of_zodiac;
                cout << "Enter date of birth: ";
                (s1+i)->date_of_birth = new int[MAX_DATE];
                for (int j=0; j<MAX_DATE; j++){
                        cin >> *(((s1+i)->date_of_birth)+j);
                }
        }
        
        bubble_sort(s1);
        
        for (i=0; i<MAX_SIGN; i++){
                cout << "\nLast name is: ";
                cout << (s1+i)->last_name << endl;
                cout << "First name is: ";
                cout << (s1+i)->first_name << endl;
                cout << "Sign of zodiac is: ";
                cout << (s1+i)->sign_of_zodiac << endl;
                cout << "Date of birth is: ";
                for (int j=0; j<MAX_DATE; j++){
                        cout << *(((s1+i)->date_of_birth)+j) << ".";
                }
        }
 
        cout << "Enter month: ";
        cin >> month;
 
        for (i=0; i<MAX_SIGN; i++){
                if(month==*((s1+i)->date_of_birth+1)){
                        cout << "\nLast name is: ";
                        cout << (s1+i)->last_name << endl;
                        cout << "First name is: ";
                        cout << (s1+i)->first_name << endl;
                        cout << "Sign of zodiac is: ";
                        cout << (s1+i)->sign_of_zodiac << endl;
                        cout << "Date of birth is: ";
                        for (int j=0; j<MAX_DATE; j++){
                                cout << *(((s1+i)->date_of_birth)+j) << ".";
                        }
                }
                else{
                        cout << "Find no matches.";
                        exit(1);
                }
        }
        
        return 1;
} 
 
void bubble_sort(sign* s){
        for (int i=0; i<MAX_SIGN-1; i++){
                for (int j=i+1; j<MAX_SIGN; j++){
                        if (stricmp(((s+i)->sign_of_zodiac),((s+j)->sign_of_zodiac))>0){
                                swap(((s+i)->sign_of_zodiac),((s+j)->sign_of_zodiac));
                        }
                }
        }
}
0
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
20.06.2011, 00:41  [ТС] 11
Maxwe11, огромное спасибо !!! так работает, а что вы изменили? и если не трудно не могли бы вы скинуть результат который у вас получается?
0
31 / 31 / 16
Регистрация: 30.11.2010
Сообщений: 81
20.06.2011, 00:46 12
Более чем странно. У меня Microsoft visual studio 2010 - все прекрасно работает. Попробовал также запустить в Codeblocks, пришлось подключить заголовочные файлы
C++
1
2
#include <stdlib.h>
#include <string.h>
и все заработало. Укажите пожалуйста конкретно строчки, в которых компилятор выдает ошибку.

Добавлено через 1 минуту
а все, уже не нужно=)
0
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
20.06.2011, 00:51  [ТС] 13
Vergil111, у меня версия чуть другая и уже все работает) спасибо)

Добавлено через 5 минут
не могли бы вы мне скинуть результат который у вас получается
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.06.2011, 00:55 14
Цитата Сообщение от nuri Посмотреть сообщение
не могли бы вы мне скинуть результат который у вас получается
влом вводить)
0
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
20.06.2011, 01:35  [ТС] 15
Maxwe11,
не могли бы вы объяснить что означает
C++
1
2
3
4
5
6
7
8
9
void bubble_sort(sign* s){
        for (int i=0; i<MAX_SIGN-1; i++){
                for (int j=i+1; j<MAX_SIGN; j++){
                        if (stricmp(((s+i)->sign_of_zodiac),((s+j)->sign_of_zodiac))>0){
                                swap(((s+i)->sign_of_zodiac),((s+j)->sign_of_zodiac));
                        }
                }
        }
}
почему перед этим мы ставим return 1, а не return 0,как обычно?
0
31 / 31 / 16
Регистрация: 30.11.2010
Сообщений: 81
20.06.2011, 15:53 16
Функция main имеет тип возвращаемого значения int, таким образом что мы вернем 0, что 1 - не важно. Но со стороны стандарта C++ вы правы( Стандарт С++ предусматривает, что функция main() возвращает 0 по умолчанию, если оператор return не использован явно)), так что каюсь=).

Функция bubble_sort является одной из вариаций сортировки методом пузырька.

http://ru.wikipedia.org/wiki/%... 0%BE%D0%BC

В данном случае мы упорядочиваем указатели на строки char* sign_of_zodiac
0
20.06.2011, 15:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2011, 15:53
Помогаю со студенческими работами здесь

Вывод структуры, строка как элемент структуры
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения;...

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла?
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen (&quot;file.txt&quot;,...

Оператор if и структуры. Возвращение структуры из функции
Здравствуйте, имеется такая вот функция. void InputStructEmployee (int StructSize) { ...

Структуры. Работа с файлами, содержащими структуры
2) Дана совокупность сведений, каждое из которых состоит из следующих рекви-зитов: фамилия и...


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

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