GCD: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
 
(10 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''gcd'' berechnet den größten gemeinsamen Teiler zweier ganzer Zahlen. Die Funktion erwartet zwei Zahlen und gibt eine Zahl zurück.
Die Funktion ''gcd'' berechnet den größten gemeinsamen Teiler zweier ganzer Zahlen. Die Funktion erwartet zwei Zahlen und gibt eine Zahl zurück.


=== Syntax ===
=== Syntax ===
  gcd(int zahl1, int zahl2)
  gcd([[Ganzzahl]] zahl1, [[Ganzzahl]] zahl2)


=== Parameter ===
=== Parameter ===
Zeile 14: Zeile 17:
=== Beispiele ===
=== Beispiele ===
==== Standardfälle ====
==== Standardfälle ====
  gcd('5','20')  --> returns 5
  gcd(5,20)  --> returns 5
  gcd('-5','0')  --> returns 5
 
  gcd(-5,0)  --> returns 5
====JUnit Tests====
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed">
@Before
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("0"));
  placeFillInVariable(2, OMParser.parse("20"));
  placeFillInVariable(3, OMParser.parse("10"));
  placeFillInVariable(4, OMParser.parse("-5"));
  placeFillInVariable(5, OMParser.parse("5"));
  placeExerciseVariable("a", OMParser.parse("0"));
  placeExerciseVariable("b", OMParser.parse("20"));
  placeExerciseVariable("c", OMParser.parse("10"));
  placeExerciseVariable("d", OMParser.parse("-5"));
  placeExerciseVariable("e", OMParser.parse("5"));
}
 
@Test
public void testGCD(){
  assertTrue(5 == getEvaluator().getNumberResult("gcd('5', '5')"));
  assertTrue(3 == getEvaluator().getNumberResult("gcd('3', '-9')"));
  assertTrue(3 == getEvaluator().getNumberResult("gcd('-3', '9')"));
  assertTrue(5 == getEvaluator().getNumberResult("gcd('-5', '-5')"));
  assertFalse(5 == getEvaluator().getNumberResult("gcd('5', '9')"));
  assertFalse(3 == getEvaluator().getNumberResult("gcd('-3', '7')"));
}
 
@Test
public void testGCDAtDefinition(){
  assertTrue(55 == getEvaluator().getNumberResult("gcd('0', '55')"));
  assertTrue(11 ==getEvaluator().getNumberResult("gcd('-11', '0')"));
  assertTrue(0 ==getEvaluator().getNumberResult("gcd('0', '0')"));
}
@Test
public void testGCDWithInput(){
  assertTrue(10 == getEvaluator().getNumberResult("gcd('[pos=2]', '[pos=3]')"));
  assertTrue(5 == getEvaluator().getNumberResult("gcd('[pos=3]', '[pos=4]')"));
  assertTrue(5 == getEvaluator().getNumberResult("gcd('[pos=1]', '[pos=4]')"));
}
 
@Test
public void testGCDWithVariables(){
  assertTrue(10 == getEvaluator().getNumberResult("gcd('[var=b]', '[var=c]')"));
  assertTrue(5 == getEvaluator().getNumberResult("gcd('[var=c]', '[var=d]')"));
  assertTrue(5 == getEvaluator().getNumberResult("gcd('[var=a]', '[var=d]')"));
}
 
@Test
public void testGCDWithExpressions(){
  assertTrue(5 == getEvaluator().getNumberResult("gcd('gcd(5, [var=c])', '[var=c]')"));
  assertTrue(5 == getEvaluator().getNumberResult("gcd('[var=c]', '(gcd([var=d], 5))')"));
  assertTrue(5 ==getEvaluator().getNumberResult("gcd('(gcd([var=e],gcd([var=e], 5])))', '(gcd([var=b],[pos=5]))')"));
}
 
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testGCDWithWrongInputPointNumber(){
  getEvaluator().getNumberResult("gcd('5.5','4')");
}
 
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testGCDWithWrongInputCharacter(){
  getEvaluator().getNumberResult("gcd('a', '2')");
}
 
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testGCDWithOneArgument(){
  getEvaluator().getNumberResult("gcd('7')");
}


@Test(expected=UnsupportedEvaluatorFunctionException.class)
==== Benutzung mit Variablen ====
public void testGCDWithThreeArguments(){
gcd([var=a], [var=b])
  getEvaluator().getNumberResult("gcd('4', '5', '7')");
gcd([var=a])
}


@Test(expected=UndefinedExerciseVariableException.class)
==== Benutzung mit studentischen Eingaben ====
public void testGCDWithMissingExerciseVariable(){
'''Jack2:'''
  getEvaluator().getNumberResult("gcd('[var=j]', '3')");
gcd([pos=1], [pos=2])
}
gcd([var=a], [pos=1])


@Test(expected=UndefinedFillInVariableException.class)
'''Jack3:'''
public void testGCDWithMissingInput(){
gcd([input=fillin1], [input=fillin2])
  getEvaluator().getNumberResult("gcd('[pos=42]', '3')");
}
gcd([var=a], [input=fillin1])
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
* Die Reihenfolge der beiden Zahlen spielt keine Rolle.
* Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
* Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 17. April 2024, 07:44 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion gcd berechnet den größten gemeinsamen Teiler zweier ganzer Zahlen. Die Funktion erwartet zwei Zahlen und gibt eine Zahl zurück.

Syntax

gcd(Ganzzahl zahl1, Ganzzahl zahl2)

Parameter

  • zahl1 - erste Zahl aus der Menge der ganzen Zahlen
  • zahl2 - zweite Zahl aus der Menge der ganzen Zahlen

Return Value

  • Gibt eine Ganzzahl zurück

Beispiele

Standardfälle

gcd(5,20)   --> returns 5

gcd(-5,0)   --> returns 5

Benutzung mit Variablen

gcd([var=a], [var=b])
gcd([var=a])

Benutzung mit studentischen Eingaben

Jack2:
gcd([pos=1], [pos=2])

gcd([var=a], [pos=1])
Jack3:
gcd([input=fillin1], [input=fillin2])

gcd([var=a], [input=fillin1])

Hinweise

  • Die Reihenfolge der beiden Zahlen spielt keine Rolle.
  • Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
  • Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.