Was macht diese Schleife



  • Hallo Leute,
    ich muss ein Hangman Programm für die Schule schreiben und dieses danach vorstellen. Das Programm an sich steht ich habe mir nur Hilfe von einem Freund geholt der mir eine Schleife geschrieben hat für die "verdeckte" Eingabe des Wortes. Da ich das aber vorstellen muss und ich ihn nicht mehr erreiche würde ich euch bitten mir kurz zu erklären was diese Schleife macht und wieso es das macht denn ganz verstehen tue ich es nicht.

    char wort[100000];
    char temp;
    int index = 0;
    
    	//***** Verdeckte Eingabe des Wortes *****
    	while((temp = getch()) != 13)
    	{
    	printf("*");
    	wort[index++] = temp;
    	wort[index] = '\0';
    	}
    

    Vielen dank schonmal 🙂

    mfg Fredi*


  • Mod

    Die Schleife liest das Wort verdeckt ein :p .

    Oder ein paar Kommentare:
    - 13 ist der Wert des Steuerzeichens für Zeilenende. Dein Freund kannte wohl '\n' nicht.
    - Das gelesene Zeichen wird an die letzte Position des eingelesenen Wortes gesetzt, dann wird der Positionszeiger erhöht und dann wird an das neue Ende ein Nullzeichen gesetzt, welches in C (siehe unten zu C++) das Ende einer Zeichenkette markiert.
    - Der Code ist ziemlich schlecht, deshalb kannst du ihn auch nicht ohne Hilfe lesen
    - Der Code ist auch technisch schlecht. Wenn man schon zeichenweise einliest, dann wäre es ein leichtes das statische Array mit der magischen, viel zu großen Größe von 100000 zu vermeiden
    - Ihr macht sehr wahrscheinlich C, nicht C++. Bei der Qualität der Lehre in manchen Schulen würde es mich aber nicht überraschen, wenn das vom Lehrer doch als C++ beabsichtigt ist.



  • Okay, Danke wie erkläre ich die jetzt meinem Lehrer xD?
    Hast du vielleicht eine einfache Alternative?


  • Mod

    Fredi* schrieb:

    Okay, Danke wie erkläre ich die jetzt meinem Lehrer xD?
    Hast du vielleicht eine einfache Alternative?

    Ja, aber ich müsste wissen, welche Sprache. C oder C++? Wie schon gesagt fragst du in C++, aber es sieht nach C aus. Außerdem muss die Antwort natürlich eurem Kenntnisstand entsprechen. Wenn ich dir jetzt ein realloc vorsetze und du das noch nie gesehen hast, nützt dir das ja auch nichts.

    Aber auch wenn der Code nach gehobenen Maßstäben schlecht ist, ist er für die Schule sicher noch gut genug, denn er erfüllt seinen Zweck einigermaßen zuverlässig (solange niemand mehr als 100000 Zeichen eingibt 😃 ). Wo genau bestehen denn noch Unklarheiten bei der Erklärung? Ich habe jetzt beschrieben was die Idee bei dem Code ist. Bestehen noch grundlegende Unklarheiten darüber was die Anweisungen überhaupt machen?



  • (solange niemand mehr als 100000 Zeichen eingibt ).

    und solange niemand nichts ausser return drückt.



  • Nunja im Lehrplan steht C++ aber ich hab schon mehrmals von meinem Freund gehört das es mehr C ist als C++.

    Ne Ne der Sinn und das Ziel ist mir Klar sehe ich nun auch wenn ich das Prgramm starte. Aber die Funktion der Variablem temp check ich nicht wofür ist die dadrin, die 13 hast du geklärt und der Rest ist auch logisch das da nur * kommen aber und '\0' erklär sich auch ist ja das ende des Arrays aber temp bereitet mir Schwierigkeiten was sag ich zum Beispiel wenn er mich in der Präsentation fragt was macht denn die temp Variable da. 😞

    realloc? Noch nie gehört. Ich beschreibe meine Kenntnisse mal so seit einem Halbenjahr habe ich 2 mal die Woche bei einem schlechten Lehrer Programmieren für 2 Stunden. Haben do while, while und for schleifen besprochen && switch case kurz angesprochen && natürlich if else haben halt bis jetzt viel mit Zahlen gemacht Lotto Programm etc.



  • fdghdgjdfh schrieb:

    (solange niemand mehr als 100000 Zeichen eingibt ).

    und solange niemand nichts ausser return drückt.

    Stimmt wenn man return drücken könnte das wär auch cool ich schließ das Programm dann immer wenn ich was Falsch eingebe und muss es neu starten -.-



  • temp speichert das zeichen zwischen für die später folgende Zuweisung... temporär halt.



  • Fredi* schrieb:

    Nunja im Lehrplan steht C++ aber ich hab schon mehrmals von meinem Freund gehört das es mehr C ist als C++.

    Ständig produzieren haufenweise schlechte C(++)-Kurse halbwissende Leute, die hier alle angespült werden und aufwendig geläutert werden. Wieso können nicht erstmal alle Kursleiter hier hinkommen und dann zurück in ihre Kurse gehen? Das würde doch viel mehr bringen. Man muss bedenken: ein ganzer Haufen an Leuten der Kursteilnehmer kommt nicht hierher.


Anmelden zum Antworten