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

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 115 Точки
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 0 Точки

Благодаря ти много за насоките. Аз всъщност съм още на трета лекция от Юнския модул  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