Advertisement
xxeell

Untitled

Apr 23rd, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.75 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Diagnostics;
  6.  
  7. namespace ForDZ
  8. {
  9.     class Program
  10.     {
  11.         static double circle(int r, double x)
  12.         {
  13.             if (x > r) throw new ApplicationException("nan");
  14.             return 2 * Math.Sqrt(r * r - x * x);
  15.         }
  16.  
  17.         delegate double function(int r, double x);
  18.  
  19.         static double integral(function f, int r, double accuracy)
  20.         {
  21.             Console.WriteLine("Processing: 0%");
  22.             double res = 0;
  23.  
  24.             double startX = -r + accuracy;
  25.             double endX = r - accuracy;
  26.  
  27.             long time = (long)((endX - startX) / accuracy);
  28.             long oneprocent = time / 100;
  29.             long counter =  0;
  30.  
  31.             for (double i = startX; i < endX; i += accuracy)
  32.             {
  33.                 res += ((f(r, i) + f(r, i + accuracy)) / 2) * accuracy;
  34.                 counter++;
  35.                 if (counter % oneprocent == 0)
  36.                 {
  37.                     Console.Clear();
  38.                     Console.WriteLine("Processing: {0}%", counter / oneprocent);
  39.                 }
  40.  
  41.             }
  42.             Console.Clear();
  43.  
  44.             return res;
  45.         }
  46.  
  47.         static void Main(string[] args)
  48.         {
  49.             int radius = 1;
  50.             double accuracy = 1E-10;
  51.             double areaPI = Math.PI * radius * radius;
  52.             double areaINT = integral(new function(circle), radius, accuracy);
  53.  
  54.             Console.WriteLine("Интегральная площадь: {0} \nПлощадь через пи: {1} \nРазница: {2}", areaINT, areaPI, Math.Abs(areaINT - areaPI));
  55.  
  56.             //Console.WriteLine("end");
  57.             Console.ReadKey();
  58.         }
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement