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
koknq avatar koknq 24 Точки

using System;

namespace Operations_Between_Numbers
{
    class Program
    {
        static void Main(string[] args)
        {
            int N1 = int.Parse(Console.ReadLine());
            int N2 = int.Parse(Console.ReadLine());
            string symbol = Console.ReadLine();
            double sum = 0.0;
            string EO = "";

            if (symbol == "+")
            { sum = N1 + N2;
                if (sum % 2 == 0) { EO = "even"; Console.WriteLine($"{N1} {symbol} {N2} = {sum} - {EO}"); }
                else { EO = "odd"; Console.WriteLine($"{N1} {symbol} {N2} = {sum} - {EO}"); }
            }   
            else if(symbol == "-")
            { sum = N1 - N2;
                if (sum % 2 == 0) { EO = "even"; Console.WriteLine($"{N1} {symbol} {N2} = {sum} - {EO}"); }
                else { EO = "odd"; Console.WriteLine($"{N1} {symbol} {N2} = {sum} - {EO}"); }
            }
            else if (symbol == "*")
            { sum = N1 * N2;
                if (sum % 2 == 0) { EO = "even"; Console.WriteLine($"{N1} {symbol} {N2} = {sum} - {EO}"); }
                else  { EO = "odd"; Console.WriteLine($"{N1} {symbol} {N2} = {sum} - {EO}"); }
            }
            else if (symbol == "%")
            {
                sum = (N1*1.0) % N2;
                if (N2 != 0) { Console.WriteLine($"{N1} {symbol} {N2} = {sum}"); }
                else { Console.WriteLine($"Cannot divide {N1} by zero"); }
            }
            else if (symbol == "/")
            { sum = (N1*1.0) / N2;
                if (N2 != 0) { Console.WriteLine($"{N1} {symbol} {N2} = {sum:F2}"); }
                else { Console.WriteLine($"Cannot divide {N1} by zero"); }
            }
            


        }
    }
}

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