Seite: 1 [2] [3] [4] [5] [6] [7] [8] [9] [10] .. [22] [23] >> |
Autor |
Mitteilung |
|
verfasst am: 16.08.2007, 00:29
|
Registrierdatum: 24.07.2007, 10:19
Beiträge: 71
|
So nun meine Lösungsvorschläge für die Aufagben Kapitel 4
... Alles wie bisher
procedure Quiz2;
var
FragenList : TStringList;
AntwortenList : TStringList;
Antwort : String;
testing : String; //für test ob leer
testing2 : String; //für test ob erstes zeichen leerzeichen ist
boltest : Boolean; //für neue SChleife
dummy : Integer;
begin
Q2_richtig := 0;
testing :='';
testing2 :=' ';
boltest := true;
FragenList := TStringList.Create;
FragenList.CommaText := Q2_Fragen;
AntwortenList := TStringList.Create;
AntwortenList.CommaText := Q2_Antworten;
game_api_messageBox(AnleitungQuiz2);
for dummy := 0 to FragenList.Count-1 do
begin
game_api_messageBox(FragenList[dummy]);
while boltest do // schleife die solange läuft bis das erste zeichen kein leerzeichen ist und antwort nicht leer ist
begin
if ((game_api_QueryText('Antwort:',30,Antwort)=true) and (Antwort<>testing) and not (pos(testing2,Antwort)=1)) then boltest:=false
// hier muss nichts gemacht werden
end;
boltest:=true;
Antwort := UpperCase(Antwort);
if (Antwort = AntwortenList[dummy]) then
inc(Q2_richtig);
Antwort:='';
end;
FragenList.Free;
AntwortenList.Free;
end;
procedure auslagern(frage:String; var rechn:Array of Integer); // zur erstellung der zahlen zur rechnung
var
i, zaehl, laenge:Integer;
text: Char;
begin
zaehl:=0;
laenge:=Length(frage);
For i:=1 to laenge do
begin
text:=StrGet(frage,i);
if ((text='+') or (text='x')) then zaehl:=zaehl+1;
end;
SetLength(rechn,zaehl+1);
For i:=0 to zaehl do
begin
rechn[i]:=random(100)+20;
end;
end;
procedure Quiz3;
var
Ergebnis : String;
zahl: Array of Integer;
begin
game_api_messageBox(AnleitungQuiz3);
auslagern(Q3_Frage1,zahl);
game_api_messageBox(Format(Q3_Frage1,[zahl[0],zahl[1]]));
while (not game_api_QueryText('Lösung:',10,Ergebnis)) do
begin
// hier muss nichts gemacht werden
end;
if (StrtoIntdef(Ergebnis,0) = zahl[0]*zahl[1]) then
inc(Q3_richtig);
Ergebnis := '';
auslagern(Q3_Frage2,zahl);
game_api_messageBox(Format(Q3_Frage2,[zahl[0],zahl[1],zahl[2]]));
while (not game_api_QueryText('Lösung:',10,Ergebnis)) do
begin
// hier muss nichts gemacht werden
end;
if (StrtoIntdef(Ergebnis,0) = (zahl[0]+zahl[1])*zahl[2]) then
inc(Q3_richtig);
Ergebnis := '';
auslagern(Q3_Frage3,zahl);
game_api_messageBox(Format(Q3_Frage3,[zahl[0],zahl[1]]));
while (not game_api_QueryText('Lösung:',10,Ergebnis)) do
begin
// hier muss nichts gemacht werden
end;
if (StrtoIntdef(Ergebnis,0) = zahl[0]*zahl[1]) then
inc(Q3_richtig);
end;
... Ab hie wieder alles normal
So ich hab probiert 2a und b gleichzeitig zu lösen, da nur mit or erweitert werden muss. Ich hoffe ich hab die fragestellung richtig verstanden, allerdings hab ich keine ahnung wie man das mit den rechenzeichen machen kann, das er die automatisch einsetzt und die rechenzeichen beachtet (werds noch ein bissle probieren und wenn ich auf eine Lösung komm die noch dazu posten, wird dann aber wahrscheinlich noch etwas länger). |
|
verfasst am: 16.08.2007, 10:41 · Edited by: Natter
|
Programmierer, allgemeines
Registrierdatum: 06.06.2004, 17:19
Beiträge: 3186
|
Hmm, hier mal ein Tip. Da du ja schon Kapitel 6 durch hast, sollte das ganze halbwegs einfach per Array gelöst werden können. Um an der Stelle gleich paar Sachen zu üben, würde ich folgendes Vorgehen vorschlagen. Du definierst dir einen neuen Aufzählungstyp TRechenoperation (für den Anfang mit den Elementen Addition und Multiplikation - später wären auch Klammern und weitere Rechernoperationen denkbar). Dann verwendest du einen Array of TRechenoperation an Stelle von zaehl, und merkst dir dort die Reihenfolge der Rechenoperationen.
Dann kannst du in einer Schleife den FragenText Stück für Stück mit Zufallszahlen auffüllen (eine Schleife ist nötig, weil du ja die Anzahl der benötigten Parameter für Format nicht im Vorfeld kennst). Die Zufallszahlen müsstest du dir auch in einem Array merken. Mit der Kombination von beiden Arrays solltest du dann einfach das Ergebnis ausrechnen können. Schwierig ist dabei allerdings nochmal, Punkt- vor Strichrechnung zu berücksichtigen.
So, und jetzt viel Spass beim knobeln.
PS: Auch mit dem Wissen bis Kapitel 4 könnte man ähnlich vorgehen, man müsste dann die einzelnen Zahlen bzw. Rechenoperationen jeweils in einer Stringlist zwischenspeichern. Man könnte aber auch gleich einen anderen Ansatz wählen, und z.B. mit Pos zuerst nach %d * %d zu suchen, und den String stückweise zu ersetzen. Da man zuerst nach den Multiplikationen sucht, erfüllt man automatisch Punktrechnung vor Strichrechnung - allerdings muss man sich bei der Variante etwas einfallen lassen, wie man z.B. %d * %d * %d abfangen könnte. Alles in Allem ist ein solcher Ansatz vermutlich umständlicher, da man dann ja auch beliebige Zahlen im String suchen müsste (um z.B. die Produkte anschließend zu addieren). |
|
verfasst am: 22.11.2023, 09:22
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 01.12.2023, 10:59
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 13:55
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 13:56
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 13:57
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 13:58
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 13:59
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 14:00
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 14:01
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 14:02
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 14:03
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 14:04
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 14:05
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 14:06
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 14:08
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 14:09
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
|
verfasst am: 09.01.2024, 14:10
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 72721
|
|
Seite: 1 [2] [3] [4] [5] [6] [7] [8] [9] [10] .. [22] [23] >> |