Renshinzen Ответов: 3

Как создать программу на языке C или C++ для поиска имени ?


Вопрос: в комнате находятся три ученицы Юки, Широ и Канаме. Вы должны показать, что их имя существует при вводе данных.
Кроме того ,Пожалуйста, дайте мне исправленную программу.

Пример:
ВХОД:
Введите no студентов: 3 (Кол-во учащихся)
Ввести имя:
Юки
Сиро
Канаме

Введите имя для поиска: Shiro

ВЫХОД:
Широ существует!!

Что я уже пробовал:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    string s[10], y;
    int i;
    for (i=0; i< 3; i++)
        cin>>s[i];
    cin>>y;
    if (y == s[i])   
        cout<< y << " exists";
    else
        cout<< y <<"Does not exist";
    return 0;
}

3 Ответов

Рейтинг:
8

Jochen Arndt

Просто добавьте код для того, что на самом деле отсутствует в соответствии с примером:


  • Распечатайте текст приглашения (количество студентов, имя для поиска), чтобы пользователь знал, что вводить
  • Прочитайте количество вводимых имен
  • Выведите результат, как показано в Примере (он включает Введенное имя)


Рейтинг:
23

Richard MacCutchan

У вас есть две основные проблемы. Во-первых, вы включаете <string.h> который является старым заголовком библиотеки C; он должен быть просто <string> Для стандартной библиотеки шаблонов.
Во-вторых, вы сравниваете поле поиска с пустой строкой, вместо того чтобы искать каждую по очереди, поэтому запись поиска никогда не будет найдена.

    if (y == s[i])   // at this point i == 3, so s[i] has no value
        cout<< y << " exists";

// you should write:
    for (i=0; i < 3; i++)
    {
        if (y == s[i])
        {
            cout << y << " exists";
            break;
        }
    }
    if (i == 3)
        cout << y <<" Does not exist"; // loop terminated without finding the key


Рейтинг:
16

CPallini

Ты забыл про петлю:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s[10], y;
    int i;
    for (i=0; i< 3; i++)
        cin>>s[i];
    cin>>y;

  for (i=0; i<3; ++i) // use a loop for searching in all the entered items
  {
    if (y == s[i])
    {
      cout<< y << " exists";
      return 0;;
    }
  }
  cout<< y <<" does not exist";
}


Пожалуйста, обратите внимание: C++ STL мягко обеспечивает набор[^] класс:
#include <iostream>
#include <string>
#include <set>
using namespace std;
int main()
{
  set<string> folks;

  for (int i=0; i< 3; i++)
  {
    string new_member;
    cin >> new_member;
    folks.insert(new_member);
  }

  string name_to_search_for;
  cin >> name_to_search_for;

  cout << name_to_search_for;
  if ( folks.find(name_to_search_for) == folks.end())
    cout << " not";
  cout << " found." << endl;
}