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

Определить есть ли люди с одинаковыми фамилиями и годом рождения

05.01.2022, 16:06. Показов 919. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите написать функцию, которая определяет есть ли в векторе люди с одинаковыми фамилиями и годом рождения. То есть должен вывести на экран Porey Luk 1770 Porey Chesnok 1770.
Содержимое массива:

Jackson Michael 1958
Pupkin Vasilij 1958
Porey Luk 1770
Porey Chesnok 1770

P.S. содержимое массива может меняться, но структура такая: фамилия, имя, год рождения
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2022, 16:06
Ответы с готовыми решениями:

Определить есть ли люди с одинаковыми фамилиями и годом рождения
Помогите написать функцию, которая определяет есть ли в векторе люди с одинаковыми фамилиями и...

Есть ли в школе ученики с одинаковыми фамилиями
Данные о студенческих задач по изучению осмотра с полями: <Фамилия>, <номер группы>, <Оценка 1>,...

Определить количество людей с одинаковыми фамилиями, проживающих на одной улице
Здравствуйте помогите сформировать запрос, по которому --определить количество людей с...

ученики с одинаковыми фамилиями
Дано фамилия ученика и данные об учениках класса: фамилия, имя, отчество, домашний адрес (улица,...

6
Модератор
9261 / 6039 / 2379
Регистрация: 21.01.2014
Сообщений: 25,803
Записей в блоге: 3
05.01.2022, 16:32 2
Цитата Сообщение от tapni Посмотреть сообщение
но структура такая: фамилия, имя, год рождения
Нет, не такая, а вот такая: фамилия имя год_рождения. У Вас поля отделяются пробелом, а не запятой с пробелом.
Цитата Сообщение от tapni Посмотреть сообщение
Помогите написать функцию
Ну а сами-то что сделали? Есть чему помогать? Или "все с нуля, под ключ и на халяву"?
0
111 / 74 / 39
Регистрация: 16.05.2020
Сообщений: 292
05.01.2022, 18:18 3
Лучший ответ Сообщение было отмечено tapni как решение

Решение

Проверьте:

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
#include <iostream>
#include <windows.h>
#include <vector>
#include <sstream>
#include <map>
using namespace std;
 
multimap <string, string> mp;
vector<string> kniga =
{
    "Jackson Michael 1958",
    "Pupkin Vasilij 1958",
    "Porey Luk 1770",
    "Porey Chesnok 1770",
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int j = 0;
    string strTemp;
    for(string str : kniga)
    {
        stringstream stream(str);
        for (string word; stream >> word;)
        {
            if(j==0) strTemp = word + " ";
            if(j==2) strTemp+= word;
            j++;
        }
        mp.insert(make_pair(strTemp, str));
        strTemp = ""; j = 0;
    }
    map <string, string> :: iterator it = mp.begin();
    for (int i = 0; it != mp.end(); it++, i++)
        if (mp.count(it->first) > 1)
            cout << it->second << " ";
cout << endl;
system("pause");
return 0;
}
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.01.2022, 19:44 4
tapni, в задаче требуется только определить есть ли такие люди или нужно напечатать их список ?
эта фраза:
Цитата Сообщение от tapni Посмотреть сообщение
То есть должен вывести на экран Porey Luk 1770 Porey Chesnok 1770
была в условии ?

напишите оригинал условия задачи
0
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 25
06.01.2022, 14:59  [ТС] 5
Спасибо Вам огромное. А можете объяснить что значат эти строки?
Цитата Сообщение от ivikis Посмотреть сообщение
if(j==0) strTemp = word + " ";
            if(j==2) strTemp+= word;
            j++;
Цитата Сообщение от ivikis Посмотреть сообщение
if (mp.count(it->first) > 1)
Добавлено через 47 секунд
Определить, есть ли персоны с одинаковыми фамилиями, родившиеся в один год
0
111 / 74 / 39
Регистрация: 16.05.2020
Сообщений: 292
06.01.2022, 15:35 6
Цитата Сообщение от tapni Посмотреть сообщение
что значат эти строки?
В первом случае создаются "записи" в mp (multimap <string, string> mp)
типа: "Jackson 1958" --> "Jackson Michael 1958"/
Во втором - проверяется условие на повторение "записей" в mp ...
multimap

Добавлено через 15 минут
Цитата Сообщение от ivikis Посмотреть сообщение
"Jackson Michael 1958"
читается по словам - по условию выбираются необходимые ...
stringstream
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.01.2022, 17:15 7
Цитата Сообщение от tapni Посмотреть сообщение
должен вывести на экран Porey Luk 1770 Porey Chesnok 1770
код должен определить есть такие люди или нет, то есть вывести ответ ДА или ответ НЕТ
Цитата Сообщение от tapni Посмотреть сообщение
Определить, есть ли персоны с одинаковыми фамилиями, родившиеся в один год
Цитата Сообщение от tapni Посмотреть сообщение
написать функцию
функция которую требуется написать строки 28-34. кроме неё есть функция ввода данных set() и функция печати print() (функция print() необязательна, можете её убрать)
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
#include <iostream>
using namespace std;
 
struct Note 
{                 
    string surname;
    string name;
    int year;
};
 
void set (Note *s, int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << "Note " << i + 1 << ":\n";        
        cout << "Surname, name, year: ";    
        cin >> s[i].surname >> s[i].name >> s[i].year;        
    }
}
 
void print (Note *s, int n)
{
    cout << "SURNAME    NAME              YEAR:\n";
    for (int i = 0; i < n; i++)       
        cout << s[i].surname << "  " << s[i].name << "  " << s[i].year << "\n";   
} 
 
bool is_repeat (Note *s, int n)
{        
    for (int i = 0; i < n; i++)                    
        for (int j = i+1; j < n; j++)
            if (s[i].surname==s[j].surname && s[i].year==s[j].year) return true; 
    return false;
} 
 
int main()
{
    int n;
    cout << "n="; cin >> n;
    
    Note *s = new Note[n];
    
    set(s,n); 
    print(s,n);
    cout << "RESULT:\n";
    if(is_repeat(s,n)) cout << "YES\n";
    else cout << "NO\n";
    
    delete[]s;
system("pause");
return 0;
}
1
06.01.2022, 17:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2022, 17:15
Помогаю со студенческими работами здесь

Найти людей с одинаковыми фамилиями
Нужно найти людей с одинаковыми фамилиями и вывести инфо о них на экран. Беда только в том, что...

Найти в справочнике людей с одинаковыми фамилиями
написать программу , которая в заданном месте ищет всех людей с одинаковыми фамилиями

В группе найти студентов с одинаковыми фамилиями
Здраствуйте! У меня две задачки (вроде бы не трудные) : 1.В группе найти студентов с одинаковыми...

Удалить из списка элементы с одинаковыми по длине фамилиями
Удалить из списка элементы с одинаковыми по длине фамилиями. PascalABC.NET

Удалить из списка элементы с одинаковыми по длине фамилиями
Помогите пожалуйста с программой: uses crt; type PElement=^TypeElement; ...

Удалить из списка элементы с одинаковыми по длине фамилиями
Помогите пожалуйста с программой: uses crt; type PElement=^TypeElement; TypeElement=record...

DCount подсчёт количества людей с одинаковыми Фамилиями и Именами
Здравствуйте. Столкнулся с проблемой, которую никак не могу решить самостоятельно. Есть форма...


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

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