Loading...

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

Valentin.Shumankov avatar Valentin.Shumankov 7 Точки

03._Sum_Prime_Non_Prime

 

 

Джъджа ми дава грешка на седми тест , знам че я има решена но ако някой може да каже къде греша да си разбера проблема , благодаря предварителнпо 

 

 

using System;
using System.Diagnostics;
using System.Security.Cryptography;

namespace _03._Sum_Prime_Non_Prime
{
    class Program
    {
        public static bool IsPrime(int number)
        {   // Object finding if number Prime or Not!!
            if (number <= 1) return false;
            if (number == 2) return true;
            if (number % 2 == 0) return false;

           int boundary = (int)Math.Floor(Math.Sqrt(number));

            for (int i = 3; i <= boundary; i += 2)
                if (number % i == 0 && i != number)
                    return false;

            return true;
        }
        
        static void Main(string[] args)
        {

            
            string input = Console.ReadLine();
            // Variables and booleans for acumolation of the prime and non prime numbers
            int primeNum = 0;
            int nonPrimeNum = 0;
            bool negativeNum = false;
            // a loop to colect unspecified number of digits
            while (input != "stop")
            {
               
                int numbers = int.Parse(input);
                if (numbers < 0) { negativeNum = true; }
               
                // Prime non  Prime separation check
                if (IsPrime(numbers))
                {
                    if (numbers >= 0)
                    {
                        primeNum += numbers;
                    }
                }
                else
                {
                    if (numbers >= 0)
                    {
                        nonPrimeNum += numbers;
                    }

                }

                input = Console.ReadLine();
            }
            // output printout
            if (negativeNum) { Console.WriteLine("Number is negative."); }
            Console.WriteLine($"Sum of all prime numbers is: {primeNum}");
            Console.WriteLine($"Sum of all non prime numbers is: {nonPrimeNum}");

        }
    }
}
 

 

 

 

 


 

Тагове:
0
Programming Basics with C# 22/07/2020 18:53:54
RoumenRoussev avatar RoumenRoussev 121 Точки
Best Answer

Защо си опитвал да правиш метод за проверка? Не това е целта ти да учиш в момента. Освен това на кодът ти му е нужен рефакторинг, защото трябва да е спазил конвенциите за лесна четимост. Грешката ти е, че съобщението "Number is negative." за негагивните числа трябвя да се изписва на всяка итерация, а не накрая. Помисли за пренаписване.

Във форума е пието да се дават и условие на задачата и линк към Judge.

Поправен кода след лек рефакторинг:

using System;

namespace Temp
{
    class Program
    {
        public static bool IsPrime(int number)
        {   
            // Object finding if number Prime or Not!!
            if (number <= 1)
            {
                return false;
            }

            if (number == 2)
            {
                return true;
            }

            if (number % 2 == 0)
            {
                return false;
            }

            int boundary = (int)Math.Floor(Math.Sqrt(number));

            for (int i = 3; i <= boundary; i += 2)
            {
                if (number % i == 0 && i != number)
                {
                    return false;
                }
            }

            return true;
        }

        static void Main(string[] args)
        {
            string input = Console.ReadLine();
            // Variables and booleans for acumolation of the prime and non prime numbers
            int primeNum = 0;
            int nonPrimeNum = 0;
            // a loop to colect unspecified number of digits
            while (input != "stop")
            {
                int numbers = int.Parse(input);
                // Prime non  Prime separation check
                if (IsPrime(numbers))
                {
                    if (numbers >= 0)
                    {
                        primeNum += numbers;
                    }
                }
                else
                {
                    if (numbers >= 0)
                    {
                        nonPrimeNum += numbers;
                    }

                }

                input = Console.ReadLine();

                if (numbers < 0)
                {
                    Console.WriteLine("Number is negative.");
                    continue;
                }
            }

            Console.WriteLine($"Sum of all prime numbers is: {primeNum}");
            Console.WriteLine($"Sum of all non prime numbers is: {nonPrimeNum}");
        }
    }
}
 

0
22/07/2020 20:41:57
Valentin.Shumankov avatar Valentin.Shumankov 7 Точки

Благодаря ти много за насоките. Аз всъщност съм още на трета лекция от Юнския модул  C# Basic , но решавам задачи напред до колкото мога за да натрупам повече опит .Още опипвам и греша на ляво и на дясно но това смятам е нужно за да напредна .

0
23/07/2020 10:06:42
AlexKadiyski avatar AlexKadiyski 16 Точки

using System;

namespace _03._Sum_Prime_Non_Prime
{
    class Program
    {
        static void Main(string[] args)
        {
            string command = Console.ReadLine(); 
           
            int sumPrime = 0;
            int sumNoPrime = 0;
            while (command != "stop")
            {
                int number = int.Parse(command);
                if (number < 0)
                {
                    Console.WriteLine("Number is negative.");
                }
                else
                {
                    int count = 0; 
                    for (int i = 1; i <= number; i++)
                    {
                        if (number % i == 0)
                        {
                            count++;
                        }

                    }                   
                    if (count == 2)
                    {
                        sumPrime += number;
                    }
                    else if (count > 2)
                    {
                        sumNoPrime += number;

                    }
                }

                command = Console.ReadLine();
            }

            Console.WriteLine($"Sum of all prime numbers is: {sumPrime}");
            Console.WriteLine($"Sum of all non prime numbers is: {sumNoPrime}");
        }
    }
}
 

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