Forum: PC-Programmierung C Programmierung Funktionen


von Detlef H. (electroniknoob)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Detlef H. (electroniknoob)


Lesenswert?

Ich weiß nicht wie

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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.

von Wurzelzieher (Gast)


Lesenswert?

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.

von Detlef H. (electroniknoob)


Lesenswert?

Ernsthaft, egal in welchem deutschen Forum man postet. Meist trifft man 
auf der art dumme Antwortet von aroganten Leutenm. nice help!!

von Rolf M. (rmagnus)


Lesenswert?

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
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von doedel (Gast)


Lesenswert?

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.

von Korobirne (Gast)


Lesenswert?

Eine alternative wäre noch die Verwendung von globalen Variablen.
Damit kannst du das Problem von den Return Werten umgehen.

von Carl D. (jcw2)


Lesenswert?

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!

von Andreas R. (daybyter)


Lesenswert?

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
Noch kein Account? Hier anmelden.