GCD

Aus JACK Wiki
Zur Navigation springen Zur Suche springen

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(int zahl1, int 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

JUnit Tests

[Anzeigen]

@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)
public void testGCDWithThreeArguments(){
  getEvaluator().getNumberResult("gcd('4', '5', '7')");
}

@Test(expected=UndefinedExerciseVariableException.class)
public void testGCDWithMissingExerciseVariable(){
  getEvaluator().getNumberResult("gcd('[var=j]', '3')");
}

@Test(expected=UndefinedFillInVariableException.class)
public void testGCDWithMissingInput(){
  getEvaluator().getNumberResult("gcd('[pos=42]', '3')");
}

Hinweise