Pętla for i wypisywanie liczb

0

Mam pytanie, jak wypisać liczby z pętli for aby były wyświetlane "normalnie" czyli na zasadzie:
wyświetla się liczba 10, usuwa się. Następnie liczba 9, usuwa się.
\r - nie uzyskam tego bo jest to powrót do linii, której nie chcę.

Zrobiłem trochę to po swojemu i teraz pytanie czy jest jakiś lepszy, łatwiejszy sposób?

	cout << "Odpowiedź: "; cin >> wybor;

	cout << "\n";
	cout.width(45);
	if (wybor == 1)
	{
		cout << "Komputer zamknie się za: ";
		for (int i = 10; i > 0; i--)
		{
			if (i == 10)
			{
				cout << i << "\b\b";
			}
			else
			{
				cout << " " << i << "\b\b";
			}
			czekaj(1.5);
		}
		cout << "\r";
		cout.width(56);
		cout << "Trwa wyłączanie...            \n";
		czekaj(10);
	}


	system("pause");
}
2
                for(int i=10;i>=0;--i)
                  {
                   cout<<"\rKomputer zamknie się za: "<<setw(2)<<i;
                   cout.flush();
                   czekaj(1.5);
                  }
                cout<<"\rTrwa wyłączanie..."<<setw(20)<<' '<<endl;
0

Jak chcesz zrobić to po ludzku to użyj biblioteki takiej jak ncurses. C++ nie wie nic o Twojej konsoli, cout to tylko standardowy strumień wyjściowy (cokolwiek to oznacza). seekp raczej nie zadziała (u mnie nie działa), możesz jedynie używać \r żeby wrócić na początek linii. Wszystkie inne cuda są zależne od terminala - i właśnie po to jest ncurses.

0

Dzięki, jak najbardziej się Twoja propozycja przyda tylko teraz jak zrobić by cała ta linijka

cout<<"\rKomputer zamknie się za: "<<setw(2)<<i;

Nie zaczynała od samego brzegu tylko powiedzmy od środka?

1
keyr napisał(a):

Ok ale jak zrobić by cała ta linijka

cout<<"\rKomputer zamknie się za: "<<setw(2)<<i;

Nie zaczynała od samego brzegu tylko powiedzmy od środka?

Użyć ncurses. Chyba, że chcesz wstawiać spacje. Tylko skąd masz wiedzieć gdzie jest ów "środek"? Strumienie nie znają takich pojęć.

2

Możesz też kombinować tak:

                cout<<"Komputer zamknie się za: ##\b\b\b";
                for(int i=10;i>=0;--i,czekaj(1.5)) (cout<<' '<<setw(2)<<i<<"\b\b\b").flush();
0

To jeszcze odświeżę temat. Wasze odpowiedzi byłby bardzo pomoce, lecz chciałbym wiedzieć czy jest możliwość wykonywania pętli + dalszej części kodu jednakowo? Np. na samej górze pokazuje się aktualny czas, który ciągle się odświeża a na dole kod programu, który będzie się wykonywał nie zważając na pętlę for, która wyświetla aktualną godzinę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1