Професионална програма
Loading...
+ Нов въпрос
Miglena1234 avatar Miglena1234 1 Точки

09.Operations between numbers- Programming Basics with C#

Здравейте,

задачата е девета от следния линк: https://softuni.bg/trainings/resources/officedocument/35586/exercise-problem-descriptions-programming-basics-bulgaria-october-2018/2158

Решение:

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

namespace operationsNums
{
    class Program
    {
        static void Main(string[] args)
        {
            double n1 = double.Parse(Console.ReadLine());
            double n2 = double.Parse(Console.ReadLine());
            string operation= Console.ReadLine();
            double result = 0;
            if (operation == "+" )
            {
                result = n1 + n2;
                if (result % 2 == 0)
                {
                    Console.WriteLine($"{n1} + {n2} = {result} - even");
                }
                else if (result % 2 == 1)
                {
                    Console.WriteLine($"{n1} + {n2} = {result} - odd");
                }
            }
           else if (operation == "-")
            {
                result = n1 - n2;
                if (result % 2 == 0)
                {
                    Console.WriteLine($"{n1} - {n2} = {result} - even");
                }
                else if (result % 2 == 1)
                {
                    Console.WriteLine($"{n1} - {n2} = {result} - odd");
                }
            }
           else if (operation == "*")
            {
                result = n1 * n2;
                if (result % 2 == 0)
                {
                    Console.WriteLine($"{n1} * {n2} = {result} - even");
                }
                else if (result % 2 == 1)
                {
                    Console.WriteLine($"{n1} * {n2} = {result} - odd");
                }
            }

            else if (operation == "%")
            {
                if (n2 != 0)
                {
                    result = n1 % n2;

                    Console.WriteLine($"{n1} % {n2} = {result}");
                }
                else { Console.WriteLine($"Cannot divide {n1} by zero"); }


            }
            else if (operation == "/")
            {
                if (n2 != 0) { Console.WriteLine($"{n1} / {n2} = {(n1 / n2):F2}"); }
                else { Console.WriteLine($"Cannot divide {n1} by zero"); }
            }

        }
    }
}

Judge ми дава 90/100 и грешка на 5 тест. Може ли малко помощ, тъй като не мога да си намеря грешката?

Благодаря предварително!

Тагове:
0
Programming Basics with C#
pavsavov avatar pavsavov 18 Точки

Имам предположение,чe в следния if:

 

 else if (operation == "-")
            {
                result = n1 - n2;
                if (result % 2 == 0)
                {
                    Console.WriteLine($"{n1} - {n2} = {result} - even");
                }
                else if (result % 2 == 1)
                {
                    Console.WriteLine($"{n1} - {n2} = {result} - odd");
                }
            }

 

е възможно n2 да е по-голямо от n` (n1<n2).Ако е така,то вероятно имаш отрицателно число за резултат.

Ако това ти е проблема имаш следните три решения:

1. добавяш още един If и сравняваш кое е по-голямо от двете числа и съответно от него вадиш по-малкото.

2. Използваш вградения метод от c# - Math.Abs() -> https://docs.microsoft.com/en-us/dotnet/api/system.math.abs?view=netframework-4.7.2    , като в скобите слагаш result и ти изкарва абсолютната стойност,т.е. положителна.

3. Използваш вградения мето от c# - Math.Max  ->  https://docs.microsoft.com/en-us/dotnet/api/system.math.max?view=netframework-4.7.2     , като в скобите слагаш n1 и n2 ,а като резултат ти връща по-голямото.

 

Надявам се , да помагат тези съвети. Пиши ако е друг проблема.

0
Miglena1234 avatar Miglena1234 1 Точки

Пробвах и трите предложения, но пак не се получи- отново грешка на тест 5.

0
pavsavov avatar pavsavov 18 Точки

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

namespace operationsNums
{
    class Program
    {
        static void Main(string[] args)
        {
            int n1 = int.Parse(Console.ReadLine());
            int n2 = int.Parse(Console.ReadLine());
            string operation= Console.ReadLine();

            double result = 0;

            if (operation == "+" )
            {
                result = n1 + n2;
                if (result % 2 == 0)
                {
                    Console.WriteLine($"{n1} + {n2} = {result} - even");
                }
                else
                {
                    Console.WriteLine($"{n1} + {n2} = {result} - odd");
                }
            }
           else if (operation == "-")
            {
                result = n1 - n2;

                if (result % 2 == 0)
                {
                    Console.WriteLine($"{n1} - {n2} = {result} - even");
                }
                else
                {
                    Console.WriteLine($"{n1} - {n2} = {result} - odd");
                }
            }
           else if (operation == "*")
            {
                result = n1 * n2;

                if (result % 2 == 0)
                {
                    Console.WriteLine($"{n1} * {n2} = {result} - even");
                }
                else 
                {
                    Console.WriteLine($"{n1} * {n2} = {result} - odd");
                }
            }

            else if (operation == "%")
            {
                if (n2 != 0)
                {

                    Console.WriteLine($"{n1} % {n2} = {n1 % n2}");
                }
                else { Console.WriteLine($"Cannot divide {n1} by zero"); }


            }
            else if (operation == "/")
            {
                if (n2 != 0) { Console.WriteLine($"{n1} / {n2} = {n1*1.0 / n2:F2}"); }
                else { Console.WriteLine($"Cannot divide {n1} by zero"); }
            }

        }
    }
}

 

Разликата,е че махнах условието :   if (result % 2 == 1) ,където го имаше.

Ако резултата ти е отрицателно число, примерно -1. При модулно деление резултата ще е -1 ,а не 1.

-1 е нечетно.

Видях,че в условието пише,че входа е от цели числа,а не double. Но мисля,че в случая няма проверка за тях и не оказват влияние.

Поздрави.

0
Miglena1234 avatar Miglena1234 1 Точки

Благодаря!

0