Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.51 KB | None | 0 0
  1. /*
  2. PE1 - Umrechnung von Temperaturen.cpp :
  3. Diese Datei enthält die Funktion "main".
  4. Hier beginnt und endet die Ausführung des Programms.
  5. */
  6.  
  7. //Aufgabe 1: Temperaturrechner
  8. //PE1 - Patrick Döhm
  9.  
  10. #define _CRT_SECURE_NO_WARNINGS 1
  11. /*
  12. CRT_SECURE_NO_WARNINGS 1 undertrückt Warnungen der "C Run-Time Library".
  13. mit "#define" werden sogenannte Makros definiert, die bedingt kompiliert werden.
  14. */
  15.  
  16. #include <stdlib.h>
  17. /*Standartbibliothek "Standardlibrary" wird inkludiert.
  18. Ebenfalls benötigt um rand() zu nutzen.
  19. */
  20. #include <stdio.h>
  21. /*
  22. Standartbibliothek "Standardlibrary" (i)nput (o)utput wird inkludiert.
  23. Ebenfalls benötigt um printf(9 zu nutzen.
  24. */
  25. //void draw_thermostat(float temp, int unit);
  26.  
  27. int draw_thermostat(float temp, int unit)
  28. {
  29.  
  30. return 0;
  31. }
  32.  
  33. int main()
  34. {
  35. /*
  36. Hauptfunktion/Startfunktion "main()" wird beim Start des Programmes initiiert.
  37. int main() ist equivalent zu int main(void).
  38. Beide benötigen keineswegs Argumente als Parameter zum ausführen.
  39. Um von einer Softwareanwendung etwas eindeutig berechenn zu lassen werden,
  40. werden in der Informatik funktionen gebraucht.
  41. Wichtige Datentypen sowie deren Größe in Bits.
  42. Desweiteren ist Anzumerken, dass jeder Datentyp seine ganz eigenen Anwendungsbereich hat.
  43. __________________
  44.  
  45. integer: 16/32Bits - ganze zahlen (%d)
  46. char: 8Bits - Buchstabe (/c)
  47. double: 64 Bits - Zahlen mit Nachkomma (%lf) -> genauer als "float"
  48. float: 32Bits - Zahlen mit Nachkomma (%f)
  49. __________________
  50.  
  51. (Die oben genannten Datentypen werden im laufe des Programms teils genutzt.)
  52. */
  53.  
  54. float tempIn, tempOut;
  55. /*
  56. es werden zwei Mal Variablen vom Typ "float" deklariert
  57. float = Datentyp
  58. "tempIn, tempOut" = Name der Variablen
  59. Wertebreich von +/- 10^38
  60. */
  61. int unitIn, unitOut;
  62. /*
  63. es werden zwei Variablen vom Typ "int"/integer deklariert
  64. int = Datentyp "unitIn,unitOut"= Name der Variablen
  65. Dieser Datentyp hat einen Wertebereich von -32768 bis 32767 bei 16 Bit.
  66. unitIn bewirkt:
  67. unitOut bewirkt:
  68. */
  69.  
  70. int desiredConversion;
  71. /* es wird eine neue Variable vom Typ integer deklariert, welche den Namen "desiredConversation" trägt.
  72. Dieser hätte jedoch auch in der gleiche Zeile wie die beiden anderen deklariert werden können.
  73. Dies würde dann ca so aussehen: "int unitIn,unitOut,desiredConversation".
  74. desiredConversation bewirkt:
  75. */
  76.  
  77. char response;
  78. /*
  79. Eine Variable des Datentyps "char" namens "response" wurde deklariert.
  80. Dieser Datentyp hat einen Wertebereich von -128 bis 127
  81. response bewirkt:
  82. */
  83.  
  84. printf("\n\nProgramm zur Umrechnung von Temperaturen\n");
  85. printf("----------------------------------------\n");
  86. /*
  87. Hier wird die Ausgabefunktion "printf" verwendet.
  88. Diese nimmt eine sogenannte Zeichenkette, sprich eine endliche
  89. Folge von Zeichen, mit Text und Formatierungs hinweisen sowie mit einem oder mehreren
  90. Werten entgegen.
  91. Wird diese Zeichenkette ausgegeben, so wird diese in die richtige Schreibweise(
  92. Formatierung eingefügt).
  93. Abgesehen davon ist "\n" für die Formatierung sehr wichtig, da diese ebenso wie
  94. "::std::endl" (endline). Beide Sorgen dafür das die Ausgabe in einer neuen Zeile stattfindet.
  95. "::std::endl" hingegen sogt zusätzlich noch für das ausgeben zwischengespeicherter Daten, was
  96. den Prozess verlangsamert.
  97. */
  98.  
  99. do {
  100. /*
  101. In der oberen Zeile wurde eine "do-while" Schleife erstellt, und wird in den Folgenden genutzt
  102. Den Aufbau kann man sich wie folgt vorstellen:
  103. {for (Anfangswert; Prüfe BEdingung; Veränderung des Anfangswertes) }
  104. Anweisungen
  105. */
  106. printf("\nAus welchem Einheitensystem soll umgerechnet werden?\n\n");
  107. printf("1: Grad C 2: Grad F 3: Kalvin 4: Rømer\n\n");
  108. printf("Ihre Wahl: ");
  109. scanf("%i", &unitIn);
  110. /*
  111. Hier wird nun gebrauch von der Funktion "scanf" gemacht.
  112. Djese besitzt eine ähnliche Syntax wie die zu vor genutzte
  113. Funktion "printf".
  114. "scanf" ist dazu da um einen Wert einzulesen und diesen in angegebene Variablen
  115. zu speichern.
  116. Dazu jedoch ist das nutzen der Variablen.
  117. Sonst:
  118. scanf("%i", x); = Fehler
  119. Richtig ist: scanf("%i",&x); .
  120. */
  121.  
  122. /*
  123. In der unteren Zeile wird "while" genutzt.
  124. Dies steht für die Nutzung eines Loops, welche einem die Notwendigkeit nimmt
  125. Teile seines codes immer wieder neu schreiben zu müssen.
  126. */
  127. while (getchar() != '\n');
  128. /*
  129. In der oberen Zeile wird das erste Mal der Befehl
  130. "getchar" genutzt. Dieser hat die Funktion, das Programm
  131. anzuhalten und erst nach einer Tastatureingabe weiter laufen zu lassen.
  132. Das beim betätigen der Tastatur genutzte Zeichen wird somit als
  133. "char-Variable gespeicher".
  134. */
  135.  
  136. printf("\nBitte geben Sie die umzurechnende Temperatur an: ");
  137. scanf("%f", &tempIn);
  138.  
  139. //Aufgabe 3 - keine Werte unter dem totalen Nullpunkt
  140. /*while ((unitIn == 1 && tempIn <= -273.15) || (unitIn == 2 && tempIn <= 0) || (unitIn == 3 && tempIn <= 0) || (unitIn == 4 && tempIn <= 7,5))
  141. do {
  142. printf("Der eingegebene Wert befindet sich unter dem absoluten Nullpunkt. Bitte geben sie einen anderen Wert ein");
  143. scanf("%f", &tempIn);
  144. }*/
  145. while (getchar() != '\n');
  146.  
  147. printf("\nIn welches Einheitensystem soll umgerechnet werden?\n\n");
  148. printf("1: Grad C 2: Grad F 3: Kalvin 4:Rømer \n\n");
  149. /*
  150. Hier gibt "printf" eine Frage aus, welche dann nur das betätigen der Tastatur
  151. das Programm weiter berechnen und zu einem Ergenis kommen lässt.
  152. Dies ist auch wieder durch die Nutzung von getchar möglich.
  153. */
  154.  
  155. printf("Ihre Wahl: ");
  156. scanf("%i", &unitOut);
  157. while (getchar() != '\n');
  158. /*
  159. printf gibt hier nun die zuvor eingegebene Auswahl an un zeigt ihnen welche Wahl sie
  160. zuvor beim Auswählen des Einheitensystems getroffen haben.
  161. */
  162. desiredConversion = unitIn * 10 + unitOut;
  163. switch (desiredConversion)
  164. {
  165. /*
  166. In der obrigen Zeile wird ein Switch Case genutzt.
  167. Dieser gilt ähnlich wie eine "if" Anweisung zum ausführen
  168. unterschiedlicher Aktionen in verschiedenen Fällen.
  169. In den Klammern "()" nach dem "switch" wird der Ausdruck reingeschrieben,
  170. welchen wir mit der hilfe eines Switch Case's auswerten wollen.
  171.  
  172. Im Anschluss darauf, wie in den unteren Zeilen zu erkennen, folgt das Schlüsselwort
  173. "case" welches die verschiedenen Fälle kennzeichnet.
  174. Nach dem Doppelpunkt, welcher nach dem "case" folgt, kommen die auszuführenden Befehle.
  175. Mit "break" wird beim gelungenen Ausführen eines Falles, die switch-Anweisung
  176. verlassen.
  177. */
  178. // Umrechnung von Celsius in Fahrenheit
  179. case 12:
  180. if (tempIn >= -273.15) {
  181. tempOut = tempIn * 1.8 + 32.0;
  182. printf("\n\n%.2fgrad C = %.2fgrad F\n\n", tempIn, tempOut);
  183. draw_thermostat(tempOut, unitOut);
  184. break;
  185. }
  186. /*
  187. In den Folgenden Zeilen wird nach dem in den oberen zeilen "if" genutzt wird, "else" verwendet.
  188. So fern ein Wert, in diesem Falle (für Celsius) unter -273,15, eingegeben wird, so wird "printf" ausgeführt.
  189. Dieser dient dazu den Text "Wert unter Nullpunkt" auszugeben.
  190. */
  191. else {
  192. printf("Wert unter Nullpunkt.");
  193. break;
  194. }
  195. // Umrechung von Celsius in Kalvin
  196. case 13:
  197. if (tempIn >= 0) {
  198. tempOut = tempIn + 273.15;
  199. printf("\n\n%.2fgrad C = %.2f K\n\n", tempIn, tempOut);
  200. draw_thermostat(tempOut, unitOut);
  201. break;
  202. }
  203. else {
  204. printf("Wert unter Nullpunkt.");
  205. break;
  206. }
  207.  
  208. // Umrechnung Fahrenheit in Celsius
  209. case 21:
  210. if (tempIn >= 0) {
  211. tempOut = (tempIn + 32.0) * 5.0 / 9.0;
  212. printf("\n\n%.2fgrad F = %.2fgrad C\n\n", tempIn, tempOut);
  213. draw_thermostat(tempOut, unitOut);
  214. break;
  215. }
  216. else {
  217. printf("Wert unter Nullpunkt.");
  218. break;
  219. }
  220.  
  221. // Umrechnen von Fahrenheit in kalvin
  222. case 23:
  223. if (tempIn >= 0) {
  224. tempOut = (tempIn + 459.67) * 5.0 / 9.0;
  225. printf("\n\n%.2fgrad F = %.2fK\n\n", tempIn, tempOut);
  226. draw_thermostat(tempOut, unitOut);
  227. break;
  228. }
  229. else {
  230. printf("Wert unter Nullpunkt.");
  231. break;
  232. }
  233.  
  234. // Umrechnung von kalvin in Celsius
  235. case 31:
  236. if (tempIn >= 0) {
  237. tempOut = tempIn + 273.15;
  238. printf("\n\n%.2fK = %.2fgrad C\n\n", tempIn, tempOut);
  239. draw_thermostat(tempOut, unitOut);
  240. break;
  241. }
  242. else {
  243. printf("Wert unter Nullpunkt.");
  244. break;
  245. }
  246.  
  247. // Umrechnung von Kalvin in Fahrenheit
  248. case 32:
  249. if (tempIn >= 0) {
  250. tempOut = tempIn * 1.8 - 459.67;
  251. printf("\n\n%.2fK = %.2fgrad F\n\n", tempIn, tempOut);
  252. draw_thermostat(tempOut, unitOut);
  253. break;
  254. }
  255. else {
  256. printf("Wert unter Nullpunkt.");
  257.  
  258. }
  259.  
  260. // Umrechnung von Rømer in Celsius
  261. case 41:
  262. if (tempIn >= 0) {
  263. tempOut = (tempIn - 273.15) * 0.52500;
  264. printf("\n\n%.2fR = %.2fgrad C\n\n", tempIn, tempOut);
  265. draw_thermostat(tempOut, unitOut);
  266. break;
  267. }
  268. else {
  269. printf("Wert unter Nullpunkt.");
  270. }
  271. // Umrechnung von Rømer in Kalvin
  272. case 43:
  273. if (tempIn >= 0) {
  274. tempOut = (tempIn - 7.5 / 0.52500) + 273.15;
  275. printf("\n\n%.2fR = %.2fgrad K\n\n", tempIn, tempOut);
  276. draw_thermostat(tempOut, unitOut);
  277. break;
  278. }
  279. else {
  280. printf("Wert unter Nullpunkt.");
  281. }
  282. // Umrechnung von Rømer in Fahrenheit
  283. case 42:
  284. if (tempIn >= 0) {
  285. tempOut = (tempIn - 7.5 * 3.4286) + 32.00;
  286. printf("\n\n%.2fR = %.2fgrad F\n\n", tempIn, tempOut);
  287. draw_thermostat(tempOut, unitOut);
  288. break;
  289. }
  290. else {
  291. printf("Wert unter Nullpunkt.");
  292. }
  293.  
  294. printf("\n\nerneute Berechnung? (j/n)");
  295. scanf("%c", &response);
  296. while (getchar() != '\n');
  297. /*
  298. In den Oberen beiden Zeien wurde nun nach dem Ende der Berechnung gefragt,
  299. ob eine weitere Berechnung gewünscht sei.
  300. Durch "getchar" wird auch hier wieder auf das Betätigen der tastatur gewartet.
  301.  
  302. */
  303.  
  304. }
  305. } while (response == 'j' || response == 'J');
  306.  
  307. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement