Nachdem ich dummerweise meinen Text grad gelöscht habe gibts jetzt ne kürzere Variante
Wenn du mit einem Buch arbeitest, geh noch mal ein paar Kapitel zurück und guck dir die Sachen noch mal vernünftig an. Sind Aufgaben in dem Buch vorhanden versuch sie vernünftig zu lösen. Das sollte schon mal allgemein weiter helfen.
Davids Tipp ist wichtig. Versuch die Fehlermeldungen zu verstehen. Auch wenn diese am Anfang etwas kryptisch wirken ist es unglaublich wichtig zu verstehen was der Compiler dir sagen will. Versuch die Fehlermeldungen die dir genannt werden den Fehlern zuzuordnen. Dann ist dir beim nächsten mal klarer was das ganze soll.
Deine Deklarationen der 4 Funktionen oben sagen aus dass die Funktionen jeweils nichts zurück geben und jeweils 2 Parameter vom Typ float erwarten. In Main rufst du die Funktionen ohne Parameter auf und erwartest einen Rückgabewert den du an den Stream geben möchtest. Der Compiler wird sich vermutlich beschweren dass er die Funktion "int subtraktion(void)" oder so nicht kennt. Bei der Variante mit der Addition übergibst du noch Werte, in denen steht aber nichts drin. Das wirkt auf mich so als hättest du einfach Code geschrieben um die Fehler zu lösen ohne zu wissen was du da tust. Das ist schlecht und zeigt dass du vorher etwas nicht verstanden hast.
In Zeile 21 fehlt das abschließende Semikolon. Fehler werden hier meistens für den Anfang der nächsten Zeile angezeigt. Für den Compiler ist es so als wäre das Statement in Zeile 21 nicht abgeschlossen und würde in Zeile 22 weiter gehen. Er sollte sich über unerwartete Statements/Token oder was auch immer in Zeile 22 beschweren.
Bei den Funktionsdefinitionen unten ist auch einiges falsch. Sie unterscheiden sich teilweise von ihren Deklarationen was vermutlich nicht gewünscht war, addition hat in diesem Fall keine Parameter, alle anderen schön, bei der Verwendung der Funktionen machst du es übrigens genau anders herum, wirkt alles recht willkürlich. Die Funktionen haben Rückgabetyp void, sollen also nichts zurück geben, dennoch gibst du Ergebnisse zurück. Das soll ja vermutlich auch so sein, dann musst du den Funktionen eben einen vernünftigen Rückgabetyp verpassen. Allgemein solltest du dich entscheiden ob die Werte von der Konsole direkt in den Funktionen eingelesen werden sollen so wie es aktuell ist, dann kannst du die Parameter x und y entfernen, oder ob du die Parameter erst einlesen willst und dann an die jeweiligen Funktionen weiter geben möchtest.
Fehlermeldungen für diese Funktionsgeschichten werden übrigens sein dass die aufgerufenen Funktionen nicht vom Linker gefunden werden. Bei den Definitionen unten wird er sich über den Rückgabetyp beschweren, bzw über das return-Statement.
Als letztes fällt mir auf dass Main sich selbst aufruft. Das ist mist. Du willst in diesem Fall eine einfache Schleife. Dann benutz auch einfach eine Schleife. An sich ist Rekursion nicht ungewöhnlich, bei Main habe ich es aber selbst noch nie gesehen oder benutzt und es wirkt auf mich ziemlich befremdlich. Wie gesagt ich würde statt der Rekursion eine Schleife benutzen.