Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

IlianStefanov2003 avatar IlianStefanov2003 -7 Точки

Проблем с 12 задача

Здравейте,

Имам проблем с ето тази задачка

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

Ето го и условието на задачата: /ЧАСТНО/ Дадени са A, B, N (B?0, 1<=N<=1000). Да се намери частното A / B и да се отпечата на екрана, закръглено с N цифри след десетичната запетая. 
Изход (примерен): 
Частното на числата 22 и 7 с 10 цифри след запетаята е 
22/7 = 3,1428571428 

 

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

 

http://prntscr.com/jw575c 

скрийншот от задачата

при този код ми изписва грешка: http://prntscr.com/jw57ij там където съм маркирал не съм сигурен дали трябва да етака

И когато стартирам програмата и напиша 22/7 и да закръгли до трети знак ими изписва това:  http://prntscr.com/jw57ri

 

Какво трябва да оправя?

 

Тагове:
-2
Programming Basics
willystyle avatar willystyle 2472 Точки

Хм, интересна задача, N (1000 знака) е доста голямо за стандартните типове данни. Предлагам ти да работиш с BigInteger, умножаваш първо А по 10 на степен N, делиш целочислено на Б, и после взимаш послените N цифри за дробна част, предните за цялата.

0
IlianStefanov2003 avatar IlianStefanov2003 -7 Точки

и задачата е такава-питай учителката ми защо е измислила да може да се закръгли до толкова голямо-пратете кода че трябва до днес на обяд да съм готов с нея-

аз мога да пратя кода тук за да видите и да кажете какво да редактирам-хайде така ще го направя

пращам ив кода а вие напишете какво да редактирам-окей?

using System;


public class Program
{
    public static void Main(string[] args)
    {
        int n = int.Parse(Console.ReadLine());
        for (int i = 0; i < n; i++)
        {
            double a = double.Parse(Console.ReadLine());
            double b = double.Parse(Console.ReadLine());
            double result = Math.Round((a / b),n);
            Console.WriteLine(result);
        }
        
    }
}

0
willystyle avatar willystyle 2472 Точки

Нещо с тоя цикъл ме съмняваш, шегаджия ли си, или наистина не разбираш задачата :)

Грешката  понеже прецизността на double e до 15 знака, не може да се закръгля до повече от 15. Така, че засега предавай 1.5% от задачата, т.е до N<15

Освен това учителката ти използва непознато закръгляне, не е нито MidpointRounding.AwayFromZero , нито MidpointRounding.ToEven, за да получиш искания то нея резултат ползвай Math.Truncate:

class problemRounding
{
    static void Main()
    {
        double a = double.Parse(Console.ReadLine());
        double b = double.Parse(Console.ReadLine());
        int n = int.Parse(Console.ReadLine());
        //double result = Math.Round((a / b), n);
        double result = Math.Truncate((a / b) * Math.Pow(10, n)) / Math.Pow(10, n);
        Console.WriteLine(result);
    }
}

 

0
Ilian2003 avatar Ilian2003 0 Точки

госпожата не ми приема задачата защото каза че трябва да е с цикъл трябвад ас е реши защото е от този раздел. А сега какво?

0
willystyle avatar willystyle 2472 Точки

Колегата kolioi наистина ти е дал работещ алгоритъм и код на C++ в друг пост. Ето го трансформиран на C#:

using System;
class problemRounding
{
    static void Main()
    {

        int a = int.Parse(Console.ReadLine());
        int b = int.Parse(Console.ReadLine());
        int n = int.Parse(Console.ReadLine());
        string result = (a / b) + ".";
        for (int i = 0; i < n; ++i)
        {
            a %= b;
            a *= 10;
            result += a / b;
        }
        Console.WriteLine(result);
    }
}

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