Wert einer Funktion übergeben
-
Hi,
ich bin gerade dabei ein Programm zu schreiben das Zahlen eilesen tut und vorwärts und rückwerts ausgibt.
Kann ich diese Funkion so starten:
void add_element_after(double wert);
double eingabe ();add_element_after(eingabe());
Wenn ich das Programm compieliere und Starte ist es so das er die eingabe einfach überspringt als ob ich einen wert eingegeben habe. Hier mal der Code:
void add_element_after(double wert);
void add_element_after(double wert) { ELEMENT *zeiger; if(anfang==NULL){ anfang=create_list_element(); anfang->zahl=wert; anfang->next=NULL; } else{ zeiger=anfang; while(zeiger->next!=NULL){ zeiger=zeiger->next; } ende=create_list_element(); ende->zahl=wert; zeiger->next=ende; ende->next=NULL; } }
double eingabe ();
double eingabe() { double zahl; printf("Geben Sie eine Zahl ein: "); scanf("&lf" , &zahl); return zahl; }
hat jemand ne idee wieso er die Funktion ignoriert? und mich keine zahl eingebem läßt?
-
eigentlich führt er die funktion eingabe aus.
hast du vorher schon eingaben gemacht? eventuell hängt noch was im buffer, daß er sich dann nimmt.
zum anderen:
anfang und zeiger.. sind die globale? gibt es davon noch mehr?vielleicht hast du nur einen teil aus der funktion rausgeschnitten...
-
Ja hier der Code: von der main:
#include <stdio.h> #include <stdlib.h> #include "elem.h" int main() { int wahl; do{ puts("Menue"); puts("(1) Eingabe vorne anhaengen"); puts("(2) Ausgabe"); puts("(9) Beenden"); fflush(stdin); printf("Waehlen Sie: \n"); scanf("%d", &wahl); switch(wahl) { case 1: add_element_after((eingabe())); break; case 2: forward(anfang); break; case 9: return 0; break; default:printf("Ungueltige Eingabe!"); } }while (wahl!=9); return 0; }
jetzt habe ich in der Eingabe ein flush eingestzt und in der main jetzt funzt es aber wieso dieses flush zwie mal?
-
olimlad schrieb:
Hi,
hat jemand ne idee wieso er die Funktion ignoriert? und mich keine zahl eingebem läßt?
Probiers doch mal mit
scanf("%lf",&zahl);
Mir ist auserdem unklar, wieso du bei add_element_buffer
die ganze Liste vom anfang bis zum Ende durchgehts, wenn du
sowieso einen Zeiger 'ende' auf das letzte Element hast.if (anfang==NULL) { ... ende=anfang; } else { ende->next=create_list_element(); ende=ende->next; ende->next=NULL; }
-
Ich habe keinen Zeiger am ende. ich habe nur einen am anfang. Aber wann weiß ich den das ich flush einsetzen muß.
-
olimlad schrieb:
Ich habe keinen Zeiger am ende.
Wieso taucht der Zeiger ende dann im Code von add_element_after
auf?
-
Damit ich später weiß das das ende auch das letzte Element in der Kette ist. Aber ich habe das Problem schon gelößt Danke trotzdem!