Klausurvorbereitung



  • Ja also da hab ich was anderes gehört.. du bist der erste der mir sagt, dass C++ schwerer sein soll ... Alle sagen, dass C++ viel einfacher ist, gerade was Zeiger angeht soll das viel gemütlicher sein.. Und im nächsten Sem. gibts dann C# ..

    Ja aber als ich Schwimmen oder Autofahren gelernt habe war jemand von Anfang an da, der wusste was ich kann oder nicht kann. Ihr wisst es eben nicht und deswegen bringt das nix... Musterlösungen bringen mir sehr sehr viel.. Ich mach das schon seit 2.5 jahren so und es hat bis jetzt IMMER geklappt. Sportlicher Ehrgeiz... ehrlich gesagt sind mir Bestandene Klausuren lieber als gutes Gefühl... Ich guck mir die Lösungen an, grüble darüber nach warum das so ist, finde es heraus und bin glücklich! So funktioniert das... Erst wenn ich etwas nicht herausfinden kann, WARUM das so ist... Dann frage ich nach! Aber wenn ich kein Plan habe.. und etwas bearbeiten soll.. wie soll ich das machen? Wenn ich nicht weiß wie??? Deswegen die Lösungen... wie gesagt.. mach das schon jahrelang so und es ist schnell und funktioniert....



  • xX Dany Xx schrieb:

    Ja also da hab ich was anderes gehört.. du bist der erste der mir sagt, dass C++ schwerer sein soll ... Alle sagen, dass C++ viel einfacher ist, gerade was Zeiger angeht soll das viel gemütlicher sein.

    naja, c++ hat erstmal zwei verschiedene arten von eingebauten zeigern und dazu noch haufenweise libraries mit sogenannten 'smart-pointern'. das ist alles schon sehr esoterisch. zur einstimmung auf das thema c++ empfehle ich dir das hier: http://yosefk.com/c++fqa/
    🙂



  • Gut okay.. nochmal zu der Aufgabe 5 a) die am Anfang steht..
    Ich habe jetzt das hier geschrieben:

    struct Student {
    	int matnr;
    	char* name;
    };
    typedef struct Student StudiTyp;
    
    void student_eingeben (StudiTyp* ptr)
    {
    	printf ("Matrikelnummer: ");
    	scanf ("%d", ptr->matnr);
    	printf ("Name: ");
    	scanf ("%s", ptr->name);
    	return;
    }
    

    Aber wie soll ich jetzt die Funktion starten? Wenn ichs im main starten will, dann gehts nicht weil er iwie keine 0 Argumente akzeptiert... und die funktion muss void student_eingeben() heißen...



  • xX Dany Xx schrieb:

    Aber wie soll ich jetzt die Funktion starten? Wenn ichs im main starten will, dann gehts nicht weil er iwie keine 0 Argumente akzeptiert... und die funktion muss void student_eingeben() heißen...

    So wie jede andere Funktion auch, du scheinst das Prinzip einfach nicht zu verstehen! Ich empfehle dir, fang nochmal bei den Grundlagen an.

    Um die Funktion aufzurufen, erstellst du in der main-Funktion eine Variable vom Typ StudiTyp, und übergibst beim Aufruf der Funktion diese Variable an diese Funktion (ums mal blöd auszudrücken), und zwar als Pointer, damit die Struktur gefüllt wird.

    P.S.: Wieso benutzt du am Ende einer void-Funktion eine return Anweisung?



  • xX Dany Xx schrieb:

    Ich habe mich mit C halbes Jahr lang beschäftigt... ich musste im laufe des Semesters 10 Programme abgeben, die mehr als ne halbe stunde in anspruch nahmen!

    dann solltest du mindestens wissen dass das falsch ist

    scanf ("%d", ptr->matnr);
    

    und eigentlich

    scanf ("%d", &ptr->matnr);
    

    so da stehen müßte.

    und jetzt erzähl mir bitte nicht mehr das deine lern techniken so super funktionieren axo und bei void brauchst kein return; außer du willst aus der function raus aber du bist ja eh am ende...

    und es steht nur da das die rückgabe void ist und nicht der parameter...

    jetzt hab ich mich doch wieder hin reißen lassen was zu posten, da sieht man mal das ich keinem lange böse sein kann, bin ja nicht nwp2 😉



  • beselbube schrieb:

    Ich empfehle dir, fang nochmal bei den Grundlagen an.

    Um die Funktion aufzurufen, erstellst du in der main-Funktion eine Variable vom Typ StudiTyp, und übergibst beim Aufruf der Funktion diese Variable an diese Funktion (ums mal blöd auszudrücken), und zwar als Pointer, damit die Struktur gefüllt wird.

    Kannst du mir vllt den code hinschreiben? Ich weiß nicht wie du das meinst..

    @noobLolo
    Wir haben ein Programm zu Verketteten Listen geschrieben und da wurde der Adressoperator auch nicht benutzt.. kann dir nicht sagen warum.. hier ein kleiner Ausschnitt:

    void erstellen (element* ptr)
    {
    	printf ("Wort eingeben (\x22 \bENDE\x22 \b f\x81 \br Ende der Liste): ");
    	scanf ("%s", ptr->wort);
    	if (strcmp(ptr->wort, "ENDE") == 0)
    		ptr->next = NULL;
    	else
    	{
    		ptr->next = (element*) malloc(sizeof (element));
    		erstellen(ptr->next);
    	}
    
    	return;
    }
    

    Das Programm funktioniert zweifelsfrei richtig..



  • scanf ("%s", ptr->wort);

    ptr->wort ist ein (char 😉 und kein (int) das ist der unterschied und der grund warum das klappt,

    daher hab ich auch in deinem beispiel nur ein mal & ergänzt und nicht in dem scanf("%s"... denn da stimmte es...



  • achso macht sinn.. ja cool danke...

    Zeigst du mir jetzt noch ein beispiel wie ich die funktion aufrufen kann? 🙂



  • xX Dany Xx schrieb:

    Ich habe mich mit C halbes Jahr lang beschäftigt... ich musste im laufe des Semesters 10 Programme abgeben, die mehr als ne halbe stunde in anspruch nahmen!

    xX Dany Xx schrieb:

    ...
    Aber wie soll ich jetzt die Funktion starten?
    ...
    Zeigst du mir jetzt noch ein beispiel wie ich die funktion aufrufen kann?

    ^^entweder ist die erste behauptung eine glatte lüge, oder du willst hier alle nur auf den arm nehmen.
    🙂



  • Ich check echt nicht was euer Problem ist.. ich selber bin auch innem Forum angemeldet (PCGH) und wenn iwelche Leute kommen und iwelche Fragen haben auf die ich die Antwort kenne, dann beantworte ich sie einfach.. Dafür sind ja Foren eig unter anderem gedacht ...

    Wenn einer kommt und fragt mich warum beispielsweise seine Graka im Desktop-Modus nicht runtertaktet, dann frage ich ihn Sachen, die für sein Problem relevant sind, analysiere sein Problem und schreibe ihm Vorschläge was er versuchen soll um das Problem zu beheben.. und zwar gehe ich immer davon aus, dass der oder diejenige ein absoluter Noob ist und versuche dadurch die Sache so verständlich und detailliert wie nur möglich zu erklären...

    Ich habe das Gefühl, dass IHR mich auf den Arm nehmen wollt... ich frage euch immer ganz höflich paar Sachen.. aber zurück krieg ich nur, dass ich ein Noob bin und nix drauf hab.. es ist mir egal ob ihr so denkt oder nicht.. aber ich bin etwas irritiert ob ihr mir nun helfen wollt oder ob ihr mich prüfen wollt...

    Wenn es hier jemanden gibt, der mir gerne helfen würde, dann bin ich dafür sehr dankbar.. Aber unter Hilfe verstehe ich nicht, dass ihr die Antwort bzw. Lösung auf mein Problem kennt, rückt sie aber nicht raus.. Manche sagen mir dann ne Lösung, ich verstehe aber nicht was er meint und dann krieg ich wieder an den Kopp geknallt, dass ich ein Noob bin...

    Ich mein.. ich WILL es ja verstehen... ihr gebt mir aber keine Chance... Eurer Meinung nach MUSS ich alles verstehen was ihr sagt und wenns nicht so ist, dann bin ich en Arschloch.... voll assi ...



  • xX Dany Xx schrieb:

    aber zurück krieg ich nur, dass ich ein Noob bin und nix drauf hab..

    bleib ganz entspannt, es war nicht böse gemeint. ich habe nichts gegen noobs und mach' mich auch nicht über sie lustig. aber du kannst doch keinem erzählen, dass du dich schon ein halbes jahr mit C beschäftigst, aber nicht weisst, wie man funktionen aufruft. das schliesst sich einfach aus, es sei denn, du hast die ganze zeit nur abgeschrieben und nichts verstanden.
    ^^ und wenn das stimmen sollte, dann sollteste dir unbedingt die grundlagen reinziehen, denn so kommst du nicht weiter, bzw. du machst es dir nur unnötig schwer.
    🙂



  • ich weiß wie man funktionen aufruft, aber iwie klappts nicht.. ich vermute halt, dass es daran liegt, weil es eine void funktion ist.. ich weiß es nicht ... wenn ich sonst ne funktion aufrufen wollte ahbe ich einfach geschrieben

    funktion();

    und fertig.. das geht halt jetzt iwie nicht und ich weiß nicht warum...



  • xX Dany Xx schrieb:

    ich weiß wie man funktionen aufruft, aber iwie klappts nicht.. ich vermute halt, dass es daran liegt, weil es eine void funktion ist.. ich weiß es nicht ... wenn ich sonst ne funktion aufrufen wollte ahbe ich einfach geschrieben
    funktion();
    und fertig.. das geht halt jetzt iwie nicht und ich weiß nicht warum...

    es geht ja gerade um diese funktion, ne?

    void student_eingeben (StudiTyp* ptr)
    {
      ...
    }
    

    das 'void' ganz vorn bedeutet, dass die funktion nichts zurückgibt. sie will aber was haben, das sieht man daran, dass kein 'void' in der klammer steht. frage an dich: was solltest du sinnvollerweise an die funktion übergeben (ausser 0, das lassen wir mal weg), damit der compiler nicht streikt?
    🙂



  • ja ich weiß ja nicht mal ob das richtig ist.. du kannst dir ja die aufgabe 5 a) am anfang angucken.. die Klammer war ursprünglich auch leer, aber ich hab das so ergänzt anhand einer anderen Aufgabe.. aber ich weiß nicht ob das so stimmt... ich denke es ....

    Ja was will die Funktion haben... Initialisierung von matnr und name vielleicht? Ich dachte das wäre in der Struktur initialisiert und das hätt ich ja durch das StudiTyp* ptr so an die Funktion weitergeleitet...



  • StudiTyp n00b;
    
    void student_eingeben(/*hier ist nix drin*/) 
    { // blah, ...
    	scanf ( "%d", n00b.matnr );
    	// blubb, .. den rest mach selber, malloc lässt grüßen
    }
    


  • da fehlt nen operator, masl sehen ob du aufgepasst hast 😉



  • scanf ("%d", &ptr->matnr);
    

    Ist das nicht das gleiche?

    Ach so nee .. mmnt.. will mal was probieren...



  • natürlich nicht.



  • xX Dany Xx schrieb:

    Ja was will die Funktion haben... Initialisierung von matnr und name vielleicht? Ich dachte das wäre in der Struktur initialisiert und das hätt ich ja durch das StudiTyp* ptr so an die Funktion weitergeleitet...

    ich meine, in der parameterliste steht: StudiTyp ptr*
    ^^ was ist damit gemeint?
    🙂



  • struct Student {
    	int matnr;
    	char* name;
    };
    typedef struct Student StudiTyp;
    
    StudiTyp a;
    StudiTyp b;
    
    void student_eingeben ()
    {
    	printf ("Matrikelnummer: ");
    	scanf ("%d", &a.matnr);
    	printf ("Name: ");
    	scanf ("%s", b.name);
    }
    
    int main ()
    {
    		student_eingeben();
    		getch();
    }
    

    Ich kriege zwar am Ende iwelchen Fehler, aber das Prog läuft schon mal ^^


Anmelden zum Antworten