Struktur



  • Verstehe ich ja auch kaum wie ich das als structur machen soll ??

    Hier ist so ne andere Aufgabe ( auch mit Strukturen zu lösen)

    double* feld;

    Der Zeiger soll auf ein Feld zeigen, dessen Länge n in einer integer-Variable gespeichert
    ist. Beispielausgabe für n = 5: [ 1 2 3 4 5 ]. Wenn beim Aufruf von ausgeben keine
    Länge angegeben wird, soll standardmässig die Länge 1 zugrundegelegt werden, d.h. nur
    der Wert, auf den der Zeiger direkt verweist, wird ausgegeben.

    Also mir sagt das gar nichts .. vielleicht kannst du helfen

    danke im voraus

    Firstrun



  • Ich kann mir nur vorstellen das diese Übung Überladung zeigen soll:

    void Ausgabe(double * feld)
    {
    	cout<<*feld;
    }
    
    void Ausgabe(double * feld,int len)
    {	
    	for(int i = 0;i < len;++i,++feld)
    		cout<<*feld;
    }
    
    int main(int argc, char * argv[])
    {
    	double t[5]  = {1,2,3,4,5};
    	Ausgabe(t);
    	Ausgabe(t,5);
    
    	return 0;
    }
    

    Die Struktur verstehe ich an dem Punkt nicht. Eventuell sowas ?

    struct Ausgabe2
    {
    	void operator()(double * feld);
    	void operator()(double * feld,int len);
    };
    
    void Ausgabe2::operator()(double * feld)
    {
    	cout<<*feld;
    }
    
    void Ausgabe2::operator()(double * feld,int len)
    {
    	for(int i = 0;i < len;++i,++feld)
    		cout<<*feld;
    }
    
    int main(int argc, char * argv[])
    {
    	double t[5]  = {1,2,3,4,5};
    
    	Ausgabe2 ausg;
    	ausg(t);
    	ausg(t,5);
    
    	return 0;
    }
    


  • Danke ...
    nur ich selbst verstehe die Aufgabe auch net

    Also

    double* feld;

    Der Zeiger soll auf ein Feld zeigen, dessen Länge n in einer integer-Variable gespeichert
    ist.
    Beispielausgabe für n = 5: [ 1 2 3 4 5 ].
    Wenn beim Aufruf von ausgeben keine
    Länge angegeben wird, soll standardmässig die Länge 1 zugrundegelegt werden, d.h. nur
    der Wert, auf den der Zeiger direkt verweist, wird ausgegeben.

    Das heisst wenn man ein Feld mit 5 Werten hat dann soll er 1 2 3 4 5 ausgeben
    Wenn man aber direkt ausgeben drückt ohne die Felder aufgefüllt zu haben dann soll immer die Länge " 1 " ausgegeben werden , eben nur der Zeiger .

    Nur wie soll ich das als " struct " darstellen.

    Also die Fuktion soll glaube ich so aussehen

    Menü:

    1.) Feld belegen
    2.) Feld ausgeben

    cout << " Ein Feld wird nun belegt von 1 beginnend << endl;
    cin >> >> *feld endl;

    Er soll solange irgendetwas in ein Feld speichern von 1 bis n , solange man es nicht ausgiebt .
    Wenn das Feld leer ist , soll nur der Zeiger aufs erste Feld ausgegeben werden.

    Hoffe du kannst mir helfen ..

    Bist mir eine Grosse Hilfe am Sonntag

    Firstrun



  • hallo ?



  • Vielleicht sowas:

    struct foo
    {
        int* ptr;
    };
    
    void ausgeben(foo* structure)
    {
        for(int i=0; i<strlen(*structure->ptr); ++i)
            cout << "In ptr[<<i<<"] steht:"<<structure->ptr[i]<<endl;
    }
    

    Hab aber keine Ahnung 😕

    mfg
    Glamdring



  • Naja wo ist den die Eingabe??

    Also man muss irgendwas in n Felder eingeben und dann wieder ausgeben können.
    Wenn nix eingegeben worden ist soll nur 1 ausgegeben werden

    Hmm grübbel grübbel

    einer ne Idee?!



  • Gut, dann:

    int&din()
    {
        string eing;
        cout << "Wollen sie ein Element einbgeben (J/N)" << endl;
        cin >> einmg;
        static int ar[5];
        int counter = 0;
        while (eing == "J")
        {
            if(counter<5)
            {
                int zahl;
                cout << "Bitte geben sie eine Zahl ein" <<endl;
                cin >> zahl;
                ar[counter] = zahl;
                ++counter;
                cout << "Wollen sie ein Element einbgeben (J/N)" << endl;
                cin >> eing; 
            }  
        }  
        return(ar);
    }
    

    So???
    mfg
    Glamdring



  • Das sieht vernünftig aus ... nur

    Man soll ja auch ausgeben können .. also dann 1 , 2 ,3 ,4 ,5
    Und direkt ausgeben können das dann nur eine 1 rauskommt

    Danke

    Firstrun



  • Keiner ne Idee?!



  • Firstrun schrieb:

    Man soll ja auch ausgeben können .. also dann 1 , 2 ,3 ,4 ,5
    Und direkt ausgeben können das dann nur eine 1 rauskommt

    😕

    Glamdring


Anmelden zum Antworten