====== Der Datentyp char ====== ==== Aufgabe 0 ==== Du möchtest nun dein Programm, welches Dezimalzahlen in Dualzahlen umrechnet erweitern. Der Benutzer soll gefragt werden, immer wieder auch gefragt werden, ob er noch eine weitere Zahl eingeben möchte. Der Benutzer antwortet mit 'j' für ja und 'n' für nein! Wie könntest du das realisieren? ===== Grundlegendes ===== Variablen vom Datentyp ''char'' können ein Zeichen als Wert annehmen. Als Zeichen oder Character bezeichnet man: * Buchstaben ('A'...'Z', 'a'...'z') * Ziffern ('0'...'9') * Sonderzeichen ('!', '#', '$', '%',...) * Leerzeichen (' ') * Steuerzeichen gemäß ASCII-Codetabelle *(weiter Informationen auf: http://www.goascii.de/) ASCII steht für "American Standard Code for Information Interchange". Im ASCII sind die Zeichen 0 bis 127 laut Tabelle genormt. Dieser Code wird von fast allen Rechnern verwendet. Die Zeichen 0 bis 31 sind Steuerzeichen (z.B. \n hat den Wert 10) und werden im allgemeinen nicht gedruckt und deshalb in der Liste nicht dargestellt. ''char''-Variablen werden, wie auch alle anderen Variablen - im Vereinbarungsteil deklariert. **Beispiel:** char zeichen; Konstanten vom Typ ''char'' werden im Programm zwischen Hochkommata gestellt (z.B. 'A', 'x'). **Beispiel:** char zeichen; zeichen='A'; Da ''char''-Werte durch ihre Nummern im verwendeten Zeichensatz dargestellt werden, können sie wie Zahlen mit Vergleichsoperatoren (z.B. <, >, ==,...) miteinander verglichen werden. Man kann einer Varialbe vom Typ ''char'' auch einen ganzzahligen Wert zuweisen. Ausgegeben wird dann jedoch das entsprechende Zeichen der ASCII-Tabelle. **Beispiel:** char zeichen; zeichen=65; //Ausgabe: 'A' Um beispielsweise Zeichen einzulesen oder am Bildschirm auszugeben gibt es verschiedene **Bibliotheksfunktionen**, welche in ''conio.h'' enthalten sind. Einige wichtige daraus sind: * getch(): liest ein Zeichen von der Tastatur, ohne es am Bildschirm darzustellen. * putch(): schreibt ein Zeichen auf den Bildschirm, z.B. putch(s) schreibt s auf den Bildschirm * weitere folgen! **Die Ascii-Tabelle:** {{:informatik:allgemeine_grundlagen_zur_programmierung:ascii.jpg|}} ==== Aufgabe 1 ==== Schreibe ein Programm, dass alle Zeichen der ASCII-Tabelle mit der entsprechenden Nr. ausgibt. int main() { char zeichen; for(int i=32; i<=127; i++) { zeichen=i; cout< Eine andere Lösungsvariante, die alle Zeichen zwischen 'A' und 'z' ausgibt: int main() { for(char zeichen='A'; zeichen<='z'; zeichen++) { cout<<(int)zeichen<<". Zeichen: "< ==== Aufgabe 2 ==== Erledige nun Aufgabe 0! int main() { int dezimalzahl; char wiederholung='j'; cout<<"Dieses Programm wandelt die eingegebene Dezimalzahl in eine Dualzahl um."; cout<<"\n Bitte das Ergebnis von hinten nach vorne lesen!\n"; while(wiederholung=='j'){ cout<<"\n Geben Sie eine Dezimalzahl ein: "; cin>>dezimalzahl; while(dezimalzahl!=0) { cout< ==== Aufgabe 3 ==== Schreibe ein Programm, welches eine duale Ziffernfolge vom Bildschirm zeichenweise einliest und in eine Dezimalzahl umrechnet. //--------------------------------------------------------------------------- // Programmname: dual2dezi.cpp #include ; #include : using namespace std; int main() {int dezizahl=0,ziffer; char cziffer,weiter; cout << "Umwandlung Dualzahl->Dezimalzahl (Ende ... e)\n\n"; do {cout << "\nDualzahl: "; do {cziffer=getch(); } while(cziffer!='0' && cziffer!='1' && cziffer!='e'); putch(cziffer); while (cziffer!='e') {if (cziffer=='0') ziffer=0; if (cziffer=='1') ziffer=1; dezizahl=dezizahl*2+ziffer; do {cziffer=getch(); } while(cziffer!='0' && cziffer!='1' && cziffer!='e'); putch(cziffer); } cout << "\nDezimalzahl: " << dezizahl; dezizahl=0; cout << "\n\nWeiter (j/n)?"; weiter=getch(); } while (weiter!='n'); cout << "\nAuf Wiedersehen!"; getch(); return 0; } //--------------------------------------------------------------------------- ==== Aufgabe 4: ==== Schreibe ein Programm, welches eine hexadezimale Ziffernfolge vom Bildschirm zeichenweise einliest und in eine Dezimalzahl umrechnet. //--------------------------------------------------------------------------- // Programmname: hexa2dezi.cpp #include ; #include : using namespace std; int main() {int dezizahl=0,ziffer; char cziffer; cout << "Umwandlung Hexidezimalzahl->Dezimalzahl (Ende ... e)\n\n"; cout << "\nHexadezimalzahl: "; cziffer=getch(); putch(cziffer); while (cziffer!='e') {switch (cziffer) {case '0': ziffer=0; break; case '1': ziffer=1; break; case '2': ziffer=2; break; case '3': ziffer=3; break; case '4': ziffer=4; break; case '5': ziffer=5; break; case '6': ziffer=6; break; case '7': ziffer=7; break; case '8': ziffer=8; break; case '9': ziffer=9; break; case 'A': ziffer=10; break; case 'B': ziffer=11; break; case 'C': ziffer=12; break; case 'D': ziffer=13; break; case 'E': ziffer=14; break; case 'F': ziffer=15; break; } dezizahl=dezizahl*16+ziffer; cziffer=getch();putch(cziffer); } cout << "\n" << dezizahl << "\n"; cout << "\nAuf Wiedersehen!"; getch(); return 0; } //---------------------------------------------------------------------------