Форум программистов, компьютерный форум CyberForum.ru

Строковый массив и цикл for - C++

Восстановить пароль Регистрация
 
Rebel123
 Аватар для Rebel123
1 / 1 / 0
Регистрация: 06.05.2012
Сообщений: 12
07.10.2012, 16:56     Строковый массив и цикл for #1
Всем привет. Сколько раз не пытался, не получается сделать так, чтобы после проверки условия цикл пошел повторно и при этом счетчик строковых массивов увеличивался на единицу. Прилагаю код ниже:
Код
#include <iostream>
using namespace std;

main()
{
      const int name = 5;
      const int mails = 5;
      const int passes = 5;
      string z;
      int p = 1;
      string pass[passes] = {"123", "1234", "12345", "123456", "1234567"};
      string user[name] = {"Mark", "Tom", "Scott", "Travis", "Sam"};
      string mail[mails] = {"mark@gmail.com", "tom@yahoo.com", "scott@hotmail.com", "travis@apple.com", "sam@gmail.com"};
    // string currentuser;
    cout << "There are 5 usernames in our database, enter a valid name for getting a password:" << endl;
    for (int i=0; i<name; ++i)
    {
       // cout << "attempt number " << i << endl;
        cout << "Pass for user "; cout << user[0]  << endl;
        getline(cin, z);
        if (z == pass[0]) 
        {
            cout << mail[0] << endl;
            user[0] = p;
            mail[0] = p;
            pass[0] = p;            
        } 
    } 
    system("pause");
}
Условие задачи: Создать программу, которая будет запрашивать пароль логина (последовательно из 5 существующих) и выдавать их e-mail в случае правильно ввода пароля. Если было введено не правильно, попросит ввести повторно, но учитывать надо то, что общей попытке ввода пароля для всех логинов не должно превышать 3, после чего программа закроется.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
07.10.2012, 17:01     Строковый массив и цикл for #2
вам нужно 2 счетчика. один для прохождения по всем логинам, а второй для учета неверных попыток.
Rebel123
 Аватар для Rebel123
1 / 1 / 0
Регистрация: 06.05.2012
Сообщений: 12
07.10.2012, 17:08  [ТС]     Строковый массив и цикл for #3
Цитата Сообщение от I.M. Посмотреть сообщение
вам нужно 2 счетчика. один для прохождения по всем логинам, а второй для учета неверных попыток.
А как сделать так, чтобы индексы массивов увеличивались на единицу?
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
07.10.2012, 17:18     Строковый массив и цикл for #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (int i = 0, j = 0; i < name_size && j!=3; ++i)
{
    std::string test_pas;
    std::cin >> test_pas;
 
    if(test_pas == password[i])
    {
        std::cout << mail[i] << std::endl;
    }
    else
    {
        j++;
                      //i--; //если надо еще раз запросить пароль для того же логина
    }
}
это упрощенная версия. Подставьте сюда имена своих переменных и массивов, сделайте дополнительные cout, если надо и тд.
Rebel123
 Аватар для Rebel123
1 / 1 / 0
Регистрация: 06.05.2012
Сообщений: 12
07.10.2012, 17:49  [ТС]     Строковый массив и цикл for #5
Спасибо, вам плюсанул =]

Вот полный исходный код, может кому пригодится.
Код
#include <iostream>
using namespace std;

main()
{
      const int name = 5, mails = 5, passes = 5;
      string z;
      int p = 1, b = 0;
      string pass[passes] = {"123", "1234", "12345", "123456", "1234567"};
      string user[name] = {"Mark", "Tom", "Scott", "Travis", "Sam"};
      string mail[mails] = {"mark@gmail.com", "tom@yahoo.com", "scott@hotmail.com", "travis@apple.com", "sam@gmail.com"};
      cout << "There are 5 usernames in our database, enter a valid name for getting a password:" << endl;
      for (int i = 0, j = 0; i < name && j!=3; ++i)
      {
            cout << "Password for user "; cout << user[i]  << endl;
            std::string z;
            getline(cin, z);
            if (z == pass[i]) 
            {
                  cout << "Entered password is correctly, here's his e-mail: " << mail[i] << endl;         
            } 
            else
            {
                  j++;
                  i--;
                  cout << "Invalid login, please try again " << endl;
            }
      } 
      system("pause");
}
Yandex
Объявления
07.10.2012, 17:49     Строковый массив и цикл for
Ответ Создать тему
Опции темы

Текущее время: 18:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru