![]() |
AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
Danke das ihr immer so schnell Antwortet. Ich werde mir das mit dem now mal ansehn.
Und das man immer nur eine frage stzellt wusste ich nich sorry :). Is mein vorletzter Praktikumstag deshalb soll das spiel/quiz besonders gut werden. Und wie genau macht man das eigentlich den quelltext so reinkopieren? einfach makieren und kopieren ja anscheinent nicht...... Ps ich bin erst 14 jahre alt also nicht wundern :-D |
AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
Zitat:
Das Einfügen von Quelltext geht so: Den Quelltext in die Zwischenablage, dann hier so einfügen
Code:
und das Ergebnis ist das
[DELPHI]
procedure Foo; begin // sth end; [/DELPHI]
Delphi-Quellcode:
procedure Foo;
begin // sth end; |
AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
Delphi-Quellcode:
das is jetzt dann der quelltext des spiels. nich schön aber naja..... und danke für den "Welpenschutz" :-D
program Project1;
{$APPTYPE CONSOLE} uses SysUtils; var name: string; Zahl1, Zahl2, Eingabe, AktuelleRunde: real; RichtigeAntw: integer = 0; AnzRunden: integer; begin Writeln('Bitte geben sie ihren Namen ein'); Readln(Name); Writeln('Hallo ' + Name + ' wie viele Runden willst du spielen?'); Readln(AnzRunden); Writeln('Also spielen wir ' + FloatToStr(AnzRunden) + ' Runden zusammen'); Readln; AktuelleRunde := 0; repeat // wiederhole solange..... AktuelleRunde := AktuelleRunde + 1; randomize; Zahl1 := Random(20) + 1; Zahl2 := Random(10) + 1; Writeln(FloatToStr(Zahl1) + '+' + FloatToStr(Zahl2)); Readln(Eingabe); if Eingabe = Zahl1 + Zahl2 then Writeln('Das ist richtig') else Writeln('Das war falsch'); Readln; if Eingabe = Zahl1 + Zahl2 then inc(RichtigeAntw); until AnzRunden = AktuelleRunde; // ...bis Aktuellle Runde=Anzahl Runde Writeln('Du hast ' + IntToStr(RichtigeAntw) + ' Aufgaben von ' + IntToStr (AnzRunden) + ' richtig gelöst'); Readln; try { TODO -oEntwickler -cKonsole Main : Hier Code einfügen } except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. |
AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
Und das funktioniert? Da Du mit Fließkommazahlen (Real) rechnest, sollten eigentlich Rundungsungenauigkeiten auftreten, die einem den ganzen Spaß verderben, da Vergleiche nicht das Ergebnis liefern, das man erwartet.
|
AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
Zitat:
War aber zugegebenermaßen auch berechtigt.:oops: Die globale Variable bezog sich noch auf den Vorschlag in #2, bezogen auf dein Gerüst, wäre es eine weiter variable in der Prozedur Spiel. Hätte das vllt. anders beantwortet, wenn der tatsächliche Stand der Dinge bekannt gewesen wäre bzw. ich den TE besser eingeschätzt hätte. Da du ihr das detailiert aufgedröselte Grundgerüst an die Hand gegeben hast hast du das von Anfang an besser eingeschätzt. "Blutige Anfängerin" wäre da sicher ein Hinweis gewesen, wenn ich auch bei der Sprache nicht auf "nur" 14 getippt hätte, wenn ich mal davon ausgehe, was sonst häufig für Posts aus der jungen Generation kommen. |
AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
Zitat:
|
AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
erstmal ja der quelltext funktioniert aber das hat mein chef mir eben auch gesagt
dann danke aber diese aussprache liegt an meiner erziehung da meine eltern auf ein gutes benehmen achten und auch darauf wert legen. |
AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
@stina
Hier mal mein Vorschlag, der auch sehr leicht um die noch gewünschten Features erweitert werden kann. (Es geht nicht darum zu zeigen, was ich Tolles kann, sondern um die Erkenntnis, warum ein Programm durch Strukturierung leichter zu warten und erweitern ist). BTW: Es fehlt noch ein wichtiger Link für das Verständnis ![]()
Delphi-Quellcode:
program RechenQuiz;
{$APPTYPE CONSOLE} {$R *.res} uses SysUtils; function FrageAnzahlRunden : Integer; var LAntwort : string; begin repeat Write( 'Wieviele Runden möchtest du spielen? ' ); Readln( LAntwort ); until TryStrToInt( LAntwort, Result ); WriteLn; end; procedure ErstelleAdditionsAufgabe( out Frage, Loesung : string ); var LZahl1, LZahl2 : Integer; begin LZahl1 := Random( 100 ); LZahl2 := Random( 100 ); Frage := Format( 'Wieviel ist %d + %d ?', [LZahl1, LZahl2] ); Loesung := Format( '%d', [LZahl1 + LZahl2] ); end; procedure ErstelleSubtraktionsAufgabe( out Frage, Loesung : string ); var LZahl1, LZahl2 : Integer; begin LZahl1 := Random( 100 ); LZahl2 := Random( LZahl1 ); Frage := Format( 'Wieviel ist %d - %d ?', [LZahl1, LZahl2] ); Loesung := Format( '%d', [LZahl1 - LZahl2] ); end; procedure ErstelleMultiplikationsAufgabe( out Frage, Loesung : string ); var LZahl1, LZahl2 : Integer; begin LZahl1 := Random( 10 ); LZahl2 := Random( 10 ); Frage := Format( 'Wieviel ist %d x %d ?', [LZahl1, LZahl2] ); Loesung := Format( '%d', [LZahl1 * LZahl2] ); end; procedure ErstelleAufgabe( out Frage, Loesung : string ); begin case Random( 3 ) of 0 : ErstelleAdditionsAufgabe( Frage, Loesung ); 1 : ErstelleSubtraktionsAufgabe( Frage, Loesung ); 2 : ErstelleMultiplikationsAufgabe( Frage, Loesung ); end; end; function LoeseAufgabe( const Frage, Loesung : string ) : Boolean; var LAntwort : string; begin Write( Frage, ' ' ); Readln( LAntwort ); Result := LAntwort = Loesung; if Result then WriteLn( 'Sehr gut, weiter so ...' ) else WriteLn( 'Die richtige Lösung wäre ', Loesung, ' gewesen' ); WriteLn; end; procedure ZeigeErgebnis( RichtigBeantwortet, AnzahlFragen : Integer ); begin WriteLn( 'Du hast ', RichtigBeantwortet, ' Fragen von ', AnzahlFragen, ' richtig beantwortet!' ); WriteLn; end; procedure Burt_Dieser_Mensch_Will_Nicht_Spielen; begin WriteLn( 'Schade, dass du nicht spielen möchtest!' ); WriteLn; end; function NochmalSpielen : Boolean; var LAntwort : string; begin Write( 'Willst du nochmal spielen (J/N)? ' ); Readln( LAntwort ); WriteLn; Result := ( LAntwort = 'J' ) or ( LAntwort = 'j' ); end; procedure Verabschieden; begin WriteLn( 'Bis zum nächsten Mal :o)' ); end; // Putting the pieces together :o) procedure Spiel; var LRundenAnzahl : Integer; // Anzahl der Runden LRunde : Integer; // aktuelle Runde LFrage : string; // aktuelle Frage LLoesung : string; // Lösung zur aktuellen Frage LRichtigZaehler : Integer; // Zähler der richtigen Antworten begin LRichtigZaehler := 0; LRundenAnzahl := FrageAnzahlRunden; if LRundenAnzahl > 0 then begin for LRunde := 1 to LRundenAnzahl do begin ErstelleAufgabe( LFrage, LLoesung ); if LoeseAufgabe( LFrage, LLoesung ) then Inc( LRichtigZaehler ); end; ZeigeErgebnis( LRichtigZaehler, LRundenAnzahl ); end else Burt_Dieser_Mensch_Will_Nicht_Spielen; end; begin try Randomize; repeat Spiel; until not NochmalSpielen; Verabschieden; except on E : Exception do WriteLn( E.ClassName, ': ', E.Message ); end; Readln; end. |
AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
Man sieht ja, was es gebracht hat. Nach meiner Erfahrung bringt es einfach nix, einem Anfänger gleich ein ausgefuchstes Codegerüst zu liefern, das er aber nicht versteht oder das ihm zu kompliziert erscheint. Nichtsdestotrotz ist ein Hinweis natürlich angebracht.
|
AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz