Проблем с 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
Какво трябва да оправя?
като код??
и задачата е такава-питай учителката ми защо е измислила да може да се закръгли до толкова голямо-пратете кода че трябва до днес на обяд да съм готов с нея-
аз мога да пратя кода тук за да видите и да кажете какво да редактирам-хайде така ще го направя
пращам ив кода а вие напишете какво да редактирам-окей?
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);
}
}
}
Нещо с тоя цикъл ме съмняваш, шегаджия ли си, или наистина не разбираш задачата :)
Грешката понеже прецизността на 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);
}
}
госпожата не ми приема задачата защото каза че трябва да е с цикъл трябвад ас е реши защото е от този раздел. А сега какво?
Колегата 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);
}
}