Проблем със задача Even Number на PHP
Здравейте. Имам малък проблем със задачата Even Number от лаба "Basic Syntax, Conditional Statements and Loops". Условието е:
12. Even Number
Take as an input an even number and print its absolute value. If the number is odd, print Please write an even number. and continue reading numbers while you receive even number and stop the program.
Output
If you receive even number print: The number is: {number} and finish the program, otherwise print Please write an even number.
Реших я на C# и Java без никакви проблеми, но на PHP една от проверките (по-точно първата) гърми. Използвал съм абсолютно същия алгоритъм, както при C# и Java. Пробвах парсването да бъде intval, след това floatval, но резултатът е същият. Моля за помощ. Ето го и кода ми:
https://pastebin.com/wpTSXMe2
Ето и задачата в Judge: https://judge.softuni.bg/Contests/Practice/Index/1191#11
Благодаря предварително за отделеното време.
Благодаря. Твоят код работи и дава 100/100. Но така и не разбирам каква е разликата в имплементацията на моя и твоя код? И защо същият алгоритъм работи на C# да речем, а тук - не. Би трябвало да има, ако не логическа, то поне техническа причина за това.
Честно казано, аз за първи път виждам проверка за четно/нечетно число направена по този начин. Кой ти каза да я правиш така!? Обикновено е % 2 == 0. Ако го преправиш на (% 2 != 0), твоят код също ще мине!
Кодът ми може да не е изряден, но въпросът си остава - защо "докато числото а е нечетно" (while (a % 2 == 1)) и "докато числото а не е четно" (while (a % 2 != 0)) са две различни неща (защото излиза, че отттам идва проблемът)?
P. S. Сега видях, че в C# съм я решил с a % 2 != 0, явно заради това там имам 100 точки. Там също a % 2 == 1 не работи. Изглежда има граничен случай където (a % 2 != 0) не е еквивалентно на (a % 2 == 1).