using System.Collections.Generic;
static List<double> faktoren = new List<double>();
static double f(double x){
double funktionswert = 0;
for (int i = 0; i < faktoren.Count; i++)
funktionswert += Math.Pow(x,i) * faktoren[i];
static double nullstelle(double l, double r, double t){
else if (l_wert * m_wert > 0) return nullstelle(m,r,t);
else return nullstelle(l,m,t);
static void wt(int a, int b){
for(int i = a; i <= b; i++){
Console.WriteLine("f({0,3}) = {1,5}",i , f(i));
public static void Main()
Console.WriteLine("Eingabe der Funktion [ungültige Zahl oder ENTER zum beenden]:");
Console.Write("Faktor für x^0: ");
while(double.TryParse(Console.ReadLine(),out faktor)){
Console.Write("Faktor für x^{0}: ",faktoren.Count);
Console.Write("\nFolgende Funktion Wurde Eingegeben: f(x) = ");
for(int i = faktoren.Count-1; i >= 0; i--){
if (faktoren[i] == 0) continue;
if (i != faktoren.Count-1)
ausgabe += faktoren[i] > 0 ? " + " : " - ";
else if(faktoren[i] < 0) ausgabe += '-';
if(Math.Abs(faktoren[i]) != 1 || i == 0)
ausgabe += Math.Abs(faktoren[i]).ToString() + (i != 0 ? " * " : "");
ausgabe += "x" + (i != 1 ? ('^' + i.ToString()) : "");
Console.WriteLine("\n\nWertetabelle:");
Console.Write("Tolleranz: ");
double t = double.Parse(Console.ReadLine());
for(int i = 0; true; i++){
Console.Write("Linker Wert: ");
double l = double.Parse(Console.ReadLine());
Console.Write("Rechter Wert: ");
double r = double.Parse(Console.ReadLine());
Console.WriteLine("Nullstelle zwischen im Interval [{0};{1}] : x{2} = {3:0.#####}\n",l,r,i,nullstelle(l,r,t));