Problema con Backspace (\b) c++

di il
5 risposte

Problema con Backspace (\b) c++

Buongiorno, sto cercando di realizzare un piccolo countdown in c++ (dinamico).
Il problema è che utilizzando \b\b, non cancella completamente i caratteri, infatti il countdown fa così: 12, 11, 10 , 90 , 80, 70, 60. Quindi lascia questo 0. Da cosa può esser dovuto? Come fargli cancellare entrambi i caratteri? (parlo dei numeri da 10 a 99 ovviamente)

#include <iostream>
#include <windows.h>
using namespace std;
int main() {
int countdown,count,n;

    
    cout << "\nNumero da cui il countdown deve partire: ";
    cin >> countdown;
    cout<<endl;
    if(countdown>9<100){
    
//[i]da qui in poi c'è il codice per i numeri superiore a 9[/i]
    	
    	do{
    	cout<<countdown;
		cout<<"\b\b";
    	countdown--;
    	Sleep(1000);}while(countdown>0);
	}else
//[i]da qui in poi c'è il codice per i numeri da 0 a 9[/i]

    do
    {
    	cout << "\b";
    	countdown--;
        Sleep(1000);
        cout << countdown;
    } while (countdown>0);
    cout<<endl<<endl;
    cout<<"FINITO"<<endl;
    system("PAUSE");
    return 0;
}	
grazie!

P.S. so che la domanda , ma anche il programma può essere banale, ma ho inziato da pochi mesi con il c++

5 Risposte

  • Re: Problema con Backspace (\b) c++

    Inverti la posizione delle cout e scrivile così

    cout<<"\r \r";
    cout<<countdown;

    E correggi quella if che è completamente sbagliata, il C non si scrive così
  • Re: Problema con Backspace (\b) c++

    oregon ha scritto:


    Inverti la posizione delle cout e scrivile così

    cout<<"\r \r";
    cout<<countdown;

    E correggi quella if che è completamente sbagliata, il C non si scrive così
    Pardon per l'if, ho aggiunto un and.

    Ho scritto quindi il programma così, ma continua a lasciarmi questo "0" di troppo, quindi 14, 13, 12, 11, 10 , 90, 80...
    
    #include <iostream>
    #include <windows.h>
    using namespace std;
    int main() {
    int countdown,count,n;
    
        
        cout << "\nNumero da cui il countdown deve partire: ";
        cin >> countdown;
        cout<<endl;
        if(countdown>9&&countdown<100){
    //da qui in poi c'è il codice per i numeri superiori a 9, quindi con 2 cifre
        	
        	do{
        	cout<<"\r \r";
            cout<<countdown;
        	countdown--;
        	Sleep(1000);}while(countdown>0);
    	}else
    //da qui in poi c'è il codice per i numeri da 0 a 9
        do
        {
        	cout<<"\b";
        	countdown--;
            Sleep(1000);
            cout<<countdown;
        } while (countdown>0);
        cout<<endl<<endl;
        cout<<"FINITO"<<endl;
        system("PAUSE");
        return 0;
    }	
    
  • Re: Problema con Backspace (\b) c++

    Help
  • Re: Problema con Backspace (\b) c++

    Prova a resettare la console se non hai altre cose scritte, usa system("cls");
  • Re: Problema con Backspace (\b) c++

    andrea0 ha scritto:


    Help
    Guarda che gli spazi tra \r e \r sono due

    cout<<"\r \r";

    E non devi scrivere codice diverso per valori a 2 cifre o 1 cifra ...
Devi accedere o registrarti per scrivere nel forum
5 risposte