[Programming Basics] Изпит 24-04-2016 Операции между числа
Здравейте,
Моля за съдействие по следната задача:
* Операции между числа
Трета задача от изпита на 24 април 2016. Тествайте решението си тук.
Напишете програма, която чете две цели числа (N1 и N2) и оператор, с който да се извърши дадена математическа операция с тях. Възможните операции са: Събиране(+), Изваждане(-), Умножение(*), Деление(/) и Модулно деление(%). При събиране, изваждане и умножение на конзолата трябва да се отпечатат резултата и дали той е четен или нечетен. При обикновеното деление – резултата. При модулното деление – остатъка. Трябва да се има предвид, че делителят може да е равен на 0(нула), а на нула не се дели. В този случай трябва да се отпечата специално съобщениe.
Вход
От конзолата се прочитат 3 реда, въведени от потребителя:
- N1 – цяло число в интервала [0...40 000]
- N2 – цяло число в интервала [0...40 000]
- Оператор – един символ измеду: „+“, „-“, „*“, „/“, „%“
Изход
Да се отпечата на конзолата един ред:
- Ако операцията е събиране, изваждене или умножение:
- „{N1} {оператор} {N2} = {резултат} – {even/odd}“
- Ако операцията е деление:
- „{N1} / {N2} = {резултат}“ – резултатът е фораматиран до вторият знак след дес.запетая
- Ако операцията е модулно деление:
- „{N1} % {N2} = {остатък}“
- В случай на деление с 0(нула):
- „Cannot divide {N1} by zero“
Примерен вход и изход
вход |
изход |
вход |
изход |
вход |
изход |
10 12 + |
10 + 12 = 22 - even |
123 12 / |
123 / 12 = 10.25 |
112 0 / |
Cannot divide 112 by zero |
10 1 - |
10 – 1 = 9 - odd |
10 3 % |
10 % 3 = 1 |
10 0 % |
Cannot divide 10 by zero |
7 3 * |
7 * 3 = 21 - odd |
|
Решението:
https://pastebin.com/N8NAF69Z
Гърми на 5тия тест 90/100.
Заподозрял съм се и в някаква базова грешка, защото горния резултат е при дефиниране на двете входни числа като double, въпреки че в условието е упоменато цели числа. При дефиниране като int изкарва 70/100 и имам грешка при деление 123/12 = 10.00 вместо 10.25.
нулите след точката са без значение те само казват на вара да е дабъл по дефолт а закръглянето се е получило като е сменил на инт а при интовете деленията нямат остатък там нулите се появяват заради форматирането
имах предвед `че аз бих го написал var=0.00d ..но аз пиша на с# така че по скоро бих го направил double ..=0.00d;
когато се напише var n = 0.0; или 0.000; без значение по дефолт му казва да е дабал разбира се не е грешно и да се напише но няма нужда както и без десетична точка го прави вара на инт като посочиш с курсора върху промрнливата във вижуал студио ти показва какъв вид е а в процес на дебъгване и неината стоиност към момента.