From cacbe74855ac3197dbe9b81c6b1e120cf6029dfb Mon Sep 17 00:00:00 2001 From: Leaced Date: Mon, 10 Apr 2017 21:17:40 +0200 Subject: [PATCH] =?UTF-8?q?Programme=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Nebenfunktionen/Kommazahl.cpp | 47 +++++++++++++++++++++++++++++++++++ Nebenfunktionen/Runden.cpp | 17 +++++++++++++ Sonstiges/Zähler.cpp | 27 ++++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 Nebenfunktionen/Kommazahl.cpp create mode 100644 Nebenfunktionen/Runden.cpp create mode 100644 Sonstiges/Zähler.cpp diff --git a/Nebenfunktionen/Kommazahl.cpp b/Nebenfunktionen/Kommazahl.cpp new file mode 100644 index 0000000..3485d7d --- /dev/null +++ b/Nebenfunktionen/Kommazahl.cpp @@ -0,0 +1,47 @@ +#include + +using namespace std; +long double Kommazahl(const std::string& str) +{ + /*long double Zahl; //Alternative mit stold welche in der Deklaration der Nebenfunktion zusätzlich einen boolean wert benötigt ob es mt oder ohne Kommas arbeiten soll + bool Minus = false; + std::string::size_type idx; + std::string FNum = ""; + + for(char c:str) + { + if(c>='0' && c<='9') FNum += c; + else if(c == '-') Minus = true; + else if((c=='.' || c==',') && Komma) Komma = false, FNum += c; + } + + Zahl = std::stold(FNum,&idx); + if(Minus) Zahl*=-1; + return(Zahl);*/ + + bool Komma=false, Minus=false; + long double Zahl = 0; + unsigned short Stelle = 0; + for(char c : str) + { + if(c>='0' && c<='9') + { + if(Komma == false) + { + Zahl *= 10; + Zahl += c - '0'; + } + else + { + long double Zahl2 = c - '0'; + for(unsigned short idx = 0; idx <= Stelle; idx++) Zahl2/=10; + Zahl += Zahl2; + Stelle++; + } + } + else if(c=='.') Komma=true; + else if(c=='-') Minus=true; + } + if(Minus==true) Zahl*=-1; + return(Zahl); +} diff --git a/Nebenfunktionen/Runden.cpp b/Nebenfunktionen/Runden.cpp new file mode 100644 index 0000000..6a91268 --- /dev/null +++ b/Nebenfunktionen/Runden.cpp @@ -0,0 +1,17 @@ +#include + +long double Runden(long double Zahl, int NK=0, bool mathematisch=true) +{ + //Rückgabe Zahl auf NK Nachkommastellen gerundet + long long Schleife; + + for(Schleife=NK;Schleife>0;Schleife--) Zahl*=10; + for(Schleife=NK;Schleife<0;Schleife++) Zahl/=10; + if(Zahl-(long long)Zahl>0.5 || Zahl-(long long)Zahl==0.5 && (mathematisch=false || (long long)Zahl%2!=0)) Zahl++; + + Zahl=(long long)Zahl; + for(Schleife=NK;Schleife>0;Schleife--) Zahl/=10; + for(Schleife=NK;Schleife<0;Schleife++) Zahl*=10; + + return(Zahl); +} diff --git a/Sonstiges/Zähler.cpp b/Sonstiges/Zähler.cpp new file mode 100644 index 0000000..a0841aa --- /dev/null +++ b/Sonstiges/Zähler.cpp @@ -0,0 +1,27 @@ +#include +#include +#include +#include + +int main () +{ + long long start=0, end=0; + std::string input; + + std::cout << "Geben sie den Startwert ein: "; + getline(std::cin, input); + std::stringstream(input) >> start; + + std::cout << "\nGeben sie den Endwert ein: "; + getline(std::cin, input); + std::stringstream(input) >> end; + + std::cout << "\n"; + + if(startend; idx--) std::cout << idx << ", "; + std::cout << end << "\n\nDie Summe der natuerlichen Zahlen von " << start << " bis " << end << " betraegt: " << (end*(end+1)-start*(start-1))/2; + + getch(); + return(0); +}