Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/19: Рейтинг темы: голосов - 19, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 25.06.2020
Сообщений: 84

Как решать проблему со вводами C++

21.07.2020, 15:44. Показов 4467. Ответов 34

Студворк — интернет-сервис помощи студентам
Нужно написать программу, которая получает количество групп на вводе, затем по порядку название каждой группы, количество работников в каждой группе, имя каждого работника и дата рождений...
не представляю как можно решать проблему std::cin вводов
Помогите пожалуйста!

Примеры
Входные данные (std::cin)

3
A-01
3
Jon Smith 1950
Adam Hopkins 1990
Carol Owen 1983
B-58
2
Edward Norton 1995
David Baily 1980
K-03
2
Jacop Colins 1992
Mark Eriksen 1999


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
#include <iostream>
#include <string>
using namespace std;
 
class Group {
   public:
   string groupNames;
};
 
class Workers {
  public:
  string lastName;
  string firstName;
  int bornDate;
};
 
int main() {
  unsigned int n;
  cin >> n;
  Group* g = new Group[n];
  for(int i = 0; i < n; ++i)
  {
    cin >> g[i].groupNames;
  }
  unsigned int m;
  cin >> m;
  Workers* w = new Workers[m];
  for(int j = 0; j < m; ++j)
  {
    cin >> w[j].lastName >> w[j].firstName >> w[j].bornDate;
  }
 
  return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.07.2020, 15:44
Ответы с готовыми решениями:

Исправить проблему с размножающимися элементами ListBox и проблему со сортировкой
Доброго времени суток. Подскажите пожалуйста, кто знает, все нервы уже истрепал с этой сортировкой имеется Listbox и на форме код для...

Как исправить проблему
Добрый день! Выписал недавно проекционные часы с Таобао. Все работает, но не устраивает один момент. Для включении проектора нужно...

Как исправить эту проблему ?
Как исправть ошибку Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in...

34
2 / 2 / 0
Регистрация: 25.06.2020
Сообщений: 84
22.07.2020, 11:24  [ТС]
Студворк — интернет-сервис помощи студентам
Annemesski, как могу добвить эту строку
else
cout << "Not found!";
}


если условие не выполнено

Добавлено через 13 минут
Annemesski


Например;

Входные данные:

1
Z-99
2
Jon Smith
Adam Hopkins

Результат работы:

Not found!
0
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
22.07.2020, 11:53
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
size_t dateThrashold = 1974, outCount = 0;
for (size_t i = 0; i < n; ++i)
{
    bool needOutput = true;
    for (size_t k = 0; k < gr[i].sz; ++k)
    {
        if (gr[i].workers[k].bDate < dateThrashold)
        {
            needOutput = false;
            break;
        }
    }
 
    if (needOutput)
    {
        ++outCount;
        std::cout << gr[i].name << std::endl;
        for (size_t k = 0; k < gr[i].sz; ++k)
        std::cout << gr[i].workers[k].name << " " << gr[i].workers[k].sourn << " " << gr[i].workers[k].bDate << std::endl;
    }
}
 
if (!outCount)
    std::cout << "Not found!" << std::endl;
1
2 / 2 / 0
Регистрация: 25.06.2020
Сообщений: 84
22.07.2020, 12:33  [ТС]
Annemesski, а могу этот код реализовать для того чтобы найти работников той или иной группы,
например вместо size_t dateThrashold = 1974, outCount = 0;
написат string workIn = "A-01"
и вывести имена работников группы "A-01"
std::cout << gr[i].workers[k].name << " " << gr[i].workers[k].sourn << "\n";

Добавлено через 10 минут
Annemesski,

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
   std::string workIn = "A-01";
   int outCount = 0;
for (size_t i = 0; i < n; ++i)
{
    bool needOutput = true;
    for (size_t k = 0; k < gr[i].sz; ++k)
    {
        if (gr[i].workers[k].name == workIn)
        {
            needOutput = false;
            break;
        }
    }
 
    if (needOutput)
    {
        ++outCount;
        //std::cout << gr[i].name << std::endl;
        for (size_t k = 0; k < gr[i].sz; ++k)
        std::cout << gr[i].workers[k].name << " " << gr[i].workers[k].sourn << std::endl;
    }
}
 
if (!outCount)
    std::cout << "Not found!" << std::endl;
0
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
22.07.2020, 13:03
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void outputGroupInfoByName(Group *g, size_t n, const std::string &name)
{
    bool found = false;
    for (size_t i = 0; i < n; ++i)
    {
        if (name == g[i].name)
        {
            found = true;
            for (size_t k = 0; k < g[i].sz; ++k)
                std::cout << g[i].workers[k].name << "  " << g[i].workers[k].sourn << std::endl;
        }
    }
 
    if (!found)
        std::cout << "Group with name \"" << name << "\" is not found!" << std::endl;
 
    std::cout <<std::endl;
}
0
2 / 2 / 0
Регистрация: 25.06.2020
Сообщений: 84
22.07.2020, 13:34  [ТС]
Annemesski, написал так но не работает...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
string workIn = "A-01";
    
    for (int i = 0; i < n; ++i)
    {  
        bool find = true;
        for (int j = 0; j < gr[i].size; ++j)
        {
            if (gr[i].groupName == workIn)
            {
                find = false;
                break;
            }
        }
 
        if (find)
        {
        cout << gr[i].workers->fName << " " << gr[i].workers->lName << "\n";
        } 
  
    }
Добавлено через 12 минут
Annemesski, как вставить это функция (void outputGroupInfoByName ) в main чтобы сработала ???

Добавлено через 18 минут
Annemesski, я попробовал написать так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    string workIn = "A-01";
     bool found = false;
    for (int i = 0; i < n; ++i)
    {  
        if( workIn == gr[i].groupName)
        //found = true;
        for (int j = 0; j < gr[i].size; ++j)
        {
       cout << gr[i].workers->fName << " " << gr[i].workers->lName << "\n";
        }
    }
        if (!found)
        {
       cout << "Not found!";
        }
но вмесо ответа
Jon Smith
Adam Hopkins
Carol Owen

три раза печатает
Jon Smith
Jon Smith
Jon Smith
0
151 / 103 / 49
Регистрация: 21.11.2019
Сообщений: 285
22.07.2020, 14:09
Vardan,

сравни обращение к полям тут:
C++
1
   std::cin >> gr[i].workers[k].name >> gr[i].workers[k].sourn >> gr[i].workers[k].bDate;
и тут:
C++
1
  cout << gr[i].workers->fName << " " << gr[i].workers->lName << "\n";
0
2 / 2 / 0
Регистрация: 25.06.2020
Сообщений: 84
22.07.2020, 14:14  [ТС]
Shut913, не представляю как нужно написать... Вы можете написать этот часть кода ???
0
151 / 103 / 49
Регистрация: 21.11.2019
Сообщений: 285
22.07.2020, 14:15
Vardan, не видя программы в целом - не могу
0
2 / 2 / 0
Регистрация: 25.06.2020
Сообщений: 84
22.07.2020, 14:22  [ТС]
Shut913,

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
#include <iostream>
#include <string>
using namespace std;
 
class Worker
{
  public:
    string fName, lName;
    int bornDate;
};
 
class Group
{
  public:
    string groupName;
    int size;
    Worker* workers;
};
 
int main()
{
    int n;
    cin >> n;
    Group* gr = new Group[n];
    for (int i = 0; i < n; ++i)
    {
        cin >> gr[i].groupName;
        cin >> gr[i].size;
        gr[i].workers = new Worker[gr[i].size];
        for (int j = 0; j < gr[i].size; ++j)
            cin >> gr[i].workers[j].fName >> gr[i].workers[j].lName >> gr[i].workers[j].bornDate;
    }
 
    string workIn = "A-01";
     bool find = false;
    for (int i = 0; i < n; ++i)
    {  
        if( workIn == gr[i].groupName)
        //find = true;
        for (int j = 0; j < gr[i].size; ++j)
        {
          
       cout << gr[i].workers->fName << " " << gr[i].workers->lName << "\n";
        }
    }
        if (!find)
        {
       cout << "Not found!";
        } 
  
    delete[] gr;
 
    return 0;
}
Добавлено через 3 минуты
Shut913,

Примеры
Входные данные (std::cin)

3
A-01
3
Jon Smith 1950
Adam Hopkins 1990
Carol Owen 1983
B-58
2
Edward Norton 1995
David Baily 1980
K-03
2
Jacop Colins 1992
Mark Eriksen 1999

Результат работы должен быть (вывести все работников данной группы "A-01" )
Jon Smith
Adam Hopkins
Carol Owen
0
151 / 103 / 49
Регистрация: 21.11.2019
Сообщений: 285
22.07.2020, 14:36
Vardan,
43 строка, для правильного обращения к конкретному рабочему подправь:
C++
1
       cout << gr[i].workers[j].fName << " " << gr[i].workers[j].lName << "\n";
1
2 / 2 / 0
Регистрация: 25.06.2020
Сообщений: 84
22.07.2020, 14:59  [ТС]
Shut913, спасибо!!! сейчас правильно печатает но в конце печатает и "Not found!"
как сделать чтобы "Not found!" печаталось когда условия не выполняется?
0
151 / 103 / 49
Регистрация: 21.11.2019
Сообщений: 285
22.07.2020, 15:03
Vardan,
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
#include <iostream>
#include <string>
using namespace std;
 
class Worker
{
  public:
    string fName, lName;
    int bornDate;
};
 
class Group
{
  public:
    string groupName;
    int size;
    Worker* workers;
};
 
int main()
{
    int n;
    cin >> n;
    Group* gr = new Group[n];
    for (int i = 0; i < n; ++i)
    {
        cin >> gr[i].groupName;
        cin >> gr[i].size;
        gr[i].workers = new Worker[gr[i].size];
        for (int j = 0; j < gr[i].size; ++j)
            cin >> gr[i].workers[j].fName >> gr[i].workers[j].lName >> gr[i].workers[j].bornDate;
    }
 
    string workIn = "A-01";
     bool find = false;
    for (int i = 0; i < n; ++i)
    {  
        if( workIn == gr[i].groupName)
        {
        find = true;
        for (int j = 0; j < gr[i].size; ++j)
        {
          
       cout << gr[i].workers[j].fName << " " << gr[i].workers[j].lName << "\n";
        }
        }
    }
        if (!find)
        {
       cout << "Not found!";
        } 
  
    delete[] gr;
 
    return 0;
}
0
2 / 2 / 0
Регистрация: 25.06.2020
Сообщений: 84
22.07.2020, 15:25  [ТС]
Shut913, сейчас печатает только "Not found!" ))

====== Тест #1 =======
--- Входные данные:

3
A-01
3
Jon Smith 1950
Adam Hopkins 1990
Carol Owen 1983
B-58
2
Edward Norton 1995
David Baily 1980
K-03
2
Jacop Colins 1992
Mark Eriksen 1999

--- Правильный ответ:
Jon Smith
Adam Hopkins
Carol Owen

====== Тест #2 =======
--- Входные данные:
1
Z-99
2
Jacop Colins
Mark Eriksen

--- Правильный ответ: ---
Not found!
0
151 / 103 / 49
Регистрация: 21.11.2019
Сообщений: 285
22.07.2020, 15:33
Vardan, все правильно not found, потому что программа ищет группу с названием "A-01" и если ее находит, то выводит ее участников, а так как такой группы во входном потоке нету, а есть группа "Z-99" то получаем то, что получаем
0
0 / 0 / 0
Регистрация: 23.07.2020
Сообщений: 43
16.08.2020, 15:09
А можно поменять код так, чтобы если нет группы, удовлетворяющей данным условиям, выводилось Not found?

Добавлено через 1 минуту
Извиняюсь, не в ту тему написал

Добавлено через 2 часа 41 минуту
А можно поменять код так, чтобы если нет группы, удовлетворяющей данным условиям, выводилось Not found?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.08.2020, 15:09

Как исправить проблему с задачей?
Даны целые числа а(1)...а(n) (в этой последовательности могут быть повторяющиеся члены) 1)Выяснить сколько чисел входит в...

Как попобороть проблему : Too much for UserControl ?
Привет всем. Разрабатываю собственный грид для внутрннего пользования, и столкнулся с проблемой, которую пока не могу обойти. У меня около...

Как решить проблему с кодировкой
Отправляю сообщение на русском языке. Приходят на почту одни знаки ???? С английским все нормально. Возможно, у провайдера нет шрифтов с...

Как исправить данную проблему?
Как исправить проблему связанную с dArr на выделенной мною строке. По идее система должна работать, но нет package com.company; import...

Как я решил проблему с копирайтерами
Я принял участие в марафоне, и мне для проекта потребовалось много качественного контента да еще в короткие сроки. И я постоянно с горящей...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru