Informatik Testat in C Programmierung --ich brauch eure Hilfe--



  • Hallo zusammen,

    stehe vor einem Problem... muss in Informatik ein Programm in C schreiben, habe aber von der ganzen Materie keinen blassen Schimmer!

    Das Programm welches wir in den Vorlesungen genutzt haben war "Scincilla" oder so ähnlich.

    Meine Frage ist nun ob mir jemand das Programm welches ich in den Anhang kopiert habe schreiben könnte... Würde mich auch entschädigen. Vielen Dank!

    --------------------------------------------------------------------------------

    PROGRAMM:

    Aufgabe

    Erstellen Sie mit dem gcc-Compiler eine Konsolenanwendung mit folgenden Eigenschaften:


    Das Programm soll nach der Eingabe von zwei Zeichenketten folgendermaßen reagieren:

    Die beiden eingegebenen Texte werden mit zwei im Programm gespeicherten Passworten verglichen.
    Sind beide Passworte korrekt, soll der Windows-Taschenrechner gestartet
    werden.

    Ist nur eines der beiden Passworte korrekt, soll der Windows-Editor (Notepad) gestartet werden.
    Ist keines der beiden Passworte korrekt, soll sich das Programm mit einer entsprechenden Meldung beenden.


    Kommentieren Sie das Programm ausführlich.

    Das Programm soll insgesamt benutzerfreundlich sein, d. h. ein Anwender, der
    das Programm noch nicht kennt, sollte sich ohne Schwierigkeiten damit
    zurechtfinden.

    Weitere Hinweise:
    Verwenden Sie für die Stringvergleiche die Funktion strcmp () aus der
    C-Standardbibliothek string d.h. Für die Programmaufrufe kann die Funktion system () aus der C-Standardbibliothek stdlib.h verwendet werden. Hierbei muss
    die Pfadangabe mit doppelten "Backslashs" angegeben werden, also
    z. B. system(IC:\\WINDm,JS\\system32\\calc.exe")
    für den Aufruf des Windows-Taschenrechners. Sowohl der Windows-Editor Notepad als auch der Windows-Taschenrechner
    befinden sich standardmäßig unter C:\WINDOWS\system32\.

    Bitte helft mir... ich komme damit einfach nicht klar!

    Mfg Michael



  • Gegenfrage: Was hast du denn schon geschafft? Und was bereitet dir Probleme?

    Aber ich will mal nicht so sein und biete dir einen Ausgangspunkt:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
      // hier darfst du dich jetzt austoben
      return 0;
    }
    


  • Danke für die schnelle Antwort!

    Im Prinzip fehlt mir alles... weil ich die ganze Sache an sich einfach nicht begriffen hab... Das Studium ist so schon genug Stress und dann noch so Zeugs 😮

    Klar das kommt mir alles bekannt vor, aber wie gesagt das klingt für mich alles nach Bahnhof...

    Könntest du mir das komplett schreiben??? Wäre dir sehr sehr dankbar!

    Mfg Michael



  • Racoon schrieb:

    Könntest du mir das komplett schreiben??? Wäre dir sehr sehr dankbar!

    Sicher könnte ich - aber das würde weder dir noch mir irgendwie helfen. Ich gehöre hier eher zu den Leuten, die den Fragestellern Hilfe zur Selbsthilfe anbieten. Das heißt, wenn du ein konkretes Problem hast, kannst du deine bisherigen Ergüsse hier präsentieren und um Rat fragen, aber Komplettlösungen werden dir hier nicht auf dem Silbertablett serviert.

    (zu weiteren Lösungsansätzen lies mal den Aufgabentext - außer den genannten Funktionen könnten noch printf()/scanf() und Kontrollstrukturen wie if()-else hilfreich sein)



  • Ja ich bin im Prinzip auch kein Fan von dieser Methode, aber Info hat sich im Endeffekt für mich gegessen. Ab nächstem Semester haben wir das nicht mehr und ich hab einfach Zeitdruck mit dem Abgabetermin! Über eine finanzielle Entschädigung lässt sich natürlich reden!

    Mfg Michael



  • Hast du denn eine IDE bei dir zur Verfügung?
    Ansonsten kannst du dir mal Code::Blocks herunterladen, installieren und ein neues C-Projekt starten.
    Und dann kannst du nach Stichworten suchen, die dir CStoll genannt hat, bspw. scanf.
    Unten auf der Seite ist ein komplettes Beispiel, wie man eine Eingabe des Benutzers entgegen nimmt.

    Wenn du jetzt auch noch nach den anderen Stichworten, wie printf, strcmp etc. suchst, kannst du auf jeden Fall an diesem Wochenende selbständig eine Lösung erarbeiten, und du hast natürlich sehr viel mehr davon (zumindest hast du dann etwas Geld gespart ;-)).

    Wenn du Rückfragen hast, kannst du natürlich hier fragen, nur solltest du dann zumindest etwas an eigenem Code präsentieren können.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum Projekte verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Nenne einen Geldpreis, dann werden sich Leute schaarenweise bei dir melden. Für Dank allein macht das niemand.

    Dein Programm ist relativ trivial, der Hauptarbeitsaufwand dürfte darin bestehen, sich mit dir abzusprechen. Insgesamt 1-2 Stunden Arbeit, den Preis darfste dir dann selber ausmalen.



  • 1-2 Stunden? In der Zeit würde das der TE ja fast hinbekommen, wenn er anfängt, sich mit den Grundlagen zu beschäftigen.


  • Mod

    yahendrik schrieb:

    1-2 Stunden?

    Hauptsächlich hin- und hergeschreibe von Emails, Bezahlungsformalitäten und - nicht zu vergessen - die geforderte ausführliche Codekommentierung (sowas dauert lange!). Und beim Schreiben so tun, als wäre man Anfänger ohne Plan (gar nicht so einfach). Das Programm selber ist ein 15-Zeiler, aber probier mal aus, wie lange so etwas dauert, wenn man es wirklich ordentlich macht.

    In der Zeit würde das der TE ja fast hinbekommen, wenn er anfängt, sich mit den Grundlagen zu beschäftigen.

    Tja, mag er aber nicht.



  • Darf man fragen, welches Fach du studierst, damit ich mich von diesem dann entsprechend fernhalten kann? (Rufen Sie den Taschenrechner mit system() auf, das tut ja schon beim Lesen weh. Die Programmierer sollten Schmerzensgeld erhalten.)



  • #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    // Definieren der Konstanten (Passwörter und Dateipfade)
    #define FIRST_PASSWORD "Schnitzel"
    #define SECOND_PASSWORD "Kartoffel"
    #define CALCULATOR "C:\\Windows\\System32\\calc.exe"
    #define NOTEPAD "C:\\Windows\\System32\\notepad.exe"
    
    // Prüft und gibt zurück, wie viele der beiden eingegebenen Passwörter richtig sind
    unsigned char check_passwords(char pass1[20], char pass2[20])
    {
        unsigned char correct_input;
        // Die temporäre Zählvariable wird initialisiert
        correct_input = 0;
        // Prüfe, ob Passwort 1 korrekt ist...
        if (!strcmp(pass1, FIRST_PASSWORD))
            // ... und erhöhe gegebenenfalls die Zählvariable um 1
            correct_input++;
        // Prüfe, ob Passwort 2 korrekt ist...
        if (!strcmp(pass2, SECOND_PASSWORD))
            // ... und erhöhe gegebenenfalls die Zählvariable um 1
            correct_input++;
        // Wert zurückgeben
        return correct_input;
    }
    
    // Führt die passende Reaktion auf die Eingabe aus
    void evaluate_input(unsigned char correct_input)
    {
        // Switch-Anweisung für die verschiedene Anzahl der richtigen Eingaben:
        switch (correct_input)
        {
            case 0:
                // Kein richtiges Passwort: Nur Ausgabe einer Nachricht
                printf("Sie haben kein Passwort richtig eingegeben. Das Programm wird beendet.\n");
                break;
            case 1:
                // Ein richtiges Passwort: Ausgabe einer Nachricht und Starten von Notepad
                printf("Sie haben ein Passwort richtig eingegeben. Notepad wird gestartet.\n");
                system(NOTEPAD);
                break;
            case 2:
                // Zwei richtige Passwörter: Ausgabe einer Nachricht und Starten vom Taschenrechner
                printf("Sie haben beide Passwörter richtig eingegeben. Taschenrechner wird gestartet.\n");
                system(CALCULATOR);
                break;
        }
        // Verhindern, dass sich das Programm sofort schließt (Warten auf einen Tastendruck)
        getchar();
    }
    
    int main()
    {
        char pass1[20];
        char pass2[20];
        // Einlesen der beiden Passwörter durch scanf (maximale Länge von 20)
        printf("Geben Sie das erste Passwort ein: ");
        scanf("%20s", pass1);
        printf("Geben Sie das zweite Passwort ein: ");
        scanf("%20s", pass2);
        // Passende Reaktion auf die Eingabe ausführen
        // Parameter ist die Anzahl der richtig eingegebenen Passwörter
        evaluate_input(check_passwords(pass1, pass2));
        return 0;
    }
    

    Funktioniert bei mir, ich hoffe ich hab die Aufgabe auch richtig verstanden 😕



  • Zeile 60 und 62: Soll wohl lauten %19s.
    Es ist keine Reihenfolge definiert, du kannst also nicht einfach nur Eingabe 1 mit Passwort 1 überprüfen.
    Zeile 12: Besser: const char*.
    Zeile 51: Meinst du nicht, dass scanf() noch ein '\n' im Puffer lässt? 🙂



  • Ehrlich gesagt programmiere ich immer nur in C++, deswegen hatte ich schon gedacht, dass solche Fehler da sind 🙂

    Verbessert:

    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    // Definieren der Konstanten (Passwörter und Dateipfade)
    #define FIRST_PASSWORD "Schnitzel"
    #define SECOND_PASSWORD "Kartoffel"
    #define CALCULATOR "C:\\Windows\\System32\\calc.exe"
    #define NOTEPAD "C:\\Windows\\System32\\notepad.exe"
    
    // Prüft und gibt zurück, wie viele der beiden eingegebenen Passwörter richtig sind
    unsigned char check_passwords(const char pass1[20], const char pass2[20])
    {
        unsigned char correct_input;
        // Die temporäre Zählvariable wird initialisiert
        correct_input = 0;
        // Prüfe alle möglichen Passwort-Eingabe-Kombinationen und erhöhe die Zählvariable bei einer richtigen Eingabe um 1
        if (!strcmp(pass1, FIRST_PASSWORD))
        {
            correct_input++;
            if (!strcmp(pass2, SECOND_PASSWORD))
                correct_input++;
        } else if (!strcmp(pass1, SECOND_PASSWORD)) {
            correct_input++;
            if (!strcmp(pass2, FIRST_PASSWORD))
                correct_input++;
        } else if (!strcmp(pass2, FIRST_PASSWORD)) {
            correct_input++;
        } else if (!strcmp(pass2, SECOND_PASSWORD)) {
            correct_input++;
        }
        // Wert zurückgeben
        return correct_input;
    }
    
    // Führt die passende Reaktion auf die Eingabe aus
    void evaluate_input(unsigned char correct_input)
    {
        // Switch-Anweisung für die verschiedene Anzahl der richtigen Eingaben:
        switch (correct_input)
        {
            case 0:
                // Kein richtiges Passwort: Nur Ausgabe einer Nachricht
                printf("Sie haben kein Passwort richtig eingegeben. Das Programm wird beendet.\n");
                break;
            case 1:
                // Ein richtiges Passwort: Ausgabe einer Nachricht und Starten von Notepad
                printf("Sie haben ein Passwort richtig eingegeben. Notepad wird gestartet.\n");
                system(NOTEPAD);
                break;
            case 2:
                // Zwei richtige Passwörter: Ausgabe einer Nachricht und Starten vom Taschenrechner
                printf("Sie haben beide Passwörter richtig eingegeben. Taschenrechner wird gestartet.\n");
                system(CALCULATOR);
                break;
        }
        // Verhindern, dass sich das Programm sofort schließt (Warten auf einen Tastendruck)
        getchar();
    }
    
    int main()
    {
        char pass1[20];
        char pass2[20];
        // Einlesen der beiden Passwörter durch scanf (maximale Länge von 20)
        printf("Geben Sie das erste Passwort ein: ");
        scanf("%19s", pass1);
        printf("Geben Sie das zweite Passwort ein: ");
        scanf("%19s", pass2);
        // Passende Reaktion auf die Eingabe ausführen
        // Parameter ist die Anzahl der richtig eingegebenen Passwörter
        evaluate_input(check_passwords(pass1, pass2));
        return 0;
    }
    

  • Mod

    "C:\\Windows\\System32\\calc.exe"

    Funktioniert nicht auf dem Rechner des Profs, der sein Windowsverzeichnis Win95 genannt hat.

    Durchgefallen. Du darfst dich im nächsten Semester noch einmal zur Prüfung anmelden.



  • "C:\\Windows\\System32\\calc.exe"

    Funktioniert nicht auf dem Rechner des Profs, der sein Windowsverzeichnis Win95 genannt hat.

    Durchgefallen. Du darfst dich im nächsten Semester noch einmal zur Prüfung anmelden.

    Ist doch so in der Aufgabe vorgegeben :p



  • if ()
    {
      system("calc"); // Wenn in %PATH% kein system32 steht, 
    }
    else
    {
      system("notepad"); // haben wir vermutlich ein UNIX-System. oO
    }
    


  • Racoon schrieb:

    Hallo zusammen, ... stehe vor einem Problem... muss in Informatik ein Programm in C schreiben, habe aber von der ganzen Materie keinen blassen Schimmer! ... Meine Frage ist nun ob mir jemand das Programm welches ich in den Anhang kopiert habe schreiben könnte... Würde mich auch entschädigen. Vielen Dank!

    Willst du nach deiner Ausbildung als Informatiker etwa Software-Designer oder IT-Berater werden? 😕



  • berniebutt schrieb:

    Racoon schrieb:

    Hallo zusammen, ... stehe vor einem Problem... muss in Informatik ein Programm in C schreiben, habe aber von der ganzen Materie keinen blassen Schimmer! ... Meine Frage ist nun ob mir jemand das Programm welches ich in den Anhang kopiert habe schreiben könnte... Würde mich auch entschädigen. Vielen Dank!

    Willst du nach deiner Ausbildung als Informatiker etwa Software-Designer oder IT-Berater werden? 😕

    Nein Ich mache ein Ba-Studium Studienrichtung Maschinenbau über der Dekra. Bin jetzt Ende 2. Semester und das Thema Info ist somit für mich abgehakt. Nach dem Studium mache ich intern den Prüfingenieur incl. amtlich anerkannten Sachverständiger. Ich komme aus der KFZ Schwarte, sprich KFZ Mechatronic gelernt und anschließend den KFZ Techniker Meister. Mit Informatik geschweige Programmieren hatte ich noch nie was zu tun. Und innerhalb 6 Vorlesungen erlernt man das auch nicht so nebenher.

    Ich bedanke mich viel mals bei euch fürs schreiben!!!
    Wo kann ich mir "Scincilla" downloaden??

    Mfg Michel



  • Ich glaube du meinst eher Scintilla, welches du einfach bei Google finden kannst 🙂


Log in to reply