Hi. Ich versuche ein Programm zu schreiben, welches 4 simple Berechnung macht. Danei wollte ich alles über Funktionen realisieren. Ich habe Funktionen für Menüausgabe, Auswahle, Eingabe. Jetzt Wollte ich noch eine Funtion für die Berechnung machen, kriege es aber nicht hin die Auswahl des Menüpunktes und die eingegebenen Werte zu übernehmen. Hier ist der code: #include<stdio.h> #include<stdlib.h> #include<math.h> void Ausgabe(void); double lese_f( void ); void Abfrage(void); void Eingabe(void); int Berechnung(int auswahl); int main() { Ausgabe(); Abfrage(); Eingabe(); return 0; } double lese_f( void ) { double zahl; char zeile[80]; fgets( zeile, 79, stdin ); sscanf( zeile, "%lf", & zahl ); return zahl; } void Ausgabe(void) { printf("\tMenuegesteuerte Berechnung"); printf("\n\t=========================="); printf("\n 1. Addition 2. Subtraktion"); printf("\n 3. Multiplikation 4. Division"); printf("\n 5. Beenden"); } void Abfrage(void) { int auswahl; printf("\n\n\nBitte geben Sie einen Menuepunkt ein: "); auswahl=lese_f(); printf("\n\n"); } void Eingabe(void) { int zahl1, zahl2; printf("Erster Operand:\t\t"); zahl1 = lese_f(); printf("\n"); printf("Zweiter Operand:\t"); zahl2 = lese_f(); printf("\n"); } int Berechnung(int auswahl) { int ergebnis; if(auswahl == 1) return ergebnis = zahl1 + zahl2; } Kann mir jemand helfen? Wie bringe ich die Funktion dazu die Auswahl und die beiden werte zu übernehmen?
Deine Funktion "Abfrage" behält die Auswahl für sich. Damit aber nach dem Ausführen von "Abfrage" auf die Auswahl reagiert werden kann, sollte die Auswahl dem Aufrufer (Deine Funktion main) bekanntgegeben werden. Dann nämlich kann beim Aufruf von "Berechnung" die Auswahl dieser Funktion übergeben werden. Das gleiche Problem hast Du auch bei "Eingabe", auch diese Funktion behält die eingegebenen Werte für sich.
Detlef H. schrieb: > Ich weiß nicht wie In welchem Buch über C, das Du intensiv durchgearbeitet hast, werden denn diese elementaren Grundlagen nicht ausführlich behandelt? Das würde mich schon sehr interessieren.
Detlef H. schrieb: > Ich weiß nicht wie Wie bist du denn ohne das Wissen so weit gekommen? Du benutzt die nötigen Mechanismen doch schon an anderer Stelle.
Andreas S. schrieb: > In welchem Buch über C, das Du intensiv durchgearbeitet hast, werden > denn diese elementaren Grundlagen nicht ausführlich behandelt? Das würde > mich schon sehr interessieren. Ja, das ist sicher von allgemeinem Interesse. Es würde dem Leser den Kauf eines recht wenig nützlichen Buches ersparen. Zumal diese Schwarten ja recht teuer sind und der Eine vom Anderen (inclusive Fehlern) abschreibt.
Ernsthaft, egal in welchem deutschen Forum man postet. Meist trifft man auf der art dumme Antwortet von aroganten Leutenm. nice help!!
Detlef H. schrieb: > Ernsthaft, egal in welchem deutschen Forum man postet. Meist trifft man > auf der art dumme Antwortet von aroganten Leutenm. "Ein Geiterfahrer? Hunderte!" Hast du schon mal darüber nachgedacht, dass es an dir liegen könnte? > nice help!! Sorry, aber was du hier fragst, sind absolute Grundlagen, die in jedem annähernd brauchbaren Buch stehen. Es ist wenig sinnvoll, die in einem Forum immer und immer wieder, wenn jemand danach fragt, nochmal neu zu erklären. Übrigens: Meine Frage, wie du es geschafft hast, an einer Stelle die nötige Funktionalität von C schon genutzt zu haben, an einer anderen aber keine Idee zu haben, wie das geht, war ernst gemeint. Kann es sein, dass du das als Hausaufgabe bekommen hast und nur zu faul bist, es selbst zu lösen?
:
Bearbeitet durch User
Detlef H. schrieb: > Ich weiß nicht wie Ach. Das ist unglaubwürdig, denn Dein Code enthält eine Funktion, die sich anders verhält als die Funktionen, die ihre "inneren Werte" für sich behalten. Und Du verwendest diese Funktion in Deinem Code sogar auf die richtige Art und Weise. Wie kann es dann sein, daß das, was Du an der einen Stelle völlig richtig hinbekommst, Du urplötzlich an anderer Stelle nicht mehr schaffst? Irgendwie zweifle ich daran, daß Du diesen Code da oben tatsächlich komplett selbst geschrieben hast.
was unterscheidet: double lese_f( void ) von void Ausgabe(void) ??? Wenn Du den Unterschied erkennst, weißt Du auch, wie Du das Problem lösen kannst.
Eine alternative wäre noch die Verwendung von globalen Variablen. Damit kannst du das Problem von den Return Werten umgehen.
Detlef H. schrieb: > Ernsthaft, egal in welchem deutschen Forum man postet. Meist trifft man > auf der art dumme Antwortet von aroganten Leutenm. nice help!! Hier gibt es doch einige, die dich mit provokanten Aussagen in die Richtige Richtung schubsen wollte, damit du das selber lernst. Auf stackoverflow.com, das ich selber gern konsultiere, geht es aber eher darum schnell und viel beantwortet zu haben. Wie gesagt, für ein Problem mit Zeitnot ist das OK, lernen tut man wenig, wenn man nur Antworten kopiert. Wenn es aber nur darum geht, die nächste Hausarbeit abzuliefern, dann hast du das Forum richtig verstanden!
Ein Rückgabewert ist kein Problem? Globale Variablen werden oft zum Problem, wenn man den Überblick verliert, an welchen Stellen sie überall geändert werden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.