Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Karage avatar Karage 7 Точки

[Homework] C# Basics - Малко помощ за домашно 3 задача {1} - Odd or Even Integers

Моля някой по-напреднал или някой справил се със задачата да хвърли един поглед на решението ми.

Такова ли е решението на задачата или съм далеч от истината?

 

using System;

 class OddEven
   {
       static void Main()
       {
           Console.WriteLine("Проверете число да ли е нечтно:");
           int Number;
           string Resul = Console.ReadLine();
           int.TryParse(Resul, out Number);
           

           if (Number % 2 == 0)
             {
                 Console.WriteLine("числото е четно :"+Number);
                 Console.WriteLine("False");

             }
           else
            {
                 Console.WriteLine("числото е нечетно "+Number);
                 Console.WriteLine("True");
            }
       }
}

Тагове:
6
Programming Basics 11/02/2015 18:50:38
RoYaL avatar RoYaL Trainer 6849 Точки

Такова е, да, вече от тук нататък можеш да си поиграеш да намалиш кода без да намаляш четимоста му :)

1
dimitarstoyanov90 avatar dimitarstoyanov90 164 Точки

Мога да ти дам един съвет, вместо при проверка за остатък при деление с 2, след (Console.WriteLine("числото е четно :"+Number);, можеш вместо отново да задаваш нов WriteLine("false"), предварително да си казъл, че имаш булева променлива с default стойност false (преди IF конструкцията казваме: 

 

bool isOdd = false; 

//А иначе казано задаваме булева променлива  - > еНечетно = лъжа;

И оттук вече като влезеш в IF конструкцията преди първия Console.Writeline(); , кажи :

isOdd = false;

//което в случая е малко безмислено, тъй като сме задали вече стойността да бъде false(можеш да го пропуснеп този ред), но го пиша за да бъде по ясно :)

и след това кажи

Console.WriteLine("Числото е нечетно -> " + isOdd);

и оттук нататък в ELSE, ако числото е нечетно

isOdd = true;

Console.WriteLine("Числото е нечетно -> " + isOdd);

 

Та идеята ми беше да си имаш една булева променлива за тази цел, което според мен е добра практика :)

Успех!

 

 

0
Plami avatar Plami 373 Точки

Верен е source code-a :) Само ако искаш се опитай и друг вариант - например тернарния операнд (?:) Има го в лекцията.

1
TsvetinaKoleva avatar TsvetinaKoleva 92 Точки

Привет!
Задачата ти е вярна, а Димитър (дано не греша) по-горе ти е дал добри насоки :) Ако се затрудняваш с неговия вариант, питай, ще ти драсна мое обяснение и ще ти дам примери.

За оператора ?: можеш да прочетеш Тук

 

Ето и примерно решение на задачата:

using System;

      class OddOrEven
      {
           static void Main()
            {
                 Console.Write("Number: ");
                 int theNumber=Convert.ToInt32(Console.ReadLine());
                 Console.WriteLine((theNumber%2==0)? "It's even": "It's odd"); //questions?
            }
      }

Тук използвам оператора ?:, който ще ми върне стойност истина или лъжа. Ако числото е четно (theNumber%2==0) ще е истина и конзолата ще изкара It's even; ако числото дава остатък различен от 0 (т.е. не е четно), конзолата изкарва It's odd.

 

8
svetoslavpopov avatar svetoslavpopov 20 Точки

Здравей,
малко късно видях темата ти, но ще драсна някой ред, дано съм ти от полза.

По принцип относно задачата, нея можеш да я решиш по елементарно лесен начин.

int number= 0;

if (number% 2 == 0)
{
       if (number== 0)
       {
              Console.WriteLine(number+ " is odd = " + false);
       }

       else
       {
              Console.WriteLine(number+ " is odd = " + true);
       }       
}


Цялата магия идва в оператора за деление с остатък (или нещо от сорта не съм сигурен) "%". 
При деление на двете числа а = 7, b = 2, както в случая се търси четно число, с оператора % се дели числото а, на числото b, като в случая се получава:
7 / 2 = 3,
3 * 2 = 6,
7 - 6 = 1

Остатакът е 1, в случая проверяваш с if дали резултатът е равен на 0, ако е равен, числото е четно ако не е равно, следователно то е нечетно.



Също така искам да ти дам един съвет. По принцип в C# има утвърдени практики и стандарти за какво ли не, точно това го прави може би толкова предпочитан от много хора и както казва Наков "цивилизован" език. Та в този така наречен "цивилизован език" има наложен стандарт за именоването на променливи и т.н. Тъй като видях твойте променливи те съветвам да ги пишеш camelCase променливите, защото после като започне да се изучава обектно-ориентираното програмиране (ООП) ще ти е много трудно да се справяш ако имаш задача с нужда от повечко променливи и т.н., защото по принцип с PascalCase се именуват методите и класовете, и ужасно много ще се бъркаш. Сега може да не ти прави впечатление, но свиквай да пишеш добри имена на променливите и подреждай кода, защото в противен случай някой път ще се заплетеш много кофти в нечетим код и ще псуваш много. За това по принцип ще имаме специален курс в университета, но до тогава не е лошо да прихванеш от някъде по малко от всичко добро и да избягваш лошото. 

Надявам се да съм ти бил от полза.

Поздрави, 
Светослав :)

2
Karage avatar Karage 7 Точки

Благодаря за вниманието на всички и за съветите.

 

