This repository has been archived on 2024-09-24. You can view files and clone it, but cannot push or open issues or pull requests.
Schule/Nebenfunktionen/Kommazahl.cpp

51 lines
1 KiB
C++
Raw Normal View History

2017-04-10 21:17:40 +02:00
#include<iostream>
using namespace std;
long double Kommazahl(const std::string& str)
{
2017-04-14 16:11:38 +02:00
//Alternative mit stold welche in der Deklaration der Nebenfunktion zus<75>tzlich einen Boolean ben<65>tigt,
//welcher angibt ob es mt oder ohne Kommas arbeiten soll
/*long double Zahl;
2017-04-10 21:17:40 +02:00
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);
}