Здравейте,колеги
Ще може ли малко разяснение на 10та задача,защото произведението на четните и нечетните никъде не е равен.Явно нещо не разбирам условието....Може и на лично да не пълним форума.
Благодаря предварително
Как така само на третия пример е равен? Само на третият НЕ Е. Ако говорим за една и съща задача, третият пример е с числата 4 3 2 5 2.
Съответно
4*2*2 = 16;
3*5 = 15;
Трябва да изведеш 16 и 15 като суми и да кажеш, че не са равни.
Е, трябваше да отговориш вместо да едитваш коментара. Добре, че си следя последните постове.
В кой пример освен третия не е равен. Защото сега си написал, че никъде не е равен. А аз до колкото ги смятам в пример 1 и 2 са равни?
Имай предвид, че в задачата се говори за четен ЕЛЕМЕНТ от редицата, а не за четно ЧИСЛО.
Мислех си за числата ,а не за редица.Иначе съжалявам ,че само си го промених просто нямах възможност тогава за отговор.Благодаря ти много за отговора,стана ми ясно вече условието
Имам проблем със 7-ма задача - Calculate N! / (K! * (N-K)!). Кода ми работи за всички примери освен за последния. Интересното е, че когато дебъгвах ми направи впечатление, че всичко се смята ОК, но когато трябва да сметна фактуриал от 47 (което 47 се явява n - k) не го смята правилно. Задачата съм я разбил по следния начин:
Вкарваме 2 int-а n и k. И понеже формулата излглежда по следния начин: n! / (k! * (n-k)!), тоест фактуриал от n делено на (фактуриал от k умножен по разликата от n - k, като след като получим разликата смятаме фактуриал от нея). Тоест за да сметнем нещата получаваме 3 фактуриала. Фактуриал от n, фактуриал от k и фактуриал от разликата между n и k. Затова в задача си съм направил 3-ти integer, който е равен на разликата от числата n и k. И съм го именувал nSubK.
И формулата става: n! / (k! * nSubK!).
За пример:
n = 3 => n! = 6
k = 2 => k! = 2
nSubK = 1 => nSumK! = 1
Решение: 6 / (2 * 1) => 6 / 2 = 3
Умишлено съм разбирал задачата така, понеже до преди да се сблъскам с тази лекция не знаех какво е фактуриал, колкото и смешно да звучи на някои.
Логиката мисля е правилна, но с големи числа нещо програмата ми не смята правилно. Някакви идеи?
Благодаря! :)
Най-вероятно препълваш ulong-а. Пробвай с BigInteger ;)
http://msdn.microsoft.com/en-us/library/system.numerics.biginteger%28v=vs.110%29.aspx
За пример, когато за n вкарам 52, а за k вкарам 47, или обратно n ми е 47, а k ми е 52, винаги фактуриала от 47 го смята, че е по-голям от фактуриала от 52, което само по себе си е невъзможно. Ползвам един и същи начин за смятане на фактуриала, както на n така и на k така и на nSubK. Как може фактуриала от 52 да НЕ препълва ulong, а фактуриал от 47 да го препълва?
EDIT: Проверих MSDN-то, но фактуриала от 52 и 47 са в допустимите граници на ulong. Само дето 47! е по-голям от 52! ?! WTF?!
Ами и двата го препълват :)
ulong = 18446744073709551615
47! = 258623241511168180642964355153611979969197632389120000000000
52! = 80658175170943878571660636856403766975289505440883277824000000000000
Моля за малко помощ за 20 задача Exam Schedule http://pastebin.com/MQqWSXYX.
При мене , поне на примерите работи както трябва , но judge дава на някои тестове грешка по време на изпълнение.
Някои може ли да ми каже къде може да гърми , или поне да ми каже откъде да изтегля тестовете от 12 April 2014 Evening защото немога да ги намеря.
Благодаря предварително !
Най-вероятно някъде в парсването дава грешка. Можеш да видиш тестовете от курса март месец - https://softuni.bg/trainings/coursesinstances/details/2 или по-точно Практически изпит - май 2014 - вариант 6
Едит: погледнах го - гърми на 16 ред, когато се парсва 11:1:АМ , но минава когато е 11:01:АМ (поне при мен, на моите regional settings на компютъра).
Идея за решение - превърни входните данни в 24 часова система и ги направи на нов DateTime, добави след това часовете и минутите и превърни обратно в 12 часова и принтирай.
Мерси за насоката :)
ето как го оправих :
string time = hour + ":" + string.Format(minutes.PadLeft(2,'0')) + ":" + partOfDay;
с форматиране на минутите към стринг и падване на нула от ляво .
Сега ми дава 100 / 100
Ето моето решение за задача 20:
Здравейте, имам малък проблем с 10-та задача Random Numbers in Given Range.Това е кода http://pastebin.com/14WU3hmk . Когато пусна програмата при вход 5(n) 1(мин) 10(макс) изкарва 3 3 3 3 3 ,но когато дебъгвам си изкарва рандом числа всичко нормално.Защо ми дава различни резултати?
Трябва да дефинираш Random променливата извън цикъла и всичко ще се оправи.
Самият Random работи на база тикове, т.е. според текущата дата (най-най-грубо казано). Когато го пуснеш в цикъла, той се върти много бързо и затова може да забележиш, че не се държи както искаш. Ако пуснеш доста по-дълъг цикъл ще видиш закономерности. Та, Random не е изцяло Random, трябва да го имаш предвид.
Просто сложи този ред: Random rndNum = new Random();
преди цикъла.
Извади „Random rndNum = new Random();“ от loop-а, поради някаква причина от това принтира еднакви числа. Също така имай в предвид, че .Next взема от [1, 8), а не от [1, 8] - т.е. 8 няма никога да се генерира. Може да го решиш като (min, max + 1).
Готово е :) А имате ли идея защо ми даваше различен отговор при дебъгване ?
Здравейте,
На 14 задача 'Decimal to Binary Number', искам на изхода да изпринтя бинарния код с по четири символа, като за всяка следваща 4-ка да си добави или допълни автоматично останалите цифри(0).. примерно ако е '1d' да се принтира 0001... но ако е 16 да си добавя авто. другите нули... 0001 0000. Не можах да намеря подходящ метод, за сега съм с
Console.WriteLine("{0}", binN.PadLeft(16, '0')); ..... но ми се иска да се изпише разделено
0001 0000 0000 0000, за да е по добре четимо... някой ако знае как да се справя, да помогне моля.
Направи си масив и наливай цифрите в него. Така ще можеш да слагаш интервали и да допълваш празните index-и с нули или с каквото ти душа сака :). Но, аз лично не виждам смисъл да си играеш да го правиш :).
По скоро се надявах някой да ми каже, че има формат или готова функция на .Net която да използвам, защото търсих и не намерих, а ме съмнява да няма нещо семпло. И не само за самата задача, а по скоро за да използвам това при бинарните задачи. Сам виждаш че когато е разделен така бинарния код се чете по лесно и няма да се налага да се пулиш за да видиш дали някъде има грешка.
Обмислях вариант при който след въвеждане на числото да става деление на 16 и в същото време да се преброява колко пъти се е разделило числото, за да се образуват по такъв начин клетките, а как ще се запълват ще го мисля после.. варианта с масива е добър. Но както ти казах, надявах се да има нещо готово от .Net и затова реших да го оставя за накрая. Имам предвид че искам да довърша нещо и ако няма нещо такова до тогава.. ще го мисля или ще го остава така.. ако искаш хвърли един поглед тук.. не е завършен още.
Благодаря ти все пак за отзива!
Не мисля, че ще намериш някаква built-int функция, която да форматира string-ове по подобен начин. Но пък, ето ти едно алгоритъмче, което мисля, че ще свърши работа: http://pastebin.com/RGm42Vgn
Btw, можеш да си поиграеш да отделиш различните функционалности на програмата, в отделни методи. Ще стане много по пригледно :). Ето пример: http://pastebin.com/iMbg1GZy
static void Main()
{
Console.Write("Enter number:");
int n = int.Parse(Console.ReadLine());
int number = 1;
while (number <= n)
{
if (number%3 != 0 && number %7 != 0)
{
Console.Write("{0} ",number);
}
number++;
}
}
Tова е кода ми за 2 задача,но нещо не работи както трябва.
Малко помощ?
Здравей Павлина,
защо мислиш, че не работи?
тествах задачата с примерите от условието, с 28, дава верни отговори.
Търсим числата в интервал 1 до n, които или не се делят на 7, или не се делят на 3 - и решението ти точно това дава като резултат.
защото аз като му подам числото 10 ми изписва всички числа до 10 включително 3 и 7.
Павлина, не разбирам какво намираш неработещо:
using System;
class NotDivisibleBy3And7
{
static void Main()
{
Console.Write("Enter number:");
int n = int.Parse(Console.ReadLine());
int number = 1;
while (number <= n)
{
if (number % 3 != 0 && number % 7 != 0)
{
Console.Write("{0} ", number);
}
number++;
}
}
}
Output:
Enter number:10
1 2 4 5 8 10 Press any key to continue . . .
Здравейте имам един въпрос отностно референциите. Как мога да добавя рефернция към кода си без да изполвам Visual Studio в Notepad. Трябва ме System.Numerics за да използвам типа BigInteger, но като напиша using System.Numerics; ми дава грешка при компилирането с csc. Знам, че във Visual Studio просто на референциите се казва add new refernce и се добавя, но как да го направя това в Notepad?
Мисля че това ще ти помогне: http://www.vbforums.com/showthread.php?679701-How-to-add-reference-of-a-dll-using-Notepad
Аз нямам такова нещо като xtml. Имам само 1 текстов файл с разширение .cs Днес няма много работа и съм седнал на един служебен компютър на работа да си правя домашната за да спестя малко от свободното време :). У нас си имам Visual Studio но тук не мога да слгам такива неща и да инсталирам нищо. Пиша си кода в Notepad и го компилирам с csc.exe в конзолата cmd. Адски бавно и неудобно е, но все пак е откраднато време :). Досега нещата ставаха, но тук се издъни.
Другото, което ме притеснява е, че версията на .NET Framework на тази щайга е v2.0.50727, а в книгата на Светлин видях, че типа BigInteger е нов и го няма във версиите преди 4.0.
Това го нямам дето ми го показва твоя линк само .cs файла имам.
Като се опитам да го компилирам ми дава това:
TrailingZeroesinN.cs(2,14): error CS0234: The type or namespace name 'Numerics'
does not exist in the namespace 'System' (are you missing an assembly
reference?)
Не е проблем да си го компилирам у нас на Visual Studio-то просто исках да знам дали може да стане и без тъй като днес се сблъсках с тази ситуация. Това е?
Може да пробваш https://dotnetfiddle.net/ да пишеш там. Малко по-удобно е от NotePad, дали може да се подкара BigInteger там не знам, имах някакъв несполучлив опит да го направя преди малко :)
По начина, по който си решил трета задача, е излишно да ползваш array[]. С използването на array програмата става по-бавна и изисква повече ресурс. Просто при всяко четене на число го добавяй към sum и го сравнявай с min и max. При определяне на броя цифри след десетичната запетая аз лично вместо :0.00 предпочитам да използвам :f2.
Ето го малко променено решението ти без масив: ТУК
Ако държиш на решение с масив, то решението доста може да се опрости с използването на LINQ заявки. Като сортираш масива след това е ясно, че първия елемент винаги е най-малкия, а последния най-голям. Има си и заявка, която ти връща сумата от елементите на масива. Може да видиш решението по този начин ТУК
Благодаря за съвета :)
Наистина е излишно за тоя пример да ползвам масив. При определяне на броя цифри след десетичната запетая нарочно написах :0.00 понеже имаше една задача (в момента не си спомням коя беше), където при използване на :f2 не даваше правилен резултат и асистента който водеше подготовката го промени на :0.00 и проблема беше решен.