Софтуерно Инженерство
Loading...
danila.vanila.3 avatar danila.vanila.3 9 Точки

[Homework] C# Basics - Operators Expressions and Statements - {1} - Odd or Even Integers

Здравейте, рещих задачата и на пръв поглед работи правилно, но забелязах, че като въведа което и да било което е било число от 10 нагоре включително ми изписва "odd" независимо дали е четно или нечетно..Ето моят код и ще се радвам ако някой ми обясни откъде идва грешката. :)

using System;

        class OddOrEven
            {
                static void Main()
                {
                    int number;
                    number=Console.Read(); 

                     if ((number % 2) == 0)
                         {
                             Console.WriteLine("This number is even.");
                          }
                     else

                          {
                             Console.WriteLine("This number is odd.");

                           }
                  }
              }

1
Основи на програмирането 02/02/2015 19:19:48
kasskata avatar kasskata 492 Точки

Мога да ви предложа 1 line bullSh*t. Не го правете на изпита! :D, но тернарния оператор може да ви спести 10 реда код.                   

Console.WriteLine(int.Parse(Console.ReadLine()) % 2 == 0 ? "Even" : "Odd");

Кафяво: четем числото, и веднага прехвърляме в INT.
Синьо: всичко преди "%" се запаметява като "променлива без име"(обаразно казано) и става като "number % 2 == 0". Това е нашето произведение, което е равно или True или False.
Червено: Ako e true напиши на конзолата "Even".
Зелено: Ако е False напиши на конзолата "Odd".

Лилаво/Розово: Печата това , което му връща като резултат тенания оператор (дефакто всичко в скобите).

0
12/02/2015 23:47:33
Filkolev avatar Filkolev 4428 Точки

И колеги, в ниво 2 в курса по КПК ще ви учим как да НЕ пишете такъв код :D

1
kasskata avatar kasskata 492 Точки

Хаха , да. Но, за изпита за нещо малко може и да спестите време в мислене, а може и да ви обърка още повече. 

Но Фил е прав. По принцип трябва да си е всичко в отделни променливи и да е нещо такова. 

int number = int.Parse(Console.ReadLine());
string result = number % 2 == 0 ? "Even" : "Odd";
Console.WriteLine(result);

Но винаги можете да се изтерикатите на един ред. :D

 

0
12/02/2015 23:45:33
anieze1 avatar anieze1 2 Точки

Здравейте,  има ли решение за "0"?

Бях решила задачата по друн начин и си работеше ОК, дато не въведох "0", за която се иска да е false.... и започнах да търся други варианти, но и във вашия премир мисля, че не изписва false.

Благодаря,

 

0