Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Aquilla
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 8
1

Структура. Определите, сколько человек проживают на одной улице

01.11.2017, 07:46. Просмотров 797. Ответов 7
Метки нет (Все метки)

Данные (Опишите запись АНКЕТА и поместите в нее следующую информацию: Ф.И.О.(фамилия, имя, отчество), адрес (улица, номер дома, номер квартиры), пол, возраст.) Структуру я описал, все понятно. Как реализовать вот это: "Определите, сколько человек проживают на одной улице." Не могу составить цикл, которые сравнил бы данные структуры и сам находил улицу, на которой проживает много людей. (Хотя могу сделать так, ввел определенную улицу и он бы находил, сколько всего людей на ней живет). Помогите, пожалуйста, с циклом.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2017, 07:46
Ответы с готовыми решениями:

Структура "Работники фирмы", найти проживающих на заданной улице.
Дан массив данных о работниках фирмы: ФИО и адрес (улица, дом, квар- тира). Во второй массив...

Сколько дней прожил человек
Помогите пожалуйста бедной студентке! Задание такое : Определить сколько дней прожил человек от...

Подсчитать, сколько человек не допущено ко второму экзамену
При поступлении в вуз абитуриенты, получившие «двойку» на первом экзамене, ко второму не...

Структура "Человек". Блочный ввод-вывод / С++ для начинающих
Структура "Человек": - фамилия, имя, отчество; - домашний адрес; - номер телефона; - возраст....

Структура "Человек". Найти фамилии женатых, у которых нет детей
1. Известны фамилии 12-ти людей, их семейное положение (женат\не женат) и наличие детей...

7
Юля_программист
484 / 142 / 44
Регистрация: 04.05.2012
Сообщений: 677
Записей в блоге: 1
01.11.2017, 10:03 2
Aquilla, покажите, то что Вы уже сделали.
1
Aquilla
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 8
01.11.2017, 12:23  [ТС] 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
71
72
73
74
75
76
77
#include <iostream>
#include <conio.h>
#include <cstdio>
#include <windows.h>
#include <cstring>
 
using namespace std;
 
struct anketa
{
    char surname[15];       //ГґГ*ìèëèÿ
    char adress[15];        //óëèöГ*
    char gender[1]; 
    int age[2];        
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "rus");
    int n;
    cout << "Ââåäèòå êîë-ГўГ® Г*Г*êåòèðóåìûõ: ";
    cin >> n;
 
    anketa *mas = new anketa[n];
 
    for (int i = 0; i < n; i++)
    {
        cout << i + 1 << "-Гї Г*Г*ГЄГҐГІГ*: " << endl;
        cout << "Г”Г*ìèëèÿ: ";
        scanf("\n");
        cin.getline(mas[i].surname, 15);
        cout << "Ïîë(Г¬/Г¦): ";
        cin.getline(mas[i].gender, 1);
        cout << "ÓëèöГ*: ";
        cin.getline(mas[i].adress, 15);
        cout << "ÂîçðГ*Г±ГІ: ";
        scanf("%d", &mas[i].age);
        cout << endl;
    }
 
   
 int count = 1;
    for (int i = 0; i < n; ++i)
    {
        anketa* node = &mas[i];
        for (int ii = i + 1; ii < n; ++ii)
        {
            if (!strcmp(node->adress, mas[ii].adress))
                ++count;
            
 
 
            
        }
    }
     int child = 1;
    int vozrast[0];
    
    for (int i = 0; i < n; ++i)
            {
                if (mas[i].age<vozrast) // èëè ГЄГ*ГЄ ГІГ*Г¬ áóäåò ìóæñêîé ïîë
                    child=child+1;
                else {
                }
                    
                
            }
    cout << "Âñåãî æèâóò Гў îäГ*îì äîìå: " << count << endl;
    cout << "Detei: " << child << endl;
 
 
 
    system("pause");
    return 0;
}
Добавлено через 39 минут
Юля_программист, выше

Добавлено через 2 минуты
Юля_программист, вообще у меня задание немного другое, мне просто сделать цикл, сравнил бы данные структуры и сам находил улицу, на которой проживает много людей. Дальше я сам сделаю)
0
Kuzia domovenok
2349 / 2085 / 494
Регистрация: 25.03.2012
Сообщений: 7,449
Записей в блоге: 1
01.11.2017, 12:36 4
ищется улица с максимумом людей?
0
Aquilla
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 8
01.11.2017, 13:20  [ТС] 5
Получается что так
0
Kuzia domovenok
2349 / 2085 / 494
Регистрация: 25.03.2012
Сообщений: 7,449
Записей в блоге: 1
01.11.2017, 16:03 6
Лучший ответ Сообщение было отмечено Aquilla как решение

Решение

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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
/*********много копипасты по АВЛ деревьям и методам вставки и поиска в них****************/
struct Node
{
    char* data;
    int cnt=0;
    int h = 0;
    Node* leftChild = 0;
    Node* rightChild = 0;
};
int height(Node* p)
{
    return p ? p->h : 0;
}
void newHeight(Node* p)
{
    int hl = height(p->leftChild);
    int hr = height(p->rightChild);
    p->h = (hl>hr ? hl : hr) + 1;
}
Node* rotateRight(Node* top)
{
    Node* top2 = top->leftChild;
    top->leftChild = top2->rightChild;
    top2->rightChild = top;
    newHeight(top);
    newHeight(top2);
    return top2;
}
Node* rotateLeft(Node* top)
{
    Node* top2 = top->rightChild;
    top->rightChild = top2->leftChild;
    top2->leftChild = top;
    newHeight(top2);
    newHeight(top);
    return top2;
}
int balance(Node* top)
{
    return height(top->rightChild) - height(top->leftChild);
}
 
Node* reBalance(Node* top)
{
    newHeight(top);
    if (balance(top) == 2)
    {
        if (balance(top->rightChild) < 0)
            top->rightChild = rotateRight(top->rightChild);
        return rotateLeft(top);
    }
    if (balance(top) == -2)
    {
        if (balance(top->leftChild) > 0)
            top->leftChild = rotateLeft(top->leftChild);
        return rotateRight(top);
    }
    return top;
}
Node* insertNode(Node* top, char* word)
{
    if (!top)
    {
        top = new Node;
        top->cnt = 1;
        top->data = word;
        return top;
    }
    int result = strcmp(word, top->data);
    if (result == 0)
    {
        top->cnt++;
        return top;
    }
    else
        if (result<0)
            top->rightChild = insertNode(top->rightChild, word);
        else
            top->leftChild = insertNode(top->leftChild, word);
    return reBalance(top);
}
Node* SearchMax(Node* top)
{
    Node* result = top;
    if (top->leftChild)
    {
        Node* pmax = SearchMax(top->leftChild);
        if (pmax->cnt > result->cnt)
            result = pmax;
    }
    if (top->rightChild)
    {
        Node* pmax = SearchMax(top->rightChild);
        if (pmax->cnt > result->cnt)
            result = pmax;
    }
    return result;
}
/***************собственно анкета**************************/
 
 
struct anketa
{
    char surname[15];       //ГґГ*ìèëèÿ
    char address[15];        //óëèöГ*
    char gender;
    int age;
};
 
int main(){
    int n;
    cout << "input n: ";
    cin >> n;
 
    anketa *mas = new anketa[n];
    for (int i = 0; i < n; i++)
    {
        cout << i + 1 << "-th record: " << endl;
        cin.sync();
        cout << "surname: ";
        cin.getline(mas[i].surname, 15);
        cout << "gender: ";
        cin >> mas[i].gender;
        cin.sync();
        cout << "address: ";
        cin.getline(mas[i].address, 15);
        cout << "age: ";
        cin>>mas[i].age;
        cout << endl;
    }
    Node* AVLtree = NULL;
    Node* maxNode = NULL;
    for (int i = 0; i < n; i++)
        AVLtree = insertNode(AVLtree, mas[i].address);
    if (AVLtree)        maxNode = SearchMax(AVLtree);
    if (maxNode)
    {
        cout << "max address: " << maxNode->data;
        cout << "counted: " << maxNode->cnt << " times" << endl;
    }
 
    system("pause");
    return 0;
}
1
Aquilla
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 8
02.11.2017, 06:10  [ТС] 7
Kuzia domovenok, спасибо большое!! огромное! все работает! Я бы не допер до этого DD
0
Kuzia domovenok
2349 / 2085 / 494
Регистрация: 25.03.2012
Сообщений: 7,449
Записей в блоге: 1
02.11.2017, 06:20 8
Цитата Сообщение от Aquilla Посмотреть сообщение
Kuzia domovenok, спасибо большое!! огромное! все работает! Я бы не допер до этого DD
Да я бы и сам не допёр считанные часы наад. Тут такая канитель на АВЛ-деревьях замешана, о которых я только вчера нагуглил, такая, что ваш препод без 100 грамм не разберётся. Код вызовет резонные вопросы типа "А нафига вы в задании <сделать сраную структуру>, которые тысячами в неделю решаются на этом форуме, вдруг написали велосипедную map? Которая в коде анимает 100 из 140 строчек?"
0
02.11.2017, 06:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2017, 06:20

Сформировать двоичный файл из элементов, заданных в варианте структуры. Структура "Человек"
Сформировать двоичный файл из элементов, заданных в варианте структуры. Структура &quot;Человек&quot;:...

Запись "Анкета": определить, сколько лиц мужского пола от 18 до 60 лет проживают по одной улице
Здравствуйте! Помогите пожалуйста: Спишите запись АНКЕТА и поместите в неё следующую...

Определите сколько человек имеют рост ниже среднего по группе
Имеется группа из 12 человек разного роста. Определите сколько человек имеют рост ниже среднего...


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

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

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