//#define CATCH_CONFIG_RUNNER // This tells Catch to provide a main() - only do this in one cpp file1#include <iostream>2#include <string>3#include <vector>4#include <cmath>5#include <map>6#include <algorithm>7//#include "catch.hpp"8#include <ratio>9#include <tuple>10//using namespace std;111213float a,b,c;14int indikator;1516float linsolve( float b, float c )17{18return -c/b;1920}2122/*23TEST_CASE( "Wird die Lineare Gleichung korrekt gelöst?") {24double b=-2,c=3;2526REQUIRE( linsolve(1,0) == 0 );27REQUIRE( linsolve(1,1) == -1 );28REQUIRE( linsolve(-2,3) == -c/b);2930}31*/323334int Typ( float a, float b , float c)35{36if ((a==0)&&(b==0)&&(c==0)) indikator=1; // Fall unendlich viele Lösungen37else if ((a==0)&&(b==0)&&(c!=0)) indikator=2; // Fall keine Lösung38else if (((a==0)&&(b!=0)&&(c==0))||((a==0)&&(b!=0)&&(c!=0))) indikator=3; // Fall Lineare Gleichung39else indikator=4; // Fall quadratische Gleichung40return indikator;4142}4344/*45TEST_CASE( "Prüfe die Fallunterscheidungen") {46REQUIRE( Typ(0,0,0) == 1 );47REQUIRE( Typ(0,0,1) == 2 );48REQUIRE( Typ(0,1,0) == 3 );49REQUIRE( Typ(0,1,1) == 3 );50REQUIRE( Typ(1,1,1) == 4 );5152}53*/5455std::vector<float> diskriminante (float a, float b, float c)56{57float d=std::pow(b,2)-4*a*c;58if (d<0) return {0,d};59else if (d==0) return {1,d};60else if (d>0) return{2,d};61}6263/*64TEST_CASE( "Prüfe die Diskriminate") {65std::vector<double> test1 {1,std::pow(-2,2)-4*1*1};66REQUIRE( diskriminante(1,-2,1)== std::vector<double> {1,std::pow(-2,2)-4*1*1});6768}69*/7071int main()72{73std::cin >> a >> b >> c;74//std::cout << " a ist= " << b << " b ist= " << b << " c ist= " << c << "\n";75indikator=Typ(a,b,c);76//std::cout << indikator << "\n";7778if (indikator==1) {} //std::cout << // " unendlich viele Lösung";79else if (indikator==2) {} //std::cout << // " es gibt keine Lösung";80else if (indikator ==3) std::cout << linsolve(b,c);81else if (indikator ==4)82{83std::vector<float> d= diskriminante ( a, b, c);84//for (auto i:d)85// std::cout << i << "\n";86// if (d[0]<0) {} ;87if (d[0]==1) std::cout << -b/(2*a);88else if (d[0]==2) std::cout << (-b+sqrt(d[1]))/(2*a) << " "<< (-b-sqrt(d[1]))/(2*a);8990}919293949596//std::cout << " Fall " << Typ(a,b,c) << "\n";979899100101102103//int result = Catch::Session().run();104//return result;105106}107108109110