Struktur



  • Kann mir einer helfen, leider kenn ich mich bis heute noch nicht mit Strukuren aus und sitze seid 2 tagen daran

    1.)
    struct complex {
    double re, im;
    };
    z := a + b  i (d.h. re= a, im= b) soll ausgegeben werden als a+bi, z := 0 + a  i als ai,
    z := 0 + 1  i als i und z := a + 0 i als a.

    2.)
    struct student {
    string name;
    int matrnr;
    };

    Beispielausgabe:
    Andreas Schmidt
    213115

    3.) double* feld;
    Der Zeiger soll auf ein Feld zeigen, dessen L¨ange n in einer integer-Variable gespeichert
    ist. Beispielausgabe f¨ur 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.

    Wäre euch sehr sehr sehr dankbar.

    Firstrun



  • Sorry, ich versteh net was du willst 😕 😕 😕



  • Ich soll das realiseren ohne klassen!!!! Dafür mit structuren .

    Drei Versionen einer Funktion ausgeben, mit denen die folgenden Datentypen
    wie angegeben ausgegeben werden: ...... der redt ist im ersten Post

    Vielleicht kann mir jemand helfen ..danke im voraus

    drei Versionen einer Funktion ausgeben, mit denen die folgenden Datentypen
    wie angegeben ausgegeben werden.

    struct complex {
    double re, im;
    };

    z := a + b  i (d.h. re= a, im= b) soll ausgegeben werden als a+bi, z := 0 + a  i als ai,
    z := 0 + 1  i als i und z := a + 0 i als a.

    Firstrun



  • Verstehs immer noch net, aber Strukturen sind doch wie Klassen, es gibt zwar nur den Sichtbarkeitsbereich public und Funktionen müssen ausgelagert werden, aber ansonsten musst du nicjht viel ändedrn, wenn du weist wies mit Klassen geht.

    mfg
    Glamdring



  • Was soll das := bedeuten??? meinst du nicht /=?

    mfg
    Glamdring



  • 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