Advertisement
Guest User

P11

a guest
Dec 13th, 2018
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.51 KB | None | 0 0
  1. // ******************************************************************************************
  2. // * Service-Funktionen für C
  3. // *
  4. // * Autor: Marcel Klein [klein.marcel@fh-swf.de]
  5. // * Datei: fhswf_service.h
  6. // * Datum: 11.10.2017
  7. // *
  8. // * Beschreibung:
  9. // * Headerdatei mit diversen Service-Funktionen (z.B. zum Leeren des Tastaturpuffers) unter
  10. // * Verwendung der Programmiersprache C für das Fach "Programmierung 1" an der FH-SWF.
  11. // * Die Datei wird ggf. im Laufe des Semesters ergänzt (Änderungsdatum beachten!).
  12. // *
  13. // * Installation/Verwendung:
  14. // * C-Projekt erstellen und Headerdatei (*.h) in das Projektverzeichnis
  15. // * kopieren (dort liegen auch die Quellcodedateien). Einbinden der Header-
  16. // * datei dann mit [#include "fhswf_service.h"].
  17. // * Bei dieser Variante muss die Headerdatei in jedes neue Projektverzeichnis
  18. // * erneut kopiert werden.
  19. // *
  20. // ******************************************************************************************
  21.  
  22. // Schutz vor mehrfachem Einbinden der Headerdatei
  23. #pragma once
  24. #ifndef _fhswf_service_h_
  25. #define _fhswf_service_h_
  26.  
  27. // Funktion zum Leeren des Tastaturpuffers
  28. void tastaturpuffer_leeren()
  29. {
  30. //ungetch("56");
  31. int tmp;
  32.  
  33. do
  34. {
  35. tmp = getchar();
  36. }
  37. while (tmp != EOF && tmp != '\n');
  38. }
  39.  
  40.  
  41.  
  42. // Funktion zur Prüfung der Eingabe
  43. int check_Input_int(char* eingabe, int laenge)
  44. {
  45. int fehler = 0;
  46. int rc = 0; // return_code
  47. int index; // Schleifenindex
  48.  
  49.  
  50. // führendes + Zeichen eliminieren
  51. if (eingabe[0] == '+')
  52. {
  53. laenge = laenge - 1;
  54. index = 0;
  55. while (eingabe[index] != 0)
  56. {
  57. eingabe[index] = eingabe[index + 1];
  58. index++;
  59. }
  60. eingabe[index - 1] = 0; //Stringendezeichen setzen
  61. }
  62.  
  63. // übergebenen String zeichenweise auswerten
  64. for (index = 0; index < laenge; index++)
  65. {
  66. rc = isdigit(eingabe[index]); // Prüfung auf Ziffer 0 bis 9
  67.  
  68. // Rückgabewert auswerten
  69. if (rc == 0)
  70. {
  71. fehler++; // Fehlervariable erhöhen
  72. }
  73. }
  74.  
  75. // Prüfung auf Vorzeichen
  76. if (eingabe[0] == '-')
  77. {
  78. fehler--;
  79. }
  80.  
  81. //Rückgabe an aufrufende Funktion
  82. return (fehler);
  83. }
  84.  
  85. // Ende Funktion check_Input_int()
  86.  
  87. #endif
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112. /************************************************/
  113. /* Programm: P11.cpp */
  114. /* */
  115. /* Palindrom*/
  116. /* */
  117. /* Autor: Tristan Zündorff*/
  118. /* */
  119. /* erstellt: 13.12.2018*/
  120. /* */
  121. /* Version: 1.0 */
  122. /* */
  123. /* Bemerkung: */
  124. /* */
  125. /************************************************/
  126.  
  127.  
  128.  
  129. #define _CRT_SECURE_NO_WARNINGS
  130. #define _USE_MATH_DEFINES
  131. #include <stdio.h>
  132. #include <math.h>
  133. #include <cmath>
  134. #include <string.h>
  135. #include <time.h>
  136. #include <ctype.h>
  137. #include "fhswf_service.h"
  138. using namespace std;
  139.  
  140. //Funktionsprototypen
  141. int input(char *, int *);
  142. int memory(int **, int);
  143.  
  144. int main(void) {
  145. int loop = 1, check, index;
  146. int * numberarray;
  147. char howmanychar[1000], numberchar[1000];
  148. int howmanyint, numberint;
  149.  
  150. while (loop == 1) {
  151. check = 0;
  152.  
  153. //Anzahl Zahlen eingeben
  154. do {
  155. if (check == 1) {
  156. printf("\nUngueltiege Eingabe");
  157. }
  158. printf("\nAnzahl Zahlen: ");
  159. check = input(&howmanychar[0], &howmanyint);
  160. if (howmanyint < 2) {
  161. check = 1;
  162. }
  163. } while (check == 1);
  164.  
  165. //Speicher zuweisen
  166. check = memory(&numberarray, howmanyint);
  167. if (check == 1) {
  168. printf("\nError allocating memory");
  169. getchar();
  170. return 1;
  171. }
  172.  
  173. //Zahlen eingeben
  174. for (index = 0; index <= howmanyint-1; index++) {
  175. check = 0;
  176. do {
  177. if (check == 1) {
  178. printf("\nUngueltiege Eingabe");
  179. }
  180. printf("\nZahl %d: ", index + 1);
  181. check = input(&numberchar[0], &numberint);
  182. if (numberint <= 0) {
  183. check = 1;
  184. }
  185. } while (check == 1);
  186. numberarray[index] = numberint;
  187. }
  188.  
  189. //Eingabe ausgeben
  190. printf("\nEingabe: \n");
  191. for (index = 0; index <= howmanyint-1; index++) {
  192. printf("%d ", numberarray[index]);
  193. }
  194.  
  195. //ggT, kgv o. beides
  196. printf("\n\nggT\t\t(1)\nkgV\t\t(2)\nbeide\t\t(0)\n");
  197. check = 0;
  198. do {
  199. if (check == 1) {
  200. printf("\nUngueltiege Eingabe\n");
  201. }
  202. check = input(&numberchar[0], &numberint);
  203.  
  204. if ((numberint != 1) && (numberint != 2) && (numberint != 0)) {
  205. check = 1;
  206. }
  207. } while (check == 1);
  208.  
  209. //switch case für entsprechenden Fall
  210. switch (numberint) {
  211. case 1: printf("\nggT: %d", ggt(&numberarray[0], howmanyint)); break;
  212. case 2: printf("\nkgV: %d", kgv(&numberarray[0], howmanyint)); break;
  213. case 0: printf("\nggT: %d\nkgV: %d\n", ggt(&numberarray[0], howmanyint), kgv(&numberarray[0], howmanyint)); break;
  214. default: printf("\n\nUnknown switch/case Error\n\n");
  215. }
  216.  
  217. free(&numberarray[0]);
  218.  
  219. //Wiederholung?
  220. printf("\n\n====================\n\nContinue? (ja = 1|nein = 0)\n");
  221. scanf("%d", &loop);
  222. tastaturpuffer_leeren();
  223. while ((loop != 0) && (loop != 1)) {
  224. printf("\nUngueltiege Eingabe\nContinue? (ja = 1|nein = 0)\n");
  225. scanf("%d", &loop);
  226. tastaturpuffer_leeren();
  227. }
  228.  
  229. }
  230.  
  231. return (1);
  232. }
  233.  
  234. //Eingabe von belibigen werten
  235. int input(char * charinput, int * intinput) {
  236. int check = 0;
  237. gets_s(charinput, 1000);
  238. //Auf int eingabe überprüfen
  239. if (check_Input_int(&charinput[0], strlen(charinput)) != 0) {
  240. check = 1;
  241. }
  242. //In int Übergabewert einfügen
  243. else {
  244. *intinput = atoi(charinput);
  245. check = 0;
  246. }
  247.  
  248. return check;
  249. }
  250.  
  251. //Speicher zuweisen
  252. int memory(int ** numberarray, int howmanyint) {
  253. int check = 0;
  254. (*numberarray) = (int*)malloc(howmanyint * sizeof(int));
  255.  
  256. if ((*numberarray) == NULL) {
  257. check = 1;
  258. }
  259.  
  260. return check;
  261. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement