Programmieraufgabe



  • sothis_ schrieb:

    hier schonmal der code der teil 1 der aufgabe erledigen könnte 😃 vielleicht erbarmen sich noch andere die weiteren teile zu ergänzen, lol

    const char* cities[10]  =
    {	"Aachen", "Berlin", "Bremen", "Dresden", "Essen",
    	"Hannover", "Leipzig", "Muenchen", "Osnabrueck", "Stuttgart" };
    ...
    

    bin mir nicht sicher aber solltest du sicherheitshalber nicht noch eine 0 als letztes element in das array schreiben. wenn ich solche 2-dim arrays durchgehn will krieg ich nämlich ohne eine nullterminierung immer probleme...



  • @sothis_ könntest du mir mal dein getcmd() erklären?
    ich hab noch nicht ganz umrissen was das alles prüft?
    wie wird getline() eingesetzt? was ist der 2. parameter. soll dort hinein geschriebden werden wie lang der input war? oder wie groß er maximal sein darf? ich denk mal 2tens ist richtig?



  • tweenki schrieb:

    @sothis_ könntest du mir mal dein getcmd() erklären?
    ich hab noch nicht ganz umrissen was das alles prüft?
    wie wird getline() eingesetzt? was ist der 2. parameter. soll dort hinein geschriebden werden wie lang der input war? oder wie groß er maximal sein darf? ich denk mal 2tens ist richtig?

    oh, das war auf die schnelle geschrieben 😛 getline ist eine GNU erweiterung, deswegen bin ich nicht sicher ob das auch in der msvcrt in windows vorhanden ist.

    int getcmd()
    {
        char* inbuf = NULL;
        int temp;
        size_t n = 0;
    
        getline(&inbuf, &n, stdin);
    

    wenn inbuf NULL ist, alloziert getline() mit malloc soviel speicher wie nötig, wenn inbuf nicht NULL ist, passt getline() den puffer mit realloc() an. nach n wird, wie du vermutet hast, die anzahl der zeichen ohne den newline character geschrieben wenn n vorher 0 war, wenn n > 0 dann liest getline genau soviel zeichen vom stream. der dritte parameter ist selbsterklärend 🙂

    if (n == 0)
        {
            free(inbuf);
            return -2;
        }
    

    da war ich mir nicht sicher, ob dieser fall überhaupt mit getline eintreten kann, ist also nur sicherheitshalber da 😛

    if ((n > 3) && (!memcmp(inbuf, "quit", 4)))
        {
            free(inbuf);
            return -1;
        }
    

    beenden wenn "quit" eingegeben wurde 🙂

    if ((inbuf[0] < 0x30) || (inbuf[0] > 0x39))
        {
            free(inbuf);
            return -3;
        }
    

    -3 zurückgeben wenn das erste zeichen keine zahl ist

    temp = inbuf[0] & 0xF;
        free(inbuf);
        return temp;
    }
    

    ansonsten eben diese zahl zurückgeben 🙂



  • andy p. schrieb:

    sothis_ schrieb:

    hier schonmal der code der teil 1 der aufgabe erledigen könnte 😃 vielleicht erbarmen sich noch andere die weiteren teile zu ergänzen, lol

    const char* cities[10]  =
    {	"Aachen", "Berlin", "Bremen", "Dresden", "Essen",
    	"Hannover", "Leipzig", "Muenchen", "Osnabrueck", "Stuttgart" };
    ...
    

    bin mir nicht sicher aber solltest du sicherheitshalber nicht noch eine 0 als letztes element in das array schreiben. wenn ich solche 2-dim arrays durchgehn will krieg ich nämlich ohne eine nullterminierung immer probleme...

    0.o also ich bin mir nicht sicher was der microsoft c/c++ kompiler macht, aber ich denke dieser wird genauso wie gcc konstante char-arrays automatisch null-terminieren. ansonsten würde ein printf("hello, world"); nicht funktionieren 🙂



  • also unter Dev-C++ konnte ich deins nicht kompilieren, darum bin ich schnell auf linux umgestiegen 🙂 dort gehts jetzt. hab mal unsre teile zusammengefügt.



  • tweenki schrieb:

    also unter Dev-C++ konnte ich deins nicht kompilieren, darum bin ich schnell auf linux umgestiegen 🙂 dort gehts jetzt. hab mal unsre teile zusammengefügt.

    yup, unter windows mit c muss man leider fgets und konsorten benutzen. ist aber eigentlich auch schell geschrieben, wenn man auf die komfortabilität der automatischen speicherverwaltung von getline verzichten kann 🙂



  • kann mir jemand schnell sagen, wie man einen float auf zwei stellen nach dem komma formatiert bei printf ich weiss das nicht mehr? habs iwo mal gelesen find die seite aber nimmer? kann mir jemand eben schnell helfen?



  • tweenki schrieb:

    kann mir jemand schnell sagen, wie man einen float auf zwei stellen nach dem komma formatiert bei printf ich weiss das nicht mehr? habs iwo mal gelesen find die seite aber nimmer? kann mir jemand eben schnell helfen?

    lol, schau in doch nochmal in meinem beispiel nach: "%.2f" ist dein freund 😛



  • Was wollt ihr mit gets an einem Automaten!?

    Greetz, Swordfish



  • Swordfish schrieb:

    Was wollt ihr mit gets an einem Automaten!?

    Greetz, Swordfish

    sorry, aber wo wird hier gets erwähnt?



  • sothis_ schrieb:

    0.o also ich bin mir nicht sicher was der microsoft c/c++ kompiler macht, aber ich denke dieser wird genauso wie gcc konstante char-arrays automatisch null-terminieren.

    das machen bestimmt 99.9% aller c-compiler.
    🙂



  • danke für den tipp mit %.2f. kann man das nicht noch so verändern dass da kein punkt sondern ein komma kommt?

    wie soll ich das mit dem stornieren machen?
    ich hätt jetzt alles in eine riesige schleife gepackt die ich dann wieder von vorne anfange? oder wie sonst?



  • sothis_ schrieb:

    Swordfish schrieb:

    Was wollt ihr mit gets an einem Automaten!?

    sorry, aber wo wird hier gets erwähnt?

    Sorry, meinte fgets (Du hast es erwähnt, in Verbindung mit getline .): Also, Was wollt ihr mit fgets an einem Automaten!?

    greetz, Swordfish



  • Swordfish schrieb:

    Also, Was wollt ihr mit fgets an einem Automaten!?

    na, sie wollen vielleicht eine zeichenkette einlesen? könnte das sein?
    kennst du nicht die ollen kaugummiautomaten? die haben auch nur was gemacht, wenn man kräftig dran gedreht hat.
    🙂



  • tweenki schrieb:

    danke für den tipp mit %.2f. kann man das nicht noch so verändern dass da kein punkt sondern ein komma kommt?

    wie soll ich das mit dem stornieren machen?
    ich hätt jetzt alles in eine riesige schleife gepackt die ich dann wieder von vorne anfange? oder wie sonst?

    also willst du jetzt die 45€ verdienen oder nicht? 😛



  • sothis_ schrieb:

    also willst du jetzt die 45€ verdienen oder nicht? 😛

    natürlich
    dann mach ichs jetzt einfach mal wie ich s machen würde.



  • tweenki schrieb:

    natürlich
    dann mach ichs jetzt einfach mal wie ich s machen würde.

    👍 🙂



  • mein problem ist ich bin selbst eigentlcih noch anfänger!!!!!
    aber ich glaub ich krieg das hin 🙂



  • so ich bin jetzt fast fertig. jetzt muss ich nur noch einen algorithmus finden, mit dem ich das rückgeld berechenen kann und noch richtig zurückgeben kann.
    Ich mach das dann übers wochenende.

    ich hab es unter linux geschrieben. wenn ich es unter windows schreiben soll muss ich halt noch etwas am input rumschreiben.

    Ich hab es auf tweenki.funpic.de als zip hochgeladen.



  • ja das ist ja super!!! ja es sollte unter windows laufen!


Anmelden zum Antworten