Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- PE1 - Umrechnung von Temperaturen.cpp :
- Diese Datei enthält die Funktion "main".
- Hier beginnt und endet die Ausführung des Programms.
- */
- //Aufgabe 1: Temperaturrechner
- //PE1 - Patrick Döhm
- #define _CRT_SECURE_NO_WARNINGS 1
- /*
- CRT_SECURE_NO_WARNINGS 1 undertrückt Warnungen der "C Run-Time Library".
- mit "#define" werden sogenannte Makros definiert, die bedingt kompiliert werden.
- */
- #include <stdlib.h>
- /*Standartbibliothek "Standardlibrary" wird inkludiert.
- Ebenfalls benötigt um rand() zu nutzen.
- */
- #include <stdio.h>
- /*
- Standartbibliothek "Standardlibrary" (i)nput (o)utput wird inkludiert.
- Ebenfalls benötigt um printf(9 zu nutzen.
- */
- //void draw_thermostat(float temp, int unit);
- int draw_thermostat(float temp, int unit)
- {
- return 0;
- }
- int main()
- {
- /*
- Hauptfunktion/Startfunktion "main()" wird beim Start des Programmes initiiert.
- int main() ist equivalent zu int main(void).
- Beide benötigen keineswegs Argumente als Parameter zum ausführen.
- Um von einer Softwareanwendung etwas eindeutig berechenn zu lassen werden,
- werden in der Informatik funktionen gebraucht.
- Wichtige Datentypen sowie deren Größe in Bits.
- Desweiteren ist Anzumerken, dass jeder Datentyp seine ganz eigenen Anwendungsbereich hat.
- __________________
- integer: 16/32Bits - ganze zahlen (%d)
- char: 8Bits - Buchstabe (/c)
- double: 64 Bits - Zahlen mit Nachkomma (%lf) -> genauer als "float"
- float: 32Bits - Zahlen mit Nachkomma (%f)
- __________________
- (Die oben genannten Datentypen werden im laufe des Programms teils genutzt.)
- */
- float tempIn, tempOut;
- /*
- es werden zwei Mal Variablen vom Typ "float" deklariert
- float = Datentyp
- "tempIn, tempOut" = Name der Variablen
- Wertebreich von +/- 10^38
- */
- int unitIn, unitOut;
- /*
- es werden zwei Variablen vom Typ "int"/integer deklariert
- int = Datentyp "unitIn,unitOut"= Name der Variablen
- Dieser Datentyp hat einen Wertebereich von -32768 bis 32767 bei 16 Bit.
- unitIn bewirkt:
- unitOut bewirkt:
- */
- int desiredConversion;
- /* es wird eine neue Variable vom Typ integer deklariert, welche den Namen "desiredConversation" trägt.
- Dieser hätte jedoch auch in der gleiche Zeile wie die beiden anderen deklariert werden können.
- Dies würde dann ca so aussehen: "int unitIn,unitOut,desiredConversation".
- desiredConversation bewirkt:
- */
- char response;
- /*
- Eine Variable des Datentyps "char" namens "response" wurde deklariert.
- Dieser Datentyp hat einen Wertebereich von -128 bis 127
- response bewirkt:
- */
- printf("\n\nProgramm zur Umrechnung von Temperaturen\n");
- printf("----------------------------------------\n");
- /*
- Hier wird die Ausgabefunktion "printf" verwendet.
- Diese nimmt eine sogenannte Zeichenkette, sprich eine endliche
- Folge von Zeichen, mit Text und Formatierungs hinweisen sowie mit einem oder mehreren
- Werten entgegen.
- Wird diese Zeichenkette ausgegeben, so wird diese in die richtige Schreibweise(
- Formatierung eingefügt).
- Abgesehen davon ist "\n" für die Formatierung sehr wichtig, da diese ebenso wie
- "::std::endl" (endline). Beide Sorgen dafür das die Ausgabe in einer neuen Zeile stattfindet.
- "::std::endl" hingegen sogt zusätzlich noch für das ausgeben zwischengespeicherter Daten, was
- den Prozess verlangsamert.
- */
- do {
- /*
- In der oberen Zeile wurde eine "do-while" Schleife erstellt, und wird in den Folgenden genutzt
- Den Aufbau kann man sich wie folgt vorstellen:
- {for (Anfangswert; Prüfe BEdingung; Veränderung des Anfangswertes) }
- Anweisungen
- */
- printf("\nAus welchem Einheitensystem soll umgerechnet werden?\n\n");
- printf("1: Grad C 2: Grad F 3: Kalvin 4: Rømer\n\n");
- printf("Ihre Wahl: ");
- scanf("%i", &unitIn);
- /*
- Hier wird nun gebrauch von der Funktion "scanf" gemacht.
- Djese besitzt eine ähnliche Syntax wie die zu vor genutzte
- Funktion "printf".
- "scanf" ist dazu da um einen Wert einzulesen und diesen in angegebene Variablen
- zu speichern.
- Dazu jedoch ist das nutzen der Variablen.
- Sonst:
- scanf("%i", x); = Fehler
- Richtig ist: scanf("%i",&x); .
- */
- /*
- In der unteren Zeile wird "while" genutzt.
- Dies steht für die Nutzung eines Loops, welche einem die Notwendigkeit nimmt
- Teile seines codes immer wieder neu schreiben zu müssen.
- */
- while (getchar() != '\n');
- /*
- In der oberen Zeile wird das erste Mal der Befehl
- "getchar" genutzt. Dieser hat die Funktion, das Programm
- anzuhalten und erst nach einer Tastatureingabe weiter laufen zu lassen.
- Das beim betätigen der Tastatur genutzte Zeichen wird somit als
- "char-Variable gespeicher".
- */
- printf("\nBitte geben Sie die umzurechnende Temperatur an: ");
- scanf("%f", &tempIn);
- //Aufgabe 3 - keine Werte unter dem totalen Nullpunkt
- /*while ((unitIn == 1 && tempIn <= -273.15) || (unitIn == 2 && tempIn <= 0) || (unitIn == 3 && tempIn <= 0) || (unitIn == 4 && tempIn <= 7,5))
- do {
- printf("Der eingegebene Wert befindet sich unter dem absoluten Nullpunkt. Bitte geben sie einen anderen Wert ein");
- scanf("%f", &tempIn);
- }*/
- while (getchar() != '\n');
- printf("\nIn welches Einheitensystem soll umgerechnet werden?\n\n");
- printf("1: Grad C 2: Grad F 3: Kalvin 4:Rømer \n\n");
- /*
- Hier gibt "printf" eine Frage aus, welche dann nur das betätigen der Tastatur
- das Programm weiter berechnen und zu einem Ergenis kommen lässt.
- Dies ist auch wieder durch die Nutzung von getchar möglich.
- */
- printf("Ihre Wahl: ");
- scanf("%i", &unitOut);
- while (getchar() != '\n');
- /*
- printf gibt hier nun die zuvor eingegebene Auswahl an un zeigt ihnen welche Wahl sie
- zuvor beim Auswählen des Einheitensystems getroffen haben.
- */
- desiredConversion = unitIn * 10 + unitOut;
- switch (desiredConversion)
- {
- /*
- In der obrigen Zeile wird ein Switch Case genutzt.
- Dieser gilt ähnlich wie eine "if" Anweisung zum ausführen
- unterschiedlicher Aktionen in verschiedenen Fällen.
- In den Klammern "()" nach dem "switch" wird der Ausdruck reingeschrieben,
- welchen wir mit der hilfe eines Switch Case's auswerten wollen.
- Im Anschluss darauf, wie in den unteren Zeilen zu erkennen, folgt das Schlüsselwort
- "case" welches die verschiedenen Fälle kennzeichnet.
- Nach dem Doppelpunkt, welcher nach dem "case" folgt, kommen die auszuführenden Befehle.
- Mit "break" wird beim gelungenen Ausführen eines Falles, die switch-Anweisung
- verlassen.
- */
- // Umrechnung von Celsius in Fahrenheit
- case 12:
- if (tempIn >= -273.15) {
- tempOut = tempIn * 1.8 + 32.0;
- printf("\n\n%.2fgrad C = %.2fgrad F\n\n", tempIn, tempOut);
- draw_thermostat(tempOut, unitOut);
- break;
- }
- /*
- In den Folgenden Zeilen wird nach dem in den oberen zeilen "if" genutzt wird, "else" verwendet.
- So fern ein Wert, in diesem Falle (für Celsius) unter -273,15, eingegeben wird, so wird "printf" ausgeführt.
- Dieser dient dazu den Text "Wert unter Nullpunkt" auszugeben.
- */
- else {
- printf("Wert unter Nullpunkt.");
- break;
- }
- // Umrechung von Celsius in Kalvin
- case 13:
- if (tempIn >= 0) {
- tempOut = tempIn + 273.15;
- printf("\n\n%.2fgrad C = %.2f K\n\n", tempIn, tempOut);
- draw_thermostat(tempOut, unitOut);
- break;
- }
- else {
- printf("Wert unter Nullpunkt.");
- break;
- }
- // Umrechnung Fahrenheit in Celsius
- case 21:
- if (tempIn >= 0) {
- tempOut = (tempIn + 32.0) * 5.0 / 9.0;
- printf("\n\n%.2fgrad F = %.2fgrad C\n\n", tempIn, tempOut);
- draw_thermostat(tempOut, unitOut);
- break;
- }
- else {
- printf("Wert unter Nullpunkt.");
- break;
- }
- // Umrechnen von Fahrenheit in kalvin
- case 23:
- if (tempIn >= 0) {
- tempOut = (tempIn + 459.67) * 5.0 / 9.0;
- printf("\n\n%.2fgrad F = %.2fK\n\n", tempIn, tempOut);
- draw_thermostat(tempOut, unitOut);
- break;
- }
- else {
- printf("Wert unter Nullpunkt.");
- break;
- }
- // Umrechnung von kalvin in Celsius
- case 31:
- if (tempIn >= 0) {
- tempOut = tempIn + 273.15;
- printf("\n\n%.2fK = %.2fgrad C\n\n", tempIn, tempOut);
- draw_thermostat(tempOut, unitOut);
- break;
- }
- else {
- printf("Wert unter Nullpunkt.");
- break;
- }
- // Umrechnung von Kalvin in Fahrenheit
- case 32:
- if (tempIn >= 0) {
- tempOut = tempIn * 1.8 - 459.67;
- printf("\n\n%.2fK = %.2fgrad F\n\n", tempIn, tempOut);
- draw_thermostat(tempOut, unitOut);
- break;
- }
- else {
- printf("Wert unter Nullpunkt.");
- }
- // Umrechnung von Rømer in Celsius
- case 41:
- if (tempIn >= 0) {
- tempOut = (tempIn - 273.15) * 0.52500;
- printf("\n\n%.2fR = %.2fgrad C\n\n", tempIn, tempOut);
- draw_thermostat(tempOut, unitOut);
- break;
- }
- else {
- printf("Wert unter Nullpunkt.");
- }
- // Umrechnung von Rømer in Kalvin
- case 43:
- if (tempIn >= 0) {
- tempOut = (tempIn - 7.5 / 0.52500) + 273.15;
- printf("\n\n%.2fR = %.2fgrad K\n\n", tempIn, tempOut);
- draw_thermostat(tempOut, unitOut);
- break;
- }
- else {
- printf("Wert unter Nullpunkt.");
- }
- // Umrechnung von Rømer in Fahrenheit
- case 42:
- if (tempIn >= 0) {
- tempOut = (tempIn - 7.5 * 3.4286) + 32.00;
- printf("\n\n%.2fR = %.2fgrad F\n\n", tempIn, tempOut);
- draw_thermostat(tempOut, unitOut);
- break;
- }
- else {
- printf("Wert unter Nullpunkt.");
- }
- printf("\n\nerneute Berechnung? (j/n)");
- scanf("%c", &response);
- while (getchar() != '\n');
- /*
- In den Oberen beiden Zeien wurde nun nach dem Ende der Berechnung gefragt,
- ob eine weitere Berechnung gewünscht sei.
- Durch "getchar" wird auch hier wieder auf das Betätigen der tastatur gewartet.
- */
- }
- } while (response == 'j' || response == 'J');
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement