2014-09-30 2 views
-1

Я создал структуру с именем employee, а «emp.id» - это идентификатор сотрудника.Мне нужно проверить, что идентификатор сотрудника уникален

Когда пользователь вводит идентификатор, он не должен соответствовать предыдущему идентификатору, который пользователь мог ввести ранее.

Это всего лишь функция основной программы, которая подтверждает, что идентификатор сотрудника уникален.

код работает, но когда я печатаю, он назначает последнее значение id всем идентификаторам.

Пожалуйста, помогите.

void uniqueid() 
{ 
    int check=1; 
    string code; 
    string tempemp1; 

    cout<< "enter id"; 
    while(check) { 
    cin >> code; 
    check = 0; 
    for (int i = 0; i < num; ++i) { 
     if (emp[i].id.compare(code)==0) { 
     check = 1; 
     cout << "enter id again"; 
     break; 
     } 
    } 

    if (check==0) { 
     emp[i].id=code; 
    } 
    } 
} 
+0

Пожалуйста, приложите немного усилий для форматирования. Дополнительные пустые строки не нужны и отвлекают. Также обратите внимание на кнопку «образец кода» (выглядит как '{}'). – Adam

+1

Возможный дубликат [Программа требует, чтобы пользователь вводил не дублированные числа C++] (http://stackoverflow.com/questions/26129214/program-requires-user-to-enter-non-duplicate-numbers-c) – Nevin

+0

Это не дублирующий вопрос. Я предложил ОП начать новый вопрос, основанный на прогрессе, достигнутом в предыдущем. – quamrana

ответ

0

В вашем примере отсутствует нетривиальное количество кода; а именно где num и emp определены, и т.д ...

Но от беглого осмотра, кажется, что не хватает является num получение увеличивается, после успешного добавления нового сотрудника.

Кроме того, возможно, вы еще не научились этому, но в ситуациях, которые связаны с уникальностью, std::set будет вашим другом; но в той ситуации, о которой вы описали, вы, вероятно, в конечном итоге используете std::map.

Смежные вопросы