[Homework] Programming Basics - Math for developers - Problem {3}
Здравейте :) Някой може ли да ми даде калкулатор , който показва всички знаци след запетаята , когато смятаме факториели. "Find 100! Give all digits" ... :D
Здравейте :) Някой може ли да ми даде калкулатор , който показва всички знаци след запетаята , когато смятаме факториели. "Find 100! Give all digits" ... :D
Привет!
Явно сме заедно в курса "Основи по програмирането" и имаме еднакви домашни.:)
Преди да попиташ тук опита ли да потърсиш в Google например?
P.S. Подсети ме ако случайно проверявам твоето домашно да си пиша шестица.
Здравей Николай,
на този сайт http://www.mathsisfun.com/calculator-precision.html
ще намериш добри обяснения за алгоритъма на много от изчисленията, които се изискват в това, и в много от следващите домашни по C#, а и калкулатори за много от изчисленията които е немислимо да се правят на ръка.
Благодаря много :)
Да, същият калулатор използвах и аз :). Върши чудесна работа!
Открих, че има правила за писане във форума. Цитирам двете най-важни от тях:
2. Преди да зададете въпрос, проверете дали вече не е зададен такъв или подобен.
9. Когато пускате теми във форума, заглавията на темите трябва да спазват следните концепции:
[Homework] Име на дисциплината - Име на лекцията - Задача {Номер} - Име задача
Пример: [Homework] C# Basics - Introduction to programming - Problem{8} - Square root
Здравей , колега
Намерих калкулатор специално за факториалите : http://www.calculatorsoup.com/calculators/discretemathematics/factorials.php
Ще те посъветвам , търси в Google с английските термини и изкачат по - лесно нещата, които търсиш.
Може да използваш Гугъл :)
Има подробно разписан код на Java /ако си запознат с Java/ за това, как се намира !n.
Освен това има и код, който е специално за намирането на факториели на големи числа: BigInteger.
BigInteger ти позволява да изпринтиш в козолата всички цифри от резултата.
Методът е обяснен доста добре, тъй че е доста ползотворно.
Аз използвах този начин, за да реша задачата си.
Успех!
По принцип, ако на някой му се занимава, може да направи решение с масив, вместо с BigInteger. Малко по-различна идва логиката в изчислението, но пък производителноста на алгоритъма, по всяка вероятност, ще е по-добра. BigInteger не е известен с бързината си :).
Edit: това беше моето решение, на тази задача. Нямах кода при мен, за това чак сега го поствам :).
Спокойно се вади !20000, със само няколко секунди чакане :) : c0d3
Thanks за идеята!
Не се бях сетила за масив. :)
Пробвай да си напишеш програмка която да ти смята 100!. Виж на страница 223 в книгата "Въведение в програмирането със C#"
@mgulubov,
Здравей Мирославе,
Първо да ти кажа - ти си лош човек :)
(шегувам се разбира се :) )
Идеята ти да се напише програма, използваща array за изчисляване на факториел, е твърде интерсена и си играх с нея вместо да уча за изпит (в понеделник имам изпит по ООП...... )
Да, прав си разбира се, получи се много кратко и работещо решение - изплозвах C++ кода от твоя линк, и го посъкратих и преведох в C#:
Сега си мисля да взема пример от теб, и да предизвикам който му се занимава да напише програма която автоматично избира в какъв тип данни да запази дадено число (в зависимост от големината на числото).
Т.е. автоматично да сортира числата от първа и втора задача на домашното Data Types and Variables C# Basics.
Аз лично вече си направих един работещ вариант на такава програма. Сетих се за втори, на принципа:
List<int> intNumbers = new List<int> { -115, 97 };
foreach (int intNumber in intNumbers)
{
try
{
byte byteNumber = Convert.ToByte(intNumber);
Console.WriteLine("\n{0} {1}", byteNumber.GetType().Name, byteNumber);
}
catch (Exception)
{
sbyte sbyteNumber = Convert.ToSByte(intNumber);
Console.WriteLine("\n{0} {1}", sbyteNumber.GetType().Name, sbyteNumber);
}
}
това също работи, просто съм ги правила на доста начален етап, и сега като ги гледам си мисля че решението може да стане и далеч по-кратко.
Добре де, благодаря за идеята за решение с масив при факториелите, беше страшно интересно :)
import java.math.BigInteger;
/**
*
* @author В.Михайлов
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// Изчисляваме и изписваме 100!, 171! и 250!
BigInteger fact100 = BigInteger.ONE;
BigInteger fact171 = BigInteger.ONE;
BigInteger fact250 = BigInteger.ONE;
String factTxt;
//Изчисляваме 100!
for (int i = 1; i <= 100; i++) {
fact100 = fact100.multiply(BigInteger.valueOf(i));
}
System.out.println("100! =");
System.out.println(fact100);
factTxt = fact100.toString(); //
System.out.print("Брой Цифри :" ); // Извеждаме броя на цифрите на 100!
System.out.println(factTxt.length()); //
System.out.println();
for (int i = 1; i <= 171; i++) {
fact171 = fact171.multiply(BigInteger.valueOf(i));
}
System.out.println("171! =");
System.out.println(fact171);
factTxt = fact171.toString(); //
System.out.print("Брой Цифри :" ); // Извеждаме броя на цифрите на 171!
System.out.println(factTxt.length()); //
System.out.println();
for (int i = 1; i <= 250; i++) {
fact250 = fact250.multiply(BigInteger.valueOf(i));
}
System.out.println("250! =");
System.out.println(fact250);
factTxt = fact250.toString(); //
System.out.print("Брой Цифри :" ); // Извеждаме броя на цифрите на 250!
System.out.println(factTxt.length()); //
System.out.println();
}
}
С малко помощ от Google :)
Да, интелигентно решение :)
Аз не съм учила Java, но определено се разбира какво правиш.
Аз също имам решение с BigInteger, но използвам C#.
Thank you Lady! :)
Здравейте, отново! Благодаря на Джони и Катя и за бързите отговори сега, и за това, че винаги са отзивчиви, внимателни и готови да помогнат с подробни отговори и обяснения! При мен сега всичко е ОК! :)
Проверих в google ама като не стана от първите опити и реших да попитам тук . Както и да е - сега ще се разровя по - задълбочено :D
Опитай да кликнеш върху подчертаният син текст в предишния ми отговор. Топ резултата на Google ще ти даде търсеното решение.
хаха Благодаря много , изобщо не бях забелязал , че е със син текст :D :D