0
v1ppers0nn avatar v1ppers0nn 234 Точки

Това е моето решение laughing

using System;

class OddOrEvenInt
{
    static void Main()
    {
        for (int i = -2 ; i < 5; i++)
        {
            Console.Write(i);
            if (i % 2 == 0)
            {
                Console.WriteLine(" Числото е четно");
                Console.WriteLine(false);
            }
            else
            {
                Console.WriteLine(" Числото е нечетно");
                Console.WriteLine(true);
            }
        }
    }
}

 

 

 

-2
gergishanov avatar gergishanov 0 Точки

Това измъдрих аз :


        Console.WriteLine("Enter number and find out if it is Odd ");
        int number = int.Parse(Console.ReadLine());
        if (number % 2 == 0)
        {
            Console.WriteLine(false);
        }
        else
        {
            Console.WriteLine(true);

0
n0way0ut avatar n0way0ut 1 Точки

Ние наскоро разглеждахме булеви променливи и мисля, че можеш да я напишеш доста по сбито тази програма. Ето моето решение:

 

static void Main()
{
Console.WriteLine("Write a number:");
int a = int.Parse(Console.ReadLine());
bool b = (a % 2 == 1 || a % 2 == -1);
Console.WriteLine("Your number is odd:" + b);
Main();
}

 

Втория bool е в случай на отрицателно число, в противен случай вади грашка.

1
Filkolev avatar Filkolev 4482 Точки

Викането на Main() вътре в самия Main() не е добра идея. Това е рекурсия. Ако искаш да зациклиш програмата, за да я тестваш многократно, по-добре пусни вътре един безкраен цикъл с while(true).

Проверката за четност по-добре да е с 0, така отпада нуждата да мислиш за отрицателните числа. Ако резултатът е 0 - четно, ако не е - нечетно.

4
11/02/2015 11:41:54
mgulubov avatar mgulubov 73 Точки

Определено, най-лесният и "естетически издържан" метод, е този с Boolean променлива, на която директно задаваш условния израз като стойност, или иначе казано:

int n;

Boolean check = n % 2 == 0; // True if n is even

Console.WriteLine(check);

Според примерите в условието обаче, ресултата трябва да е True, ако числото е НЕчетно, така че израза трябва да е:

Boolean check = n % 2 != 0; //True if n is odd

 

По същата логика, можеш да направиш и задача 3 - пак една Boolean променлива, на която присвояваш резултата от условния израз:

Boolean check = (n % 5 == 0) && (n % 7 == 0); //Mind the Brackets that separate the two expressions

 

Ако пък искаш да го направиш по-изчекнато, можеш да направиш и друго :):

int check = n % 2;

if (check) { //In programming 0 == False and everything different than 0 will be True

    Console.WriteLine("True");

} else {

    Console.WriteLine("False");

}

Не съм тествал дали това работи в C#, но в С примерно, ще стане :).

1
Filkolev avatar Filkolev 4482 Точки

В C# не е прави такова смесване на булеви стойности с числа. А и е малко безсмислено в случая да се прави - правиш булева променлива и я принтираш директно, няма нужда от условната конструкция.

Ето какво казва документацията: ЦЪК.

"You can assign a Boolean value to a bool variable. You can also assign an expression that evaluates to bool to a bool variable.

In C++, a value of type bool can be converted to a value of type int; in other words, false is equivalent to zero and true is equivalent to nonzero values. In C#, there is no conversion between the bool type and other types."

1
11/02/2015 11:37:23
mgulubov avatar mgulubov 73 Точки

Дааа и в Java не е имплементирано, явно с цел да се предпазят програмистите, от програмистите :D.

Принципно, може да се намери логика, в подобно конвертиране, особено ако става въпрос за return на функция. Друг е въпроса, дали спестяването на няколко символа си заслужава затормозяването при четене на кода :), пример:

1. if (foo()) {...};

2. if (foo() != 0) {...};

0
TonislavAtanasov avatar TonislavAtanasov 86 Точки

За другата задача вместо да проверяваш дали се дели на 5 и 7, можеш директно да провериш:

 bool check = (n % 35 == 0);

 

Второто: bool check = n % 2;

не работи в C#. Не можеш да конвертираш int в bool.

0
12/02/2015 02:48:57
mehlema avatar mehlema 2 Точки

Ето едно решение, което го сънувах :)

using System;

    class Program
    {
        static void Main()
        {
            Console.WriteLine("Write a number and check if it is an odd number: ");

            int n = int.Parse(Console.ReadLine());

            Console.WriteLine(n%2==0 ? "false" : "true");
        }
    }

0
07/12/2015 21:46:04
snake85 avatar snake85 0 Точки

 

Решението на задачата 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            double a = int.Parse(Console.ReadLine());
            if (a % 2 == 0)
            {
                Console.WriteLine("Even");
            }
            else
            {
                Console.WriteLine("Odd");
            }
        }
    }
}
 

0
Radoslavseizov avatar Radoslavseizov 1 Точки

толкова варианти и комбинации плесках и получих какви ли не оценки, но не и 100 с твоя почмощ стигнах до заветните 100.

Благодаря!

0
ivanmitev90 avatar ivanmitev90 1 Точки

Аз така я реших : 

static void Main(string[] args)
        {
            int number = int.Parse(Console.ReadLine());
            if (number % 2 == 0)
            {
                Console.WriteLine("even");
            }
            else
            {
                Console.WriteLine("odd");
            }

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.