Crooked Digits Mock Exam 1

Здравейте,
Опражнявам се на изпитите за C#. Незнам защо ми дава тотално грешен отговор на това:

Резултата винаги излиза. До колкото разбрах няма нужда да се проверява дължината на стринга, защото 300 си е по условие.

Това, че е направено различно от общоприетото прави ли го грешно или аз не разбирам условията правилно?

Може би се изисква ако N е отрицателно да го смята като отрицателно? Например при -7 зададено да вади -7 вместо 7? Или при -73 да вади 4 на output.

  1. If the obtained result is bigger than 9 , step 1 . is repeated, otherwise the algorithm finishes.
    Какво означава това? Че трябва да не изкара нищо при 73 или да изкара 1 или 0 или 3? Какво? От примерът с -7231, където изкарва 4 разбирам 7+2 + 3=12 -> продължи след 3 (3+1) - така и съм го направил без излишни цикли.

Наистина намирам задачата за неясна. Благодаря предварително!
Поздрави,
Наско

Здравей,
в случая с -7231 -> събираш само цифрите (без значение от знака +/- или пък точка/запетайка, ако имаш дробно число)
на първия цикъл резултатаът е:
7+2+3+1 = 13, което е > 9 => влизаш във втори цикъл
от втория цикъл резултатът е:
1+3 = 4 ,което е <= 9 , следователно приключваш и печаташ 4.

Същото се отнася и за дробните , например 99,88 или -99.88 =>
(1) 9+9+8+8 = 34
(2) 3+4 = 7

Успех :slight_smile:

Хаха :rofl: :joy: :rofl:, сърдечно благодаря. Сега разбрах какво трябва да прави. Може би трябваше първо да хапна.

Знаете ли защо получавам " Status: Compile Error" “Unexpected symbol `static”, когато използвам static bool Isprime(int n)… a във visual studio си нямам проблеми? Дори и без static не го приема. Трябва кода да се пише без методи ръкоделки ли?

Ето го кода:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

        class Program
        {
           static void Main()
            {
                bool IsPrime(int number)
                {
        if (number < 1) { return false; }
        if (number == 2) { return true; }
        if (number % 2 == 0) { return false; }

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

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

    int number = Convert.ToInt32(Console.ReadLine());
    List<int> allprime = new List<int>();

    for (int i = 1; i <= number; i++)
    {
        if (IsPrime(i))
        {
            allprime.Add(i);
        }
    }


    int pnumcount = allprime.Count();
    int higherprime = allprime[pnumcount - 1];
    

    for (int j = 1; j <= higherprime; j++)
    {
        string row = "";
        string boom = "";
        for (int k = 1; k <= j; k++)
        {
            if (IsPrime(k))
            {
                boom = "1";
            }
            else
            {
                boom = "0";
            }
            row += boom;

        }
        Console.WriteLine(row);
    }
}

}