Konsolenanwendung einzelne Stellen einer Ausgabe färben



  • Hallo,

    wie im Programm zu sehen habe ich oben bei meinem mini Taschenrechner die Operatioen angegeben und die Tasten. Nun will ich das wenn der User eine Zahl drück das die Zahl oben in einer anderen Textfarbe erscheint. Ist das möglich wenn ja wie ich habe nicht gefunden bei google und im Forum

    Vielen Dank jetzt schon mal.

    #include <cstdlib>
    #include <iostream>
    
    int mod1(int zahl_1,int zahl_2)
    {
     int erg = zahl_1 % zahl_2;
     return erg;     
    
    }
    
    float addi(float zahl_1,float zahl_2)
    {
     float erg = zahl_1 + zahl_2;
     return erg;     
    
    }
    
    float min(float zahl_1,float zahl_2)
    {
     float erg = zahl_1 - zahl_2;
     return erg;     
    
    }
    
    float multi(float zahl_1,float zahl_2)
    {
     float erg = zahl_1 * zahl_2;
     return erg;     
    
    }
    
    float div(float zahl_1,float zahl_2)
    {
     float erg = zahl_1 / zahl_2;
     return erg;     
    
    }
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        //system( "COLOR 0a");
        cout << "\t\t\t [+] [-] [%] [*] [/] \n";
        cout <<"\t\t\t \n";
        cout << "\t\t\t [1]     [2]     [3]  \n";
        cout << "\t\t\t [4]     [5]     [6]  \n";
        cout << "\t\t\t [7]     [8]     [9]  \n";
        int i = 10;
        while (i == 10) {
        string oper;
        cout << "Bitte gewünsche operation eingeben \n";
        cin >> oper;
        cout << "Zahl1 eingeben \n";
        float zahl1;
        cin >> zahl1;
        cout << "Zahle2 eingeben \n";
        float zahl2;
        cin >> zahl2;
        if(oper=="%")
        {
          int zahl_1;
          int zahl_2;
          zahl_1 =(int) zahl1;
          zahl_2 =(int) zahl2;           
          cout << "Ergebnis: " << mod1(zahl_1, zahl_2) <<"\n";
          } 
         if (oper=="+") cout << "Ergebnis: " << addi(zahl1, zahl2) << "\n"; else   
         if (oper=="-") cout << "Ergebnis: " << min(zahl1, zahl2) << "\n"; else
         if (oper=="*") cout << "Ergebnis: " << multi(zahl1, zahl2) << "\n"; else
         if (oper=="/") cout << "Ergebnis: " << div(zahl1, zahl2) << "\n"; else cout << "Gewünschte rechenopewration nicht vorghanden \n";}      
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    


  • Nur mit ANSI-Mitteln kann das nicht funktionieren, da der Standard nichts von Ausgabefarben weiß. Am besten schaust du dich mal im Konsolen-Board um, da müssten einige Threads zum Thema Farbe sein.



  • Das sieht ja schonmal gut aus,aber verwende noch für deine Division eine Abfrage umr eine Nulldivision zu vermeiden...Die Farben kannst du unter Windows mit Einbindung der conio.h bzw. unter Linux curses.h einstellen.Schau dir dazu die Man ual-Pages an.



  • für windoof

    // aktuelle Einstellungen laden
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    
    //Nach belieben ändern, in diesem Fall ein knalliges rot
    SetConsoleTextAttribute(hStdOut,FOREGROUND_RED | FOREGROUND_INTENSITY);
    

    Du solltest dir aber deinen aktuelle Einstellung sichern, damit alles wiede rzurückstellen kannst, nach dem du was in einer anderen farbe ausgegeben hast.

    CONSOLE_SCREEN_BUFFER_INFO csbi_default;
    GetConsoleScreenBufferInfo(hStdOut, &csbi_default);
    //Zurücksetzen auf gesicherte Einstellungen
    SetConsoleTextAttribute(hStdOut,csbi_default.wAttributes);
    


  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten