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!


Anmelden zum Antworten