Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm. (https://www.delphipraxis.net/173737-berechnen-und-ausgeben-wie-viele-antworten-richtig-waren-fuers-konsolenprogramm.html)

stina 14. Mär 2013 07:55

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

Sir Rufo 14. Mär 2013 08:01

AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
 
Zitat:

Zitat von stina (Beitrag 1207329)
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 icjh 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 anscheinen nicht......
Ps ich bin erst 14 jahre alt also nicht wundern :-D

Du bist ja noch neu hier, darum hast du (ungeachtet des Alters) noch "Welpenschutz" :mrgreen:

Das Einfügen von Quelltext geht so:

Den Quelltext in die Zwischenablage, dann hier so einfügen
Code:
[DELPHI]
procedure Foo;
begin
  // sth
end;
[/DELPHI]
und das Ergebnis ist das
Delphi-Quellcode:
procedure Foo;
begin
  // sth
end;

stina 14. Mär 2013 08:20

AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
 
Delphi-Quellcode:
 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.
das is jetzt dann der quelltext des spiels. nich schön aber naja..... und danke für den "Welpenschutz" :-D

DeddyH 14. Mär 2013 08:29

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.

Jumpy 14. Mär 2013 08:30

AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
 
Zitat:

Zitat von Sir Rufo (Beitrag 1207327)
@Jumpy

Einem Anfänger globale Variablen schmackhaft zu machen - weil man schnell eine Antwort geben will - und diesem Anfänger dann in ein paar Tagen/Wochen/Monaten/Beiträgen genau diese globale Variablen um die Ohren zu hauen "Nein, mach das nicht!", "Wie kann man nur!", "Das ist schlechter Stil!" (Beispiele gibt es im Forum zuhauf) ist ein wenig unfair, zumal ich mein Grundgerüst eben genau unter diesem Aspekt "Vermeidung globaler Variablen" gegeben habe.

Autsch, das hat jetzt wegetan.:cry:
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.

Sir Rufo 14. Mär 2013 08:37

AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
 
Zitat:

Zitat von Jumpy (Beitrag 1207337)
Autsch, das hat jetzt wegetan.:cry:
War aber zugegebenermaßen auch berechtigt.:oops:

So feste wollte ich gar nicht ... zumal du auch nicht der Einzige gewesen bist ;)

stina 14. Mär 2013 08:43

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.

Sir Rufo 14. Mär 2013 08:44

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 hier :mrgreen:

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.

DeddyH 14. Mär 2013 08:46

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.

Sir Rufo 14. Mär 2013 08:51

AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
 
Zitat:

Zitat von DeddyH (Beitrag 1207342)
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.

Der Idealismus sollte als Letzter dran glauben :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz