Pętla for i wypisywanie liczb

Pętla for i wypisywanie liczb
KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
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?

Kopiuj
	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");
}
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2
Kopiuj
                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;
Endrju
  • Rejestracja: dni
  • Ostatnio: dni
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.

KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
0

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

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

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

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
1
keyr napisał(a):

Ok ale jak zrobić by cała ta linijka

Kopiuj
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ęć.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2

Możesz też kombinować tak:

Kopiuj
                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();
KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
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ę.

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.