Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
 Аватар для Alex Kireev
28 / 36 / 6
Регистрация: 21.11.2017
Сообщений: 202

Добавление цикла For в программу

09.01.2018, 21:09. Показов 1742. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Дайте пожалуйста намек как в эту программу
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream> 
#include <conio.h>
#include <string>
using namespace std;
 
int main()  
{
    string pass;
    cout << "Введите пароль:" <<endl;
    int ch = 0;               // Переменная для символа.
    while (true)                // Создание бесконечного цикла.
    {
          ch = _getch();        // Помещаем код нажатой клавиши в переменную.
          if (ch == 13)         // Установка Enter на прерывание цикла.
          {
                 break;         // Прерывание цикла.
          }
          if (ch == 27)   // Установка Esc на закрытие консоли.
          { 
                 exit (0);      // Выход из консоли.
          }
          if (ch == 8)     // Установка Backspace на удаление символов.
          {
                  
               cout << (char)8 << ' ' <<char(8);  
           /*Смещение курсора на одну позицию  в лево вывод пробела и 
           снова смещение курсора влево, то есть при нажатии Backspace 
           символ будет стираться, а курсор перемещаеться. */
               
               if (!pass.empty())
             /*Если строка pass не являеться пустой, то из неё 
             можно удалять  последний символ (Иначе закрывалась консоль.)*/
             
               pass.erase(pass.length()-1); 
               // позволяет удалить последний символ из строки pass
          }
         
          else                   
          { 
          cout << '*';            // Замена символов на *
          pass += (char)ch;       // Преврашение кода из целого числа в символ.
          }
    }          
        if(pass == "123456")           //Проверка пароля. (пароль 123456)
       {
    
       cout << "\nВы вошли в систему!!!" << '\n'; 
}
    else    
 {                      
        cout << "\nПароль не правильный!!!" << '\n'; 
}      
            
    system ("pause"); 
    return 0;
} 
/*
 
_getch();  Функция которые вводит данные через консоль, не 
отображает их на экранею Так как она вводит один символ то 
 исполюзуеться бесконечный цикл while (true).
 
 Удаляем символы.
 pass.erase(pass.length()-1). 
 Передаем в функцию pass.erase число на единицу меньше чем длина текущей строки.
Получение длины строки: pass.length().
Вычитание последнего символа из строки: -1 (Один символ одно нажатие клавиши).
 
pass += (char)ch; То же самое что и pass = pass + (char)ch;
 
Вместо << endl; можно использовать << '\n'; или cout << " ... \n";
 
 */
добавить попытки ввода с этого поста.
Прерывание ввода при израсходовании попыток ввода пароля
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.01.2018, 21:09
Ответы с готовыми решениями:

Добавление значений в массив с использованием цикла while
Изучаю C++ по книге и делая очередное упражнение в конце главы столкнулся с одной проблемой. Код: int main() { double max =...

Сделать программу с использованием цикла While, без цикла For
Дана такая программа: CLS INPUT &quot; Кол. рабочих дней: &quot;, n INPUT &quot; Начальное кол. товара: &quot;, R FOR I = 1 TO n ...

Переписать программу с использованием цикла While, без цикла For
Дана такая программа: uses Crt; var n, R, D,i: integer; begin ClrScr; write(' Кол. рабочих дней: '); readln(n); write ...

25
21 / 21 / 20
Регистрация: 05.12.2017
Сообщений: 124
15.01.2018, 22:26
Студворк — интернет-сервис помощи студентам
Алексей, вы еще тут?

Добавлено через 2 минуты
Цитата Сообщение от alex_kireev Посмотреть сообщение
При вводе 3х неправильных ответов должно выйти это сообщение:
"Вы три раза неправильно ввели пароль. Обратитесь к cистемному администратору, или в службу поддержки."
и здесь выбор ответа, сисадмин или поддержка. Но если пользователь вел секретный код то сбрасывается старый пароль и вводиться новый.
Я правильно понял, что у пользователя после трех промахов есть ТРИ варианта - вызов сисадмина, вызов поддержки и ввод секретного пароля. Просто одно за другим идет и мне показалось, что это идет бок-о-бок.
0
 Аватар для Alex Kireev
28 / 36 / 6
Регистрация: 21.11.2017
Сообщений: 202
15.01.2018, 22:42  [ТС]
Цитата Сообщение от TheDmytrius Посмотреть сообщение
Я правильно понял, что у пользователя после трех промахов есть ТРИ варианта - вызов сисадмина, вызов поддержки и ввод секретного пароля. Просто одно за другим идет и мне показалось, что это идет бок-о-бок.
Да это так.
Если сможете сделайте пожалуйста.
Я думал что сам смогу, а сегодня сказали что завтра информатика и надо сдать.
Извяните что так с ответом задержался.
0
21 / 21 / 20
Регистрация: 05.12.2017
Сообщений: 124
15.01.2018, 23:46
Лучший ответ Сообщение было отмечено Alex Kireev как решение

Решение

Вот программа (опять же, с черновиком):
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include <iostream>
#include <conio.h>
#include <string>
//#include <ctime>
using namespace std;
 
 
int main()
{
setlocale(LC_ALL,"russian");
//srand(time(0));
string pass;
string pass_value = "123456"; //строка, содержащая правильный пароль
int ch = 0; // Переменная для символа.
 
int x;
for(x=0;x<3;++x) 
{
    EnterPassword: //метка, куда переходит процесс выполнения в случае изменения пароля
cout << "\nВведите пароль: " <<endl;
 
while (true) // Создание бесконечного цикла.
                        {
ch = _getch(); // Помещаем код нажатой клавиши в переменную.
if (ch == 13) // Установка Enter на прерывание цикла.
{
break; // Прерывание цикла.
}
if (ch == 27) // Установка Esc на закрытие консоли.
{
exit (0); // Выход из консоли.
}
if (ch == 8) // Установка Backspace на удаление символов.
{
 
cout << (char)8 << ' ' <<char(8);
/*Смещение курсора на одну позицию в лево вывод пробела и
снова смещение курсора влево, то есть при нажатии Backspace
символ будет стираться, а курсор перемещаеться. */
 
if (!pass.empty())
/*Если строка pass не являеться пустой, то из неё
можно удалять последний символ (Иначе закрывалась консоль.)*/
pass.erase(pass.length()-1);
// позволяет удалить последний символ из строки pass
}
 
else
{
cout << '*'; // Замена символов на *
pass += (char)ch; // Преврашение кода из целого числа в символ.
}
 
                            }
 
if(pass == pass_value) //Проверка пароля. (пароль 123456)
{
cout << "\nВы вошли в систему!!!" << '\n';
break; //цикл ввода паролей прерывается, но программа не заканчивается
}
if(pass == "485823")
{
    SecretPassword:
cout << "\nВы ввели секретный код. Введите новый пароль: " << '\n';
pass_value = "";
 
while (true) 
                        {
ch = _getch(); 
if (ch == 13) 
{
break; 
}
if (ch == 27) 
{
exit (0); 
}
if (ch == 8) 
{
cout << (char)8 << ' ' <<char(8);
if (!pass.empty())
pass.erase(pass.length()-1);
}
else
{
cout << '*'; 
pass_value += (char)ch; 
}
                            }
 
/*const char * ar[]={"a","b","c","d","e","f","g","1","2","3","4","5","6","7","8","9","0"};
pass_value = "";
for (int i=0; i<8; i++)
    pass_value += ar[rand() % (sizeof ar/sizeof (char *))]; //алгоритм для случайного нового пароля
cout<<pass_value<<endl;*/
 
 
pass.clear();
x=0;
goto EnterPassword; //после ввода нового пароля процесс выполнения начинается с метки
}
        else if(x == 0 && pass != pass_value) 
            {cout << "\nНеправильный пароль. Осталось две попытки.\n";
            pass.clear(); } //очищаем строку пароля, если он неправильный
        else if(x == 1 && pass != pass_value) 
            {cout << "\nНеправильный пароль. Осталась одна попытка.\n";
            pass.clear(); } //очищаем строку пароля, если он неправильный
        else if(x == 2 && pass != pass_value)
            {
cout << "\nВы три раза неправильно ввели пароль! \n Введите 1 для обращения к cистемному администратору.\n Введите 2 для обращения в службу поддержки.\n";
cout << "Вы также можете ввести секретный пароль для сброса старого. \n";
int action;
cin>>action;
    if (action == 1)
        {
        cout << "Извяните, но системный администратор на выезде. Перенаправляем вас в службу поддержки... \n";
 
        _sleep(4000); //приостановка работы программы на 4000 мс
        cout<<"Loading...";     //эти строки сделаны для симуляции загрузки =) , если работать не будут - удали их!
        _sleep(6000); 
        system("cls"); //очистка экрана консоли
        
        goto Support;
        }
    else if (action == 2)
            {
                Support:
        cout << "Вы обратились в службу поддержки, пожалуйста заполните анкету: \n";
        cout << "Ваше имя:\n";
        string a;
        cin >> a;
        cout <<"Ваша фамилия:\n";
        string b;
        cin >> b;
        cout << "Уважаемый(ая) " << a <<" "<< b << ". Код для смены пароля был выслан на Вашу электронную почту.\n";
            }
    else if (action == 485823)
        goto SecretPassword;
    else 
    {
        cout<<"Вы принебрегли обращением и неправильно ввели секретный пароль. Access denied! \n";
    }
/*
switch(action)
    {
    case 1:
        {
         cout << "Извяните, но системный администратор на выезде. Обратитесь в службу поддержки. \n";
        } break;
    case 2:
        {
        cout << "Вы обратились в службу поддержки, пожалуйста заполните анкету: \n"; //вариант использования оператора множественного выбора switch - отдал предпочтения стандартным ифам, т.к. там проще предвидеть неправильный ввод
        cout << "Ваше имя:\n";
        string a; //строки а и b не были объявлены
        cin >> a;
        cout <<"Ваша фамилия:\n";
        string b;
        cin >> b;
        cout << "Уважаемый(ая) " << a << b << ". Код для смены пароля был выслан на Вашу электронную почту.\n";
        } break;
    case 485823:
        {
            goto SecretPassword;
        } break;
    } */
 
 
            }
 
}
    /*      
        }
        cout << " Системный администратор (y/n)" <<endl;
     char c;
     cin >> c;
     done =(c != 'y'); // аналогично [done = (c=='n');]
     if (c != 'y')
     cout << "Извяните, но системный администратор на выезде. Обратитесь в службу поддержки. \n";
        cout << " Служба поддержки(Y/N)" <<endl;
     char c;
     cin >> c;
     done =(c != 'Y'); // аналогично [done = (c=='N');]
     }
     if (c != 'Y')
{
     cout << "Вы обратились в службу поддержки, пожалуйста заполните анкету: \n";
     cout << "Ваше имя:\n";
     cin >> a;
     cout <<"Ваша фамилия:\n";
     cin >> b;
     cout << "Уважаемый(ая) " << a << b << "Код для смены пароля был выслан на Вашу электронную почту.\n";
     } */
 
system ("pause");
return 0;
}
Вашу часть про сисадмина и поддержку адаптировал на свой лад. Можете сами её адаптировать.
Выбор при промахах сделал. Самостоятельный ввод пароля готов.

Добавлено через 6 минут
Закомментированные алгоритмы перед сдачей удали чтобы препод не слишком переоценил тебя))
1
 Аватар для Alex Kireev
28 / 36 / 6
Регистрация: 21.11.2017
Сообщений: 202
16.01.2018, 14:28  [ТС]
Большое спасибо.
Выручили.

Добавлено через 22 секунды
Завтра напишу как сдал.

Добавлено через 14 часов 35 минут
Здравствуйте.
Большое спасибо за помощь, поставили 3++, но потом исправили на 4.
Цитата Сообщение от TheDmytrius Посмотреть сообщение
чтобы препод не слишком переоценил тебя
Он посмотрел сказал что можно было сделать попроще, но раз я только начал изучать С++ то пойдет.
0
21 / 21 / 20
Регистрация: 05.12.2017
Сообщений: 124
16.01.2018, 16:39
Цитата Сообщение от alex_kireev Посмотреть сообщение
Он посмотрел сказал что можно было сделать попроще, но раз я только начал изучать С++ то пойдет.
С преподавателями вечно так. Все говорят "Попроще!", но что, где и, самое главное, как - "Этты, сынок, сам думай!".
0
 Аватар для Alex Kireev
28 / 36 / 6
Регистрация: 21.11.2017
Сообщений: 202
16.01.2018, 21:22  [ТС]
Цитата Сообщение от TheDmytrius Посмотреть сообщение
"Этты, сынок, сам думай!"
Что верно то верно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2018, 21:22
Помогаю со студенческими работами здесь

Вывод с цикла и добавление в форму
Нужно что бы при клике на логин (onClickUser ) добавляло тот логин на который мы кликули :) Я делаю так, но добавляе почему то только...

Изменение процедуры (добавление цикла)
Всем привет! Еще раз! :) Имеется код, который &quot;берет&quot; текст из edit и разбивает по 7 символов по строке в memo. procedure...

Добавление в цикл волженного цикла с таймером
Помогите пожалйста кто сможет решить такую задачку: Необходимо изобразить индикатор в который то поднимается то опускается. Смог...

составить блок-схему алгоритмов для решения задач с использованием трех циклов цикла с постусловием, цикла с предусловием и цикла с параметрами
помогите составить блок-схему алгоритмов для решения задач с использованием трех циклов цикла с постусловием, цикла с предусловием и цикла...

Написать программу с оператором цикла while
Написать программу. с оператором цикла while; с оператором цикла for; с оператором цикла do while


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru