Здравейте,
Опражнявам се на изпитите за C#. Незнам защо ми дава тотално грешен отговор на това:
Резултата винаги излиза. До колкото разбрах няма нужда да се проверява дължината на стринга, защото 300 си е по условие.
Това, че е направено различно от общоприетото прави ли го грешно или аз не разбирам условията правилно?
Може би се изисква ако N е отрицателно да го смята като отрицателно? Например при -7 зададено да вади -7 вместо 7? Или при -73 да вади 4 на output.
- 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
Успех
Хаха , сърдечно благодаря. Сега разбрах какво трябва да прави. Може би трябваше първо да хапна.
Знаете ли защо получавам " 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);
}
}
}