@Samoniel

Как повторно просить ввести данные пока не введут верные?

Вроде какой-то простой цикл нужен, не помню какой. Пользователь вводит неправильные данные, а программа должна постоянно спрашивать его ввести верные
  • Вопрос задан
  • 1983 просмотра
Решения вопроса 1
@Samoniel Автор вопроса
#include<iostream>
using namespace std;

int main()
{
	long long int a;
	cout << "Введите пятизначное число: ";
	cin >> a;
	if(a >= 10000 && a <= 99999)
	{
		int f = a % 10;
		int e = (a / 10) % 10;
		int d = (a / 100) % 10;
		int c = (a / 1000) % 10;
		int b = (a / 10000) % 10;
		cout << b << endl;
		cout << c << endl;
		cout << d << endl;
		cout << e << endl;
		cout << f << endl;
	}
	else
	{


		do
		{
			cout << "ТЫ ЧЁ ДУРАК БЛЯТЬ?" << endl;
			cout << "Христом богом заклинаю, только пятизначные, плес. Пробуй: " << endl;

			cin >> a;
			if (a >= 10000 && a <= 99999)
			{

				int f = a % 10;
				int e = (a / 10) % 10;
				int d = (a / 100) % 10;
				int c = (a / 1000) % 10;
				int b = (a / 10000) % 10;
				cout << "Число номер 1: " << b << endl;
				cout << "Число номер 2: " << c << endl;
				cout << "Число номер 3: " << d << endl;
				cout << "Число номер 4: " << e << endl;
				cout << "Число номер 5: " << f << endl;
			}
			
		}
		

		while (a > 99999 || a < 10000);
	}
	
	
	

	return 0;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@res2001
Developer, ex-admin
Не о том спрашиваете.
Любой цикл можно использовать:
for(;;) {...}
while(true) {...}
do {...} while(true)

Выходить из цикла с помощью break, когда ввод будет нормальный или изменить условие цикла.
На самом деле вечный цикл в данном случае не нужен. Лучше всего предусмотреть, например, 3 попытки ввода, и если не удачно - завершаемся. В этом случае for() подойдет лучше всего.
В целом в С/С++ циклы for и while имеют одинаковую функциональность, но for более приспособлен для счетчиков и т.п., т.к. в нем инициализация, условие и концовка цикла собраны в одной строке (более компактно, чем while). То же самое можно сделать и в while, но инициализацию и концовку придется написать отдельно.
Ответ написан
6db
@6db
Работает пока пользователь не введёт нужные данные. (Пока _а не станет равной 7). За код извиняюсь, пишу с телефона в дороге.
#include <iostream>

using namespace std;

int main() {
int _a;
	do
	{
		cout<<"'Input a: ";
		cin>>_a;
	} 
         while(_a!=7);
	         cout<<"Correct input\n";
}


Тоже самое с for

#include <iostream>

using namespace std;

int main(){
	
	for(int _a;  _a!=7; cin>> _a ){
		
		cout<<"'Input a: ";
		
}

}


Вывод:
5fc49e0e216f3168808506.jpeg
Ответ написан
myjcom
@myjcom Куратор тега C++
#include <iostream>
using namespace std;

struct MyData {
  int value;
  MyData(int v) : value(v){}
  MyData() : value(0){}
};

istream& operator>>(istream& is, MyData& data)
{
  is >> data.value;
  return is;
}

ostream& operator<<(ostream& os, MyData& data)
{
  os << data.value;
  return os;
}

bool operator==(const MyData& lh, const MyData& rh)
{
  return lh.value == rh.value;
}

bool operator!=(const MyData& lh, const MyData& rh)
{
  return !(lh.value == rh.value);
}

MyData try_read_while_not(MyData d, const string& message)
{
  MyData val;
  while(val != d)
  {
    cout << message;
    cin  >> val;
  }
  return val;
}

int main()
{
  MyData correct(42);
  MyData val = try_read_while_not(correct, "Введите значение: ");
  cout << val;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы