Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nadia Trofimova
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 25
#1

Описать структуру с именем ZNAK - C++

02.12.2013, 21:19. Просмотров 862. Ответов 6
Метки нет (Все метки)

Здравствуйте! Поставлена такая задача:
Описать структуру с именем ZNAK, содержащую следующие поля:
• фамилия, имя;
• знак Зодиака;
• день рождения (структура из трех полей).
Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из n элементов типа ZNAK;
• вывод данных массива структур на экран;
• сортировку записей по датам дней рождения;
• поиск информации о человеке по фамилии (передается параметром); если такого нет, выдать соответствующее сообщение.

Соображения по этому поводу:
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
#include <stdio.h>
#include <iostream>
#include <time.h>
#include <string>
 
using namespace std;
 
 
 
struct znak
{
char* name;
char* zodiac;
int bday[3];
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int n=8;
    
char* s;
    int tmp;
    
    znak book[n];
    
    for (int i = 0; i < n; i++)
    {
        cout << "Введите Ф.И.О" << endl;
        cin >> book[i].name;
        cout << "Введите знак зодиака"<< endl;
        cin >> book[i].zodiac;
        for (int j = 0; j<3; j++)
        {
            cout << "Введите дату рождения"<<j+1<<"-ого человека"<< endl;
            cin >> book[i].bday[j];
        }
    }
    for (int i=n-1; i > n; i--){
        for (int j = 0; j<3; j++){
        if (book[i].bday[j]>book[i].bday[j+1]) 
        {
            tmp = book[i].bday[j];
            book[i].bday[j] = book[i].bday[j+1];
            book[i].bday[j] = tmp;
            }
        }
    }
 
    cout << "Введите Ф.И.О. которое хотите вывести:" << endl;
     cin >> s;
     for (int i = 0; i < n; i++) {
                if (s == book[i].name) {
                    cout <<book[i].name << "\n" << endl;
                    cout <<book[i].zodiac << "\n" << endl;
                    for (int j = 0; j < n; j++){
                            cout << book[i].bday[j] << "\n" << endl;
                    }
                }
                else 
                    cout << "Таких нет." << endl;
     }
 
    system("pause");
}
Была бы благодарна за указание на ошибки, особенно проблема есть с переменной s... Задача, вроде, типичная, но к сожалению никак не пойму её до конца. После того, как разберусь с кодом, разобью на функции...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 21:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Описать структуру с именем ZNAK (C++):

Описать структуру с именем ZNAK - C++
1. Описать структуру с именем ZNAK, содержащую следующие поля: • NAME — фамилия, имя; • ZODIAC — знак Зодиака; • BDAY — день...

Описать структуру с именем ZNAK - C++
начала писать структуру, вторая часть не выходит. вот задание: 1.Описать структуру с именем ZNAK, содержащую поля: имя,знак...

Описать структуру с именем ZNAK - C++
Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя, знак зодиака, дата рождения (массив из трёх чисел). Написать...

Описать структуру с именем Znak - C++
1.Описать структуру с именем Znak,содержащую поля фамилия и имя знак зодиака день рождения(массив из 3х чисел) 2.Ввод с клавиатуры...

Описать структуру с именем ZNAK - C++
Пожалуйста помогите!!!! Никак не получается,надо на С++ Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия,...

Описать структуру с именем ZNAK - C++
Дорогие программисты здравствуйте ,я в отчаянии , который день я ломаю голову как же построить код этой программы :( Описать структуру с...

6
Alex5
1086 / 747 / 116
Регистрация: 12.04.2010
Сообщений: 1,907
02.12.2013, 22:02 #2
char* name;
Если используются указатели (char*), то необходимо new[] и delete[].
Другой вариант - вместо char* использовать char[]
C++
1
2
const int MAX = 100;
char name[MAX] = {};
C++
1
2
 // if (s == book[i].name)  // Здесь ошибка.
 if ( strcmp(s, book[i].name)  )
Ещё один вариант - вместо char* или char[] использовать std::string.
0
Nadia Trofimova
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 25
03.12.2013, 16:04  [ТС] #3
Благодарю)
0
Alex5
1086 / 747 / 116
Регистрация: 12.04.2010
Сообщений: 1,907
03.12.2013, 16:48 #4
Цитата Сообщение от Alex5 Посмотреть сообщение
if ( strcmp(s, book[i].name) )
Извините. Здесь тоже ошибка.
Если строки равны, то strcmp() возвращает 0. Вот так правильно:
C++
1
if ( strcmp(s, book[i].name) == 0 ) // если строки равны ...
Или так:
C++
1
if ( ! strcmp(s, book[i].name) ) // если строки равны ...
0
Nadia Trofimova
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 25
04.12.2013, 09:37  [ТС] #5
Благодарю!)

Добавлено через 15 часов 17 минут
Такс, ну теперь вопрос будет поставлен сложнее)
Снова нужна помощь.
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include<iostream>
#include<cstring>
 
using namespace std;
 
struct date
{
    int day;
    int month;
    int year;
};
 
 
 
 
struct ZNAK
{
    char* name;
    char* zodiac;
    date bday;
};
 
 
 
 
ZNAK*Mem(int n)
{
    ZNAK* book;
    book = new ZNAK [n];
    return book;
}
 
void In_mas_struct (ZNAK*&book,int&n)
{
 
    for (int i = 0; i < n; i++)
    {
        cout << "Введите Ф.И.О" << endl;
        cout <<book+i*sizeof ZNAK<< endl;
        cin >> book[i].name;
        cout << "Введите знак зодиака"<< endl;
        cin >> book[i].zodiac;
 
 
        cout << "Введите дату рождения"<<i<<"-ого человека"<< endl;
        cin >> book[i].bday.day;
        cin >> book[i].bday.month;
        cin >> book[i].bday.year;
 
    }
}
 
void Out_mas_struct(ZNAK*&book,int&n)
{
    for (int i = 0; i < n; i++)
    {
        cout << " Ф.И.О" << endl;
        cout <<book+i*sizeof ZNAK<< endl;
        cout << book[i].name;
        cout << "Знак зодиака"<< endl;
        cout<< book[i].zodiac;
 
 
        cout << "Дата рождения"<<i<<"-ого человека"<< endl;
        cout<< book[i].bday.day;
        cout<< book[i].bday.month;
        cout<< book[i].bday.year;
 
    }
}
 
void Search(ZNAK*&book,int&n, char* s,ZNAK*&book1,int&n1)
{
    int j=0;
    n1=0;
    for (int i = 0; i < n; i++) {
        if ( strcmp(s, book[i].name)  )
        {   cout <<book[i].name << "\n" << endl;
        cout <<book[i].zodiac << "\n" << endl;
 
 
        cout << book[i].bday.day << "\n" << endl;
        cout << book[i].bday.month << "\n" << endl;
        cout << book[i].bday.year << "\n" << endl;
 
        book1[n1]=book[i];
        n1++;
        }
    }
 
 
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int N=4;
    int n;
    char * s;
    int n1;
    ZNAK*book;
    ZNAK*book1;
 
    do{
 
            cout << "Введите n пределах N("<< N <<"):"  << endl;
            cin >> n;
 
        } while(n<=0 || n>N);
 
 
    
 
    Mem(n);
    In_mas_struct (book,n);
    Out_mas_struct(book,n);
 
 
    cout << "Введите Ф.И.О. которое хотите вывести:" << endl;
    cin >> s;
    
    Search(book,n,s,book1,n1);
        if(n1==0)
            cout << "Таких данный нет" << endl;
            
        return 0;
}
Проблема с переменной s, и с book.
Функцию удаления памяти ещё не успела добавить)
0
Nadia Trofimova
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 25
04.12.2013, 22:06  [ТС] #7
Спасибо за подборку, но меня всё-таки интересует именно моя проблема. У меня структура, и для реализации прораммы мне нужно использовать функции и динмаическую память)
0
04.12.2013, 22:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 22:06
Привет! Вот еще темы с ответами:

Описать структуру с именем ZNAK - C++
Добрый вечер. Прошу помощи с программой: Описать структуру с именем ZNAK, содержащую следующие поля: NAME – фамилия, имя; ZODIAC –...

Описать структуру с именем Znak - C++
Здравствуйте. Помогите пожалуйста изменить сортировку а коде. С сортировки по фамилии на сортировку по дате. Заранее спасибо. Вот...

Описать структуру с именем ZNAK - C++
Описать структуру с именем ZNAK, содержащую следущие поля:NAME - фамилия, имя; ZODIAC - знак зодиака;BDAY - день рождения(массив из трех...

Описать структуру с именем ZNAK - C++
Кто нибудь может написать такую задачу? Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя; знак зодиака; дата...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru