Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ******************************************************************************************
- // * Service-Funktionen für C
- // *
- // * Autor: Marcel Klein [klein.marcel@fh-swf.de]
- // * Datei: fhswf_service.h
- // * Datum: 11.10.2017
- // *
- // * Beschreibung:
- // * Headerdatei mit diversen Service-Funktionen (z.B. zum Leeren des Tastaturpuffers) unter
- // * Verwendung der Programmiersprache C für das Fach "Programmierung 1" an der FH-SWF.
- // * Die Datei wird ggf. im Laufe des Semesters ergänzt (Änderungsdatum beachten!).
- // *
- // * Installation/Verwendung:
- // * C-Projekt erstellen und Headerdatei (*.h) in das Projektverzeichnis
- // * kopieren (dort liegen auch die Quellcodedateien). Einbinden der Header-
- // * datei dann mit [#include "fhswf_service.h"].
- // * Bei dieser Variante muss die Headerdatei in jedes neue Projektverzeichnis
- // * erneut kopiert werden.
- // *
- // ******************************************************************************************
- // Schutz vor mehrfachem Einbinden der Headerdatei
- #pragma once
- #ifndef _fhswf_service_h_
- #define _fhswf_service_h_
- // Funktion zum Leeren des Tastaturpuffers
- void tastaturpuffer_leeren()
- {
- //ungetch("56");
- int tmp;
- do
- {
- tmp = getchar();
- }
- while (tmp != EOF && tmp != '\n');
- }
- // Funktion zur Prüfung der Eingabe
- int check_Input_int(char* eingabe, int laenge)
- {
- int fehler = 0;
- int rc = 0; // return_code
- int index; // Schleifenindex
- // führendes + Zeichen eliminieren
- if (eingabe[0] == '+')
- {
- laenge = laenge - 1;
- index = 0;
- while (eingabe[index] != 0)
- {
- eingabe[index] = eingabe[index + 1];
- index++;
- }
- eingabe[index - 1] = 0; //Stringendezeichen setzen
- }
- // übergebenen String zeichenweise auswerten
- for (index = 0; index < laenge; index++)
- {
- rc = isdigit(eingabe[index]); // Prüfung auf Ziffer 0 bis 9
- // Rückgabewert auswerten
- if (rc == 0)
- {
- fehler++; // Fehlervariable erhöhen
- }
- }
- // Prüfung auf Vorzeichen
- if (eingabe[0] == '-')
- {
- fehler--;
- }
- //Rückgabe an aufrufende Funktion
- return (fehler);
- }
- // Ende Funktion check_Input_int()
- #endif
- /************************************************/
- /* Programm: P11.cpp */
- /* */
- /* */
- /* */
- /* Autor: Tristan Zündorff*/
- /* */
- /* erstellt: 03.12.2018*/
- /* */
- /* Version: 1.0 */
- /* */
- /* Bemerkung: */
- /* */
- /************************************************/
- #define _CRT_SECURE_NO_WARNINGS
- #define _USE_MATH_DEFINES
- #include <stdio.h>
- #include <math.h>
- #include <cmath>
- #include <string.h>
- #include <time.h>
- #include <ctype.h>
- #include "fhswf_service.h"
- using namespace std;
- //Funktionsprototypen
- int input(char *, int *);
- int memory(int **, int);
- int main(void) {
- int loop = 1, check, index;
- int * numberarray;
- char howmanychar[1000], numberchar[1000];
- int howmanyint, numberint;
- while (loop == 1) {
- check = 0;
- //Anzahl Zahlen eingeben
- do {
- if (check == 1) {
- printf("\nUngueltiege Eingabe");
- }
- printf("\nAnzahl Zahlen: ");
- check = input(&howmanychar[0], &howmanyint);
- if (howmanyint < 2) {
- check = 1;
- }
- } while (check == 1);
- //Speicher zuweisen
- check = memory(&numberarray, howmanyint);
- if (check == 1) {
- printf("\nError allocating memory");
- getchar();
- return 1;
- }
- //Zahlen eingeben
- for (index = 0; index <= howmanyint-1; index++) {
- check = 0;
- do {
- if (check == 1) {
- printf("\nUngueltiege Eingabe");
- }
- printf("\nZahl %d: ", index + 1);
- check = input(&numberchar[0], &numberint);
- if (numberint <= 0) {
- check = 1;
- }
- } while (check == 1);
- numberarray[index] = numberint;
- }
- //Eingabe ausgeben
- printf("\nEingabe: \n");
- for (index = 0; index <= howmanyint-1; index++) {
- printf("%d ", numberarray[index]);
- }
- //ggT, kgv o. beides
- printf("\n\nggT\t\t(1)\nkgV\t\t(2)\nbeide\t\t(0)\n");
- check = 0;
- do {
- if (check == 1) {
- printf("\nUngueltiege Eingabe\n");
- }
- check = input(&numberchar[0], &numberint);
- if ((numberint != 1) && (numberint != 2) && (numberint != 0)) {
- check = 1;
- }
- } while (check == 1);
- //switch case für entsprechenden Fall
- switch (numberint) {
- case 1: printf("\nggT: %d", ggt(&numberarray[0], howmanyint)); break;
- case 2: printf("\nkgV: %d", kgv(&numberarray[0], howmanyint)); break;
- case 0: printf("\nggT: %d\nkgV: %d\n", ggt(&numberarray[0], howmanyint), kgv(&numberarray[0], howmanyint)); break;
- default: printf("\n\nUnknown switch/case Error\n\n");
- }
- free(&numberarray[0]);
- //Wiederholung?
- printf("\n\n====================\n\nContinue? (ja = 1|nein = 0)\n");
- scanf("%d", &loop);
- tastaturpuffer_leeren();
- while ((loop != 0) && (loop != 1)) {
- printf("\nUngueltiege Eingabe\nContinue? (ja = 1|nein = 0)\n");
- scanf("%d", &loop);
- tastaturpuffer_leeren();
- }
- }
- return (1);
- }
- //Eingabe von belibigen werten
- int input(char * charinput, int * intinput) {
- int check = 0;
- gets_s(charinput, 1000);
- //Auf int eingabe überprüfen
- if (check_Input_int(&charinput[0], strlen(charinput)) != 0) {
- check = 1;
- }
- //In int Übergabewert einfügen
- else {
- *intinput = atoi(charinput);
- check = 0;
- }
- return check;
- }
- //Speicher zuweisen
- int memory(int ** numberarray, int howmanyint) {
- int check = 0;
- (*numberarray) = (int*)malloc(howmanyint * sizeof(int));
- if ((*numberarray) == NULL) {
- check = 1;
- }
- return check;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement