Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zwei Arrays vergleichen - aber wie ??


Mühli - Do 03.03.11 14:00
Titel: Zwei Arrays vergleichen - aber wie ??
Hallo Leute!

Also ich habe folgende Aufgabe zu lösen und benötige ihre Hilfe: Ich muss ein Quiz erstellen. Ich habe 2 Arrays definiert von 0 - 266 und es soll array 1 mit array 2 vergleichen (die richtige antwort trägt die gleiche arrayzahl, d.h. die richtige antwort auf frage 1 ist die gleiche zahl wie die frage (z.B. frage Fragen[32] - antwort Antwort[32])). Wie vergleiche ich das ???

Ich hoffe ihr könnt mir helfen

lg


zuma - Do 03.03.11 14:27

wenn ichs richtig verstanden hab, ist das also in etwa so aufgebaut:

Frage1 := Array1[0];
Lösung zu Frage 1 := Array2[0];

ob nun richtig geantwortet wurde, ist doch ganz einfach

Delphi-Quelltext
1:
Result := (Antwort = Array2[NrFrage]);                    


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Mühli - Do 03.03.11 14:31

Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

??????????????????????????????


Kay E. - Do 03.03.11 14:55

Ich übersetz das mal.
Er ging davon aus, dass deine Antworten zu deinen Fragen in Array2 stehen. Die Antworten, die der Benutzer gibt, werden in Array1 eingetragen an die gleichen Stellen.

Wenn du jetzt eine Frage mit einer Antwort vergleichen willst, kannst du das machen mit

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function AnswerCorrect(ID: Byte): Boolean;
begin
if array1[ID] = array2[ID] then
  result := true
else
  result := false;
end;


Zuma hat in der letzten Zeile das ganze nur stark vereinfacht von der Syntax her, wobei "antwort" bei mir "array1" ist. Das wäre dann


Delphi-Quelltext
1:
 array1[NrFrage] = Array2[NrFrage]                    

Das ist ein Vergleich und liefert eben True oder False zurück, wie in der If-bedingung. Und dieses Ergebnis weisst er result zu.

Grüße Kay


FinnO - Do 03.03.11 15:17

user profile iconKay E. hat folgendes geschrieben Zum zitierten Posting springen:
Ich übersetz das mal.
Wenn du jetzt eine Frage mit einer Antwort vergleichen willst, kannst du das machen mit

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function AnswerCorrect(ID: Byte): Boolean;
begin
if array1[ID] = array2[ID] then
  result := true
else
  result := false;
end;



Warum nicht gleich


Delphi-Quelltext
1:
2:
3:
4:
function AnswerCorrect(ID: Byte): Boolean;
begin
  result := Array1[ID] = Array2[ID];
end;


;) LG,

FinnO


zuma - Do 03.03.11 15:45

hmm... wenn ich die ausgangslage richtig gelesen hab, hat er nur 2 Array's, eines mit den Fragen und eines mit den Lösungen, wie die Antworten erfasst werden, hat er gar nicht erwähnt, daher ging ich von z.b. nem edit aus. ich versuchs mal bildlich darzustellen


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
IA / AF    / AL / Userantwort

0  / 1+1   / 2  / 3
1  / 1+2   / 3  / 3
2  / 1+3   / 4  / 5

... usw, etc, pp

IA = Index Array
AF = Array mit Fragen
AL = Array mit richtigen Antworten (Lösungen)


In AF an Index 1 steht also die Frage 1+2,
In AL an Index 1 steht die korrekte Antwort

um nun rauszufinden, ob der User richtig geantwortet hat, muss du nur wissen,
welche Antwort er auf welche Fragennummer gegeben hat, und kannst dann mit

Result := (AL[NrFrage] = Antwort);

den Vergleich machen


bummi - Do 03.03.11 15:56

Oder ein Array of Record ((ID)/Frage/Antwort)


Kay E. - Do 03.03.11 17:37

@ Finno: Ich hab's ja extra mal ausgeschrieben, weil OP obv mit dem Einzeiler nicht zurecht kam. Ich habs dann drunter aber auch erklärt, warum das auch mit dem Einzeiler geht und was der macht ;)

Grüße Kay