Cuneros.de Forum

    Autor Thema: Programmierer Quiz  (Gelesen 251 mal)

    0 Mitglieder und 1 Gast betrachten dieses Thema.

    Offline bastie

    • Administrator
    • Hero Member
    • *****
    • Beiträge: 1267
    • Karma 113
    Programmierer Quiz
    « am: Oktober 09, 2019, 13:32:08 »
    Hi,

    nach Anregung durch Prüfungen an unserem Institut möchte ich ein kleines Programmierer Quiz starten.

    Regeln:
    • nicht googlen
    • ausprobieren erlaubt (z.B. mit: https://tio.run)
    • Lösung posten
    • der erste mit korrekter Antwort gewinnt

    Preise:
    • 1 000 Cuneros für die korrekte Antwort
    • 500 Cuneros für eine kreative Antwort :D

    Aktive Frage steht immer dort:

    Schreibe einen Algorithmus, um folgende Umwandlungen vorzunehmen. Dabei dürfen nur Sprachkonstrukte, keine Funktionen verwendet werden:
    ffc000 -> 111111111100000000000000
    ffc001 -> 111111111100000000000001
    ffc002 -> 111111111100000000000010
    affe80 -> 101011111111111010000000

    Die triviale Lösung mit if(...) ist unzulässig.

    Der Erste erhält 5 000 Cuneros.

    1 000 Cuneros-Frage: was für ein Algorithmus wird gesucht?

    Alte Fragen sind in Posting 2.
    « Letzte Änderung: Oktober 10, 2019, 18:46:51 von bastie »
    Dann gibt es halt keine subtile Ankündigung der nächsten großen Funktion.

    Offline bastie

    • Administrator
    • Hero Member
    • *****
    • Beiträge: 1267
    • Karma 113
    Re: Programmierer Quiz
    « Antwort #1 am: Oktober 09, 2019, 13:32:13 »
    Frage 1:
    Was ist an folgendem Codeschnipsel nicht korrekt?
    Was gibt der Code aus?
    #include <stdio.h>

    int main (void) {
     char str1[] = {'C','u','n', 'e','r','o','s','.','d', 'e', ' '};
     printf("%s", str1);
     return 0;
    }

    « Letzte Änderung: Oktober 09, 2019, 20:22:46 von bastie »
    Dann gibt es halt keine subtile Ankündigung der nächsten großen Funktion.

    Offline tobias1985

    • Sr. Member
    • ****
    • Beiträge: 297
    • Karma 29
    Re: Programmierer Quiz
    « Antwort #2 am: Oktober 09, 2019, 13:48:10 »
    Bin kein C-Mensch. Aber die Ausgabe lautet: Cuneros.de 

    Fehler wüsste ich jetzt keinen. Der Code funktioniert zumindest. :D

    Offline bastie

    • Administrator
    • Hero Member
    • *****
    • Beiträge: 1267
    • Karma 113
    Re: Programmierer Quiz
    « Antwort #3 am: Oktober 09, 2019, 14:00:42 »
    Dann hattest du "Glück" :D
    ist nicht korrekt - bzw. nur teilweise.
    Dann gibt es halt keine subtile Ankündigung der nächsten großen Funktion.

    Offline zruF

    • Sr. Member
    • ****
    • Beiträge: 445
    • Karma 27
    Re: Programmierer Quiz
    « Antwort #4 am: Oktober 09, 2019, 14:16:05 »
    Kenne mich in C auch eher karg aus, aber kompilieren lässt sich der Code auf jeden Fall.

    https://tio.run/##LczBCsIwEATQc/MVS0W2hVj03OrFzxAPIYk2UDeySbyUfntcxMODYQbGHuxi6FnrLpBdivMwpexCHOaLUo[email protected]5Tq39HvZTsc2GC46i2Wr8

    tobias1985 hat das Leerzeichen hinter Cuneros.de vergessen ;)

    Offline tobias1985

    • Sr. Member
    • ****
    • Beiträge: 297
    • Karma 29
    Re: Programmierer Quiz
    « Antwort #5 am: Oktober 09, 2019, 14:24:59 »
    tobias1985 hat das Leerzeichen hinter Cuneros.de vergessen ;)
    Hab ich nicht. Markiere meinen Text. ;) 

    Offline zruF

    • Sr. Member
    • ****
    • Beiträge: 445
    • Karma 27
    Re: Programmierer Quiz
    « Antwort #6 am: Oktober 09, 2019, 14:30:11 »
    Hab ich nicht. Markiere meinen Text. ;)
    Tatsache, wenn man das e mitkopiert, wird es ersichtlich. Wenn man ohne das e markiert, muss man den Mauszeiger unter die Zeile bewegen, damit man es sieht ^^

    Offline bastie

    • Administrator
    • Hero Member
    • *****
    • Beiträge: 1267
    • Karma 113
    Re: Programmierer Quiz
    « Antwort #7 am: Oktober 09, 2019, 14:33:54 »
    Tipp:
    [[email protected] tmp]$ cat cun.c
    #include <stdio.h>

    int main (void) {
    char str1[] = {'C','u','n', 'e','r','o','s','.','d', 'e', ' '};
    printf("%s", str1);
    return 0;
    }
    [[email protected] tmp]$ gcc cun.c -o cuneros && ./cuneros
    Cuneros.de [email protected][[email protected] tmp]$ 

    Dann gibt es halt keine subtile Ankündigung der nächsten großen Funktion.

    Offline tobias1985

    • Sr. Member
    • ****
    • Beiträge: 297
    • Karma 29
    Re: Programmierer Quiz
    « Antwort #8 am: Oktober 09, 2019, 14:38:31 »
    Ich versteh nur Bahnhof. :D
    Ich weiß nur, dass der Code aus dem ersten Post funktioniert und die Ausgabe wie von mir geschrieben lautet. :P

    Offline bastie

    • Administrator
    • Hero Member
    • *****
    • Beiträge: 1267
    • Karma 113
    Re: Programmierer Quiz
    « Antwort #9 am: Oktober 09, 2019, 14:41:23 »
    und die Ausgabe wie von mir geschrieben lautet. :P
    nö.
    Cuneros.de [email protected]
    alles andere sind nur Fixes durch den Compiler (bei tio.run z.B. clang).
    Dann gibt es halt keine subtile Ankündigung der nächsten großen Funktion.

    Offline tobias1985

    • Sr. Member
    • ****
    • Beiträge: 297
    • Karma 29
    Re: Programmierer Quiz
    « Antwort #10 am: Oktober 09, 2019, 18:12:27 »
    Kapier ich nicht. Was gibt denn da ein [email protected] aus?
    Wenn ein printf von den paar chars Dinge ausgibt, die da gar nicht stehen, dann ist das doch der reinste Horror.
    Den Code aus Post 1 kannst ja nachbauen in anderen Sprachen. Kommt immer das raus, was ich auch als Ausgabe bekommen habe.
    Dann hat wohl eher dein Compiler mehr Bugs als features, oder ich kapier es einfach nicht. 
    Hab aber wie gesagt selbst nie was mit reinem C zu tun gehabt. Wenn das so ist, wie du schreibst, will ich damit aber auch nix zu tun haben. :D

    Offline bastie

    • Administrator
    • Hero Member
    • *****
    • Beiträge: 1267
    • Karma 113
    Re: Programmierer Quiz
    « Antwort #11 am: Oktober 09, 2019, 20:22:15 »
    Ich löse auf: null-terminator[1] fehlt.
    #include <stdio.h>

    int main (void) {
    char str1[] = {'C','u','n', 'e','r','o','s','.','d', 'e', ' ', '\0'};
    printf("%s", str1);
    return 0;
    }
    wäre der korrekte Code.
    Wenn das \0 fehlt, wird solange aus dem Speicher ausgegeben, bis ein \0 kommt.

    In anderen Sprachen funktioniert das natürlich korrekt. (außer in c++)

    Neue Aufgabe im 1. Post

    [1] https://de.wikipedia.org/wiki/Nullzeichen
    Dann gibt es halt keine subtile Ankündigung der nächsten großen Funktion.

    Offline DieDose

    • Jr. Member
    • **
    • Beiträge: 53
    • Karma 6
    Re: Programmierer Quiz
    « Antwort #12 am: Oktober 10, 2019, 08:10:22 »
    Gesucht wird die Umwandlung von Hexadezimal ins Binär System.

    Offline zruF

    • Sr. Member
    • ****
    • Beiträge: 445
    • Karma 27
    Re: Programmierer Quiz
    « Antwort #13 am: Oktober 10, 2019, 09:48:08 »
    Ist es gewollt, dass am Ende 0001 für 1 und 0002 für 2 steht, anstatt (0001 und 0010)?

    Hab was für beide Varianten geschrieben: 

    https://tio.run/##[email protected][email protected]fdtYV0HGOYbaagPJ7DWv3rrTaUTi5xfixPLPN1gpA9bGVe0lEdu4/h/[email protected]

    Mit "keine Funktion" sind nur Funktionen gemeint, die direkt hex in binär umwandeln oder sind so Funktionen wie ".toString(2)" auch nicht erlaubt?

    Offline bastie

    • Administrator
    • Hero Member
    • *****
    • Beiträge: 1267
    • Karma 113
    Re: Programmierer Quiz
    « Antwort #14 am: Oktober 10, 2019, 18:49:01 »
    @dieDose: korrekt

    @zruF:
    da hast du Recht. Hab mich "vertippt".

    Mit keine Funktionen meine ich in der Tat keine Funktionen (und Methoden). Sondern lediglich Sprachkonstrukte (if, for, while, ... a = x / 2, a = x%2, ...)

    Lösung wird also noch gesucht ;)
    Cuneros an dieDose und zruF gehen raus.
    Dann gibt es halt keine subtile Ankündigung der nächsten großen Funktion.