Klausurvorbereitung



  • µngbd schrieb:

    xX Dany Xx schrieb:

    Wenn ich char* wegmache dann kommt Syntaxfehler ')' wenn ich (char*) wegmache, kommt 'void *' kann nicht in 'int *' kkonvertiert werden.

    Versuch's mal mit einem C-Compiler.
    🙂

    Das versteht er nicht. Er ist im C++- Modus unterwegs. Vielleicht hilft das.



  • xX Dany Xx schrieb:

    Ich denk mal das Feld soll max 4 Zeichen einlesen (wegen while(k<4)). Und in diesem Feld muss dann logischwerweise drin stehen 0123.

    Damit sollte man's eigentlich korrigieren können.

    int i;   // wir nehmen i anstelle von k
    int arr[5];   // malloc() mit konstanten Werten füttern ist ein richtiger Fehler
                  // statt 5 würden auch 4 reichen, aber vielleicht soll am Ende
                  // noch Platz für einen Terminator sein
    for (i = 0; (arr[i] = i) < 4; i++)
        ;
    // oder mit do-while
    i = 0;
    do arr[i] = i++; while (i < 4);
    

    Danach steht in dem Array {0,1,2,3,undefiniert}. Aber vielleicht soll doch am Ende in dem Array stehen: {0,1,2,3,4}? Das ist sehr schwer zu sagen, lernt ihr dort Psychologie?
    🙂



  • pointercrash() schrieb:

    µngbd schrieb:

    Versuch's mal mit einem C-Compiler.
    🙂

    Das versteht er nicht. Er ist im C++- Modus unterwegs. Vielleicht hilft das.

    Ob daran wohl der Lehrer schuld ist?
    🙂



  • Meinst du dass der Befehl

    int *ar = (char*)malloc(5*sizeof(int));
    

    definitiv falsch ist und stattdessen nur int arr[5]; reinsoll? Oder ist das kein Fehler, sondern es gefällt dir einfach nur nicht...



  • Jetzt hab ichs durch den compiler gejagt:

    int main (void)
    {
    int k = 0;
    int ar[5];
    do{ ar[k] = k++; printf("%f", ar[k]);} while (k<4);
    getch();
    }
    

    Weißt du was er ausgibt?



  • xX Dany Xx schrieb:

    Meinst du dass der Befehl

    Besser: die Zeile.

    xX Dany Xx schrieb:

    int *ar = (char*)malloc(5*sizeof(int));
    

    definitiv falsch ist und stattdessen nur int arr[5]; reinsoll? Oder ist das kein Fehler, sondern es gefällt dir einfach nur nicht...

    Naja, definitiv falsch kann's nicht sein, weil es ja läuft. Aber mit malloc() einen Bereich holen, dessen Grösse schon zur Compilezeit bekannt ist, ist völlig unnötig. Man kann sich nun esoterische Ausnahmen ausdenken, zB dass man den Speicher unbedingt schon vor dem Ende des Blocks zurückgeben muss, aber -- naja, sowas fällt normalerweise nur nwp2 ein.

    Schwieriger ist aber die Frage, ob dein Lehrer das auch erkannt hat.
    🙂



  • xX Dany Xx schrieb:

    Jetzt hab ichs durch den compiler gejagt:

    int main (void)
    {
    int k = 0;
    int ar[5];
    do{ ar[k] = k++; printf("%f", ar[k]);} while (k<4);
    getch();
    }
    

    Weißt du was er ausgibt?

    Versuch mal das:

    int main (void)
    {
      int k = 0;
      int ar[5];
      do{ ar[k] = k++; printf("%d", ar[k-1]);} while (k<4);
    }
    

    Oder schreib das ++ erst in die while-Klammern. Oder (noch besser): nimm die for-Schleife, da wird man am wenigsten mit den Erhöhungen verwirrt.
    🙂



  • 1. Es ist kein Lehrer sondern Prof. Dr.
    2. Die Aufgabe heißt >>Aufgabe 2 (ZEIGER)<< sind in deinem Code Zeiger? Nein..
    3. Hast dus durch den Compiler gejagt? Die fortlaufenden Integerzahlen fehlen (0, 1, 2, ...)

    EDIT: Okay zu 3. das funktioniert... ich nehm die do schleife, weil sie in der aufgabe steht, aber dennoch sind eben keine Zeiger drin, deswegen schätze ich, dass deine Lösung falsch ist.. bzw. nicht relevant..



  • xX Dany Xx schrieb:

    1. Es ist kein Lehrer sondern Prof. Dr.

    Hihi, wenn einer ein guter Lehrer ist, hat er dann nicht mehr Achtung verdient als einer, der Titel sammelt?

    xX Dany Xx schrieb:

    2. Die Aufgabe heißt >>Aufgabe 2 (ZEIGER)<< sind in deinem Code Zeiger? Nein..

    Dann mach halt noch ein int *pointer = ar; .

    xX Dany Xx schrieb:

    3. Hast dus durch den Compiler gejagt? Die fortlaufenden Integerzahlen fehlen (0, 1, 2, ...)

    Erst nachdem du dich beschwert hast. Aber zum Glück war's richtig.
    🙂



  • xX Dany Xx schrieb:

    Jetzt hab ichs durch den compiler gejagt:

    int main (void)
    {
    int k = 0;
    int ar[5];
    do{ ar[k] = k++; printf("%f", ar[k]);} while (k<4);
    getch();
    }
    

    Weißt du was er ausgibt?

    Ja, Schrott. Wieso wohl? ( Es gibt 2 Anworten und es liegt nicht an der Art der Allokation. )



  • xX Dany Xx schrieb:

    Immer wenn ich mit einer Klausur durch bin, poste ich dann weitere Aufgaben aus anderen Klausuren.

    damit wir in übung bleiben, ne? *fg*
    zu dem cast: ja, den ersatzlos streichen und den code als C compilieren (oft reicht umbenennen der source-datei von .cpp in .c)
    zum malloc: ja, das ist doof, aber ich schätze, dass ihr nur echte fehler ausbauen und nicht den ganzen code nach eigenem geschmack umbauen dürft.
    🙂



  • ;fricky schrieb:

    ich schätze, dass ihr nur echte fehler ausbauen und nicht den ganzen code nach eigenem geschmack umbauen dürft.
    🙂

    RICHTIG 🙂 Sags mal bitte µngbd

    Wollen wir vielleicht nicht einfach mit den anderen Aufgaben weitermachen?



  • Wie schreibt man in C eine Struktur in eine Klasse um? Aufgabe 5 b) *grübel*
    Es soll ja angeblich alles C Programmierung sein.



  • ;fricky schrieb:

    zum malloc: ja, das ist doof, aber ich schätze, dass ihr nur echte fehler ausbauen und nicht den ganzen code nach eigenem geschmack umbauen dürft.
    🙂

    Fehler ausbauen, interessante Aufgabe.



  • Big Brother schrieb:

    Wie schreibt man in C eine Struktur in eine Klasse um? Aufgabe 5 b) *grübel*
    Es soll ja angeblich alles C Programmierung sein.

    jaaa das hat mich auch gewundert, weil wir gelernt haben, dass Klassen erst bei C++ kommen, wir ja aber erstmal nur in C programmieren... aber wir haben ma so eine kleine Exkursion in C++ Programmierung gemacht, aber er meinte, dass es nicht in der Klausur drankommt, deswegen bin ich nicht in der Vorlesung gewesen 😃



  • Big Brother schrieb:

    Wie schreibt man in C eine Struktur in eine Klasse um? Aufgabe 5 b)
    Es soll ja angeblich alles C Programmierung sein.

    *schluck* soweit hab' ich garnicht gelesen. dann ist der xXDanyXx hier wohl leider im falschen forum gelandet.
    🙂



  • ja okay dann streichen wir halt 5 b)



  • xX Dany Xx schrieb:

    Wollen wir vielleicht nicht einfach mit den anderen Aufgaben weitermachen?

    Wie wärs, wenn du erstmal Aufgabe 2 zu ende machst? Ich sehe da mindestens 4 Fehler, und du? Den korrigierten Code hast du uns auch noch nicht gezeigt.



  • xX Dany Xx schrieb:

    jaaa das hat mich auch gewundert, weil wir gelernt haben, dass Klassen erst bei C++ kommen, wir ja aber erstmal nur in C programmieren... aber wir haben ma so eine kleine Exkursion in C++ Programmierung gemacht, aber er meinte, dass es nicht in der Klausur drankommt...

    also, zu den C-sachen können wir dir hier tipps geben, aber über dieses schräge 'c mit klassen'-zeug solltest du dich besser mit den jungs eine etage tiefer unterhalten.
    🙂



  • Ich erhöhe auf 5 Fehler, wer bietet mehr :D.
    Den unschönen und verpönten malloc Cast nicht mitgezählt.


Anmelden zum Antworten