Loading...
JOHNY avatar JOHNY 196 Точки

Привет!


Явно сме заедно в курса "Основи по програмирането" и имаме еднакви домашни.:)
Преди да попиташ тук опита ли да потърсиш в Google например?cool

 

P.S. Подсети ме ако случайно проверявам твоето домашно да си пиша шестица. tongue-out

1
Niki_Mihov avatar Niki_Mihov 19 Точки

Проверих в google ама като не стана от първите опити и реших да попитам тук . Както и да е - сега ще се разровя по - задълбочено :D 

1
JOHNY avatar JOHNY 196 Точки

Опитай да кликнеш върху подчертаният син текст в предишния ми отговор. Топ резултата на Google ще ти даде търсеното решение.

2
Niki_Mihov avatar Niki_Mihov 19 Точки

хаха Благодаря много , изобщо не бях забелязал , че е със син текст :D :D 

1
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Николай,

на този сайт http://www.mathsisfun.com/calculator-precision.html

ще намериш добри обяснения за алгоритъма на много от изчисленията, които се изискват в това, и в много от следващите домашни по C#, а и калкулатори за много от изчисленията които е немислимо да се правят на ръка.

4
Niki_Mihov avatar Niki_Mihov 19 Точки

Благодаря много :) 

2
vampirrre avatar vampirrre 1 Точки

Да, същият калулатор използвах и аз :). Върши чудесна работа!

1
petiahr avatar petiahr 31 Точки

Открих, че има правила за писане във форума. Цитирам двете най-важни от тях:

2. Преди да зададете въпрос, проверете дали вече не е зададен такъв или подобен.

9. Когато пускате теми във форума, заглавията на темите трябва да спазват следните концепции:
[Homework] Име на дисциплината - Име на лекцията - Задача {Номер} - Име задача
Пример: [Homework] C# Basics - Introduction to programming - Problem{8} - Square root

 

 

4
Sashka avatar Sashka 1 Точки

Благодаря!

И аз ще се възползвам

1
Dtabakow avatar Dtabakow 2 Точки

Be my guest :))

0
sonya.petrova1991 avatar sonya.petrova1991 5 Точки

Може да използваш Гугъл :) 

Има подробно разписан код на Java /ако си запознат с Java/ за това, как се намира !n.

Освен това има и код, който е специално за намирането на факториели на големи числа: BigInteger.

BigInteger ти позволява да изпринтиш в козолата всички цифри от резултата.

Методът е обяснен доста добре, тъй че е доста ползотворно.

Аз използвах този начин, за да реша задачата си. 

Успех!

1
mgulubov avatar mgulubov 73 Точки

По принцип, ако на някой му се занимава, може да направи решение с масив, вместо с BigInteger. Малко по-различна идва логиката в изчислението, но пък производителноста на алгоритъма, по всяка вероятност, ще е по-добра. BigInteger не е известен с бързината си :).

Пример

Edit: това беше моето решение, на тази задача. Нямах кода при мен, за това чак сега го поствам :).

Спокойно се вади !20000, със само няколко секунди чакане :) : c0d3

4
03/04/2015 22:24:27
sonya.petrova1991 avatar sonya.petrova1991 5 Точки

Thanks за идеята! 

Не се бях сетила за масив. :)

0
indieza avatar indieza 46 Точки

Пробвай да си напишеш програмка която да ти смята 100!. Виж на страница 223 в книгата "Въведение в програмирането със C#"

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

@mgulubov,

Здравей Мирославе,

Първо да ти кажа - ти си лош човек :)

(шегувам се разбира се :) )

Идеята ти да се напише програма, използваща array за изчисляване на факториел, е твърде интерсена и си играх с нея вместо да уча за изпит (в понеделник имам изпит по ООП...... )

Да, прав си разбира се, получи се много кратко и работещо решение - изплозвах C++ кода от твоя линк, и го посъкратих и преведох в C#:

http://pastebin.com/adj4xfP4

Сега си мисля да взема пример от теб, и да предизвикам който му се занимава да напише програма която автоматично избира в какъв тип данни да запази дадено число (в зависимост от големината на числото).

Т.е. автоматично да сортира числата от първа и втора задача на домашното 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);
            }
        }

това също работи, просто съм ги правила на доста начален етап, и сега като ги гледам си мисля че решението може да стане и далеч по-кратко.

Добре де, благодаря за идеята за решение с масив при факториелите, беше страшно интересно :)

-1
03/04/2015 20:34:41
angeldown avatar angeldown 7 Точки

 

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 :)

 

2
03/04/2015 21:26:37
angeldown avatar angeldown 7 Точки

Thank you Lady! :)

1
eltop avatar eltop 15 Точки

Здравейте, отново! Благодаря на Джони и Катя и за бързите отговори сега, и за това, че винаги са отзивчиви, внимателни и готови да помогнат с подробни отговори и обяснения! При мен сега всичко е ОК! :)yes

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.