AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von stina · begonnen am 13. Mär 2013 · letzter Beitrag vom 15. Mär 2013
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von stina
stina

Registriert seit: 6. Mär 2013
23 Beiträge
 
Delphi 2010 Professional
 
#21

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

  Alt 14. Mär 2013, 09:56
ok ja der quelltxt sieht echt kompliziert aus .
ich soll jetzt erstmal mit einbauen das die rechenart die genutzt wird auch zufällig ist
ungefähr so:
Delphi-Quellcode:
  operator:=Random(3);
    if operator=0 then zahl1+zahl2
    else if operator=1 then zahl1-zahl2
     else if operator=2 then zahl1*zahl2;

    Writeln(FloatToStr(Zahl1) + operator + FloatToStr(Zahl2));
    Readln(Eingabe);
    if Eingabe = zahl1+operator+zahl2
    then Writeln('Das ist richtig')
    else Writeln('Das war falsch');
    Readln;
so meinte mein chef solle ich das machen
Ann-Christin
Rechtschreibfehler hier gratis!!!!
Kommt und greift zu!
LG stina
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

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

  Alt 14. Mär 2013, 10:11
Von dem Code solltest du dich nicht abschrecken lassen Der tut nix, der will nur spielen

Nehmen wir mal als Beispiel function FrageAnzahlRunden : Integer; :

Diese Funktion soll einfach nur die gewünschte Anzahl der Runden zurückliefen.
Im Spiel selber ruft man diese Funktion einfach auf
Delphi-Quellcode:
// Wieviele Runden möchten wir denn spielen?
LRundenAnzahl := FrageAnzahlRunden;
und kümmern uns nicht weiter darum, wie diese Funktion das schafft, es ist ihre Aufgabe und basta.

Wenn wir diese Funktion schreiben, dann kümmern wir uns nicht darum, was das Spiel macht, sondern nur um die Aufgabe, die Anzahl der Runden zu ermitteln und diesen Wunsch als Rückgabe (Result ) zu liefern.

Wenn man einen Lichtschalter benötigst, dann fragt man sich auch nicht wie der hergestellt wird, sondern erwartet einfach dass der seine Arbeit erledigt.
Wenn ein Lichtschalter hergestellt wird, dann fragt sich dort auch niemand, ob der links oder rechts von der Tür angebracht wird, sondern nur, dass der zuverlässig seinen Dienst verrichtet.

Es gibt bei der Programmierung allerdings einen ganz wichtigen Grundsatz:
Zitat:
Ein fertiges und funktionierendes Programm (egal wie geschrieben) ist immer besser als ein super strukturierter Programmaufbau der vor lauter Strukturierung nicht fertig wird
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von stina
stina

Registriert seit: 6. Mär 2013
23 Beiträge
 
Delphi 2010 Professional
 
#23

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

  Alt 14. Mär 2013, 10:14
Achso ok und könnt ihr mir sagen was ich bei dem anderen falsch mache wenn ich das programm starten will kommt immer:
[DCC Fehler] Project1.dpr(30): E2014 Anweisung erforderlich, aber Ausdruck vom Typ 'Extended' gefunden.
Wie kann ich das ändern hab in der hilfe geguckt war aber total unverständlich.
Ann-Christin
Rechtschreibfehler hier gratis!!!!
Kommt und greift zu!
LG stina
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#24

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

  Alt 14. Mär 2013, 10:17
Achso ok und könnt ihr mir sagen was ich bei dem anderen falsch mache wenn ich das programm starten will kommt immer:
[DCC Fehler] Project1.dpr(30): E2014 Anweisung erforderlich, aber Ausdruck vom Typ 'Extended' gefunden.
Wie kann ich das ändern hab in der hilfe geguckt war aber total unverständlich.
Zeig mal den Quelltext der diesen Fehler produziert (der Fehler sollte sich in Zeile 30 befinden).

UPDATE

 if operator=0 then zahl1+zahl2 Das ist der Fehler. Du Addierst zwei Zahlen, aber wohin soll das Ergebnis gespeichert werden. Wenn du es dir nicht merkst, warum berechnest du es dann?

Evtl. eine neue Variable Loesung : real; und dann die Berechnung dieser zuweisen:
Delphi-Quellcode:
 

if operator=0 then Loesung := zahl1+zahl2
Und im ganzen Satz:
Delphi-Quellcode:
 operator:=Random(3);

    Loesung := 0;

    if operator=0 then Loesung := zahl1+zahl2
      else if operator=1 then Loesung := zahl1-zahl2
        else if operator=2 then Loesung := zahl1*zahl2;

    Writeln( zahl1, operator, zahl2 ); // Für die Umwandlung des Operators (0,1,2) in ('+','-','*') musst du dir noch etwas einfallen lassen

    Readln(Eingabe);
    if Eingabe = Loesung
    then Writeln('Das ist richtig')
    else Writeln('Das war falsch');
    Readln;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (14. Mär 2013 um 10:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stina
stina

Registriert seit: 6. Mär 2013
23 Beiträge
 
Delphi 2010 Professional
 
#25

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

  Alt 14. Mär 2013, 11:07
ok danke propier ich gleich mal aus
Ann-Christin
Rechtschreibfehler hier gratis!!!!
Kommt und greift zu!
LG stina
  Mit Zitat antworten Zitat
Benutzerbild von stina
stina

Registriert seit: 6. Mär 2013
23 Beiträge
 
Delphi 2010 Professional
 
#26

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

  Alt 14. Mär 2013, 11:53
Delphi-Quellcode:
 program Project1;
{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  name: string;
  Zahl1, Zahl2, Eingabe, AktuelleRunde, Ergebnis: real;
  RichtigeAntw: integer = 0;
  AnzRunden, op: 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;
    op := Random(3);
    if op = 0 then
      Ergebnis:=Zahl1+Zahl2
    else if op = 1 then
      Ergebnis:=Zahl1-Zahl2
    else if op = 2 then
     Ergebnis:= Zahl1*Zahl2;
     Writeln (FloatToStr(Zahl1) ,IntToStr(op) , FloatToStr(Zahl2));
      Readln(Eingabe);
    if Eingabe = Zahl1 + op + Zahl2 then
      Writeln('Das ist richtig')
    else
      Writeln('Das war falsch');
      Readln;
    if Eingabe = Ergebnis 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.
dies ist mein momentaner quelltext. jetzt steh ich aber wirklich vor dem problem das er die zahle non 0-2 anzeigt und nicht +,-,* wie kann ich das ändern?
Ann-Christin
Rechtschreibfehler hier gratis!!!!
Kommt und greift zu!
LG stina
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#27

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

  Alt 14. Mär 2013, 12:11
Zu Übungszwecken solltest du wenigstens das einmal in eine Funktion auslagern wie Sir Rufo das ja für alles Vorgeschlagen hat:

Delphi-Quellcode:
function MyOperatorAsString(op:Integer):String;
begin
  if op=0 then
   Result:='+'
  else
  //usw...
end;
oder zur weiteren Übung kannst du dir auch noch die Fallunterscheidung mit "Case" aneignen:

Delphi-Quellcode:
function MyOperatorAsString(op:Integer):String;
begin
  case op of
  0: Result := '+';
  1: Result := '-';
  //usw...
  end;
end;
Im Hauptprogramm stünde dann bei der Ausgabe:
Writeln (FloatToStr(Zahl1) ,MyOperatorAsString(op) , FloatToStr(Zahl2));
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#28

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

  Alt 14. Mär 2013, 12:32
Hier mal ein wenig überarbeitet:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  name: string;
  Zahl1, Zahl2, Eingabe, Ergebnis: real;
  RichtigeAntw: Integer = 0;
  AnzRunden, AktuelleRunde, op: Integer;

begin
  Randomize;
  Writeln('Bitte geben sie ihren Namen ein');
  Readln(Name);
  Writeln('Hallo ' + Name + ' wie viele Runden willst du spielen?');
  Readln(AnzRunden);
  Writeln('Also spielen wir ' + IntToStr(AnzRunden) + ' Runden zusammen');
// Readln;
  AktuelleRunde := 0;
  repeat // wiederhole solange.....
    Inc(AktuelleRunde);
    Zahl1 := Random(20) + 1;
    Zahl2 := Random(10) + 1;

    op := Random(3);
    case op of
      0: begin;
           Ergebnis := Zahl1 + Zahl2;
           Writeln(FloatToStr(Zahl1), '+', FloatToStr(Zahl2));
         end;
      1: begin;
           Ergebnis := Zahl1 - Zahl2;
           Writeln(FloatToStr(Zahl1), '-', FloatToStr(Zahl2));
         end;
      else begin;
           Ergebnis := Zahl1 * Zahl2;
           Writeln(FloatToStr(Zahl1), '*', FloatToStr(Zahl2));
         end;
    end;

    Readln(Eingabe);

    if Eingabe = Ergebnis then begin;
      Writeln('Das ist richtig');
      inc(RichtigeAntw);
    end else begin;
      Writeln('Das war falsch');
    end;

   // Readln;

  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.
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von stina
stina

Registriert seit: 6. Mär 2013
23 Beiträge
 
Delphi 2010 Professional
 
#29

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

  Alt 14. Mär 2013, 12:41
Danke das ist echt nett von euch mal sehn obs funktioniert.
Ann-Christin
Rechtschreibfehler hier gratis!!!!
Kommt und greift zu!
LG stina
  Mit Zitat antworten Zitat
Benutzerbild von stina
stina

Registriert seit: 6. Mär 2013
23 Beiträge
 
Delphi 2010 Professional
 
#30

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

  Alt 14. Mär 2013, 12:44
@ Martin
Danke das hat funktioniert
Diese seite hilft einem wirklich gut wenn man probleme mit delphi hat oder besser die leute hier helfen einem echt gut
Ann-Christin
Rechtschreibfehler hier gratis!!!!
Kommt und greift zu!
LG stina

Geändert von stina (14. Mär 2013 um 12:51 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr.
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