Advertisement
sokolova4

Задача 2

Dec 3rd, 2020
462
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.64 KB | None | 0 0
  1. using System;
  2. //using MyLib;
  3. public class GeomProgr
  4. {
  5.     // поле класса - счетчик созданных объектов:
  6.     public static uint objectNumber = 0;
  7.     double _b; // первый член прогрессии b!=0
  8.     double _q; // знаменатель прогрессии q!=0
  9.     public double B
  10.     {
  11.         get { return _b; }
  12.         set
  13.         {
  14.             if (value == 0)
  15.                 throw new ArgumentException("Недопустимое значение первого члена прогрессии!");
  16.             _b = value;
  17.         }
  18.     }
  19.     public double Q
  20.     {
  21.         get { return _q; }
  22.         set
  23.         {
  24.             if (value == 0)
  25.                 throw new ArgumentException("Недопустимое значение знаменателя прогрессии!");
  26.             _q = value;
  27.         }
  28.     }
  29.  
  30.     public GeomProgr()
  31.     {
  32.        B = 1;
  33.         Q = 1;
  34.         objectNumber++;
  35.         Console.WriteLine(objectNumber + ": Конструктор без параметров");
  36.     }
  37.     // Конструктор общего вида (конструктор с параметрами):
  38.     public GeomProgr(double b, double q) : this()
  39.     {
  40.         if (b == 0 || q == 0)
  41.         {
  42.             objectNumber--;
  43.             throw new ArgumentException("Ошибка в аргументах конструктора!");
  44.         }
  45.         B = b;
  46.         Q = q;
  47.         Console.WriteLine(objectNumber + ": Конструктор с параметрами");
  48.     }
  49.  
  50.     public double this[int n]
  51.     { // n-ый член прогрессии
  52.         get
  53.         {
  54.             return B * Math.Pow(Q, n - 1);
  55.         }
  56.     }
  57.  
  58.     public double ProgrSum(int n)
  59.     { // сумма n членов прогрессии
  60.  
  61.         if (Q == 1)
  62.         {
  63.             return (n - 1) * Q + B;
  64.         }
  65.         return B * (Math.Pow(Q, n) - 1) / (Q - 1);
  66.     } // end of ProgrSum()
  67. } // end of class GeomProgr
  68.  
  69.  
  70.  
  71.  
  72.  
  73. class Program
  74. {
  75.     static void Main()
  76.     {
  77.         GeomProgr geomProgrObj= null; // ссылка на объект типа GeomProgr
  78.         bool flag;
  79.         int b, q;
  80.         do
  81.         {
  82.             flag = false;
  83.             try
  84.             {
  85.                 Console.Write("Введите начальный член прогрессии: ");
  86.                 b = int.Parse(Console.ReadLine());
  87.                 Console.Write("Введите знаменатель прогрессии: ");
  88.                 q = int.Parse(Console.ReadLine());
  89.                 geomProgrObj = new GeomProgr(b, q); // создаем объект 2
  90.             }
  91.             catch (Exception e)
  92.             { // ловим любые исключения
  93.                 flag = true;
  94.                 Console.WriteLine("Некорректные входные данные! ");
  95.             }
  96.         } while (flag);
  97.         int n=0;
  98.         flag = false;
  99.         do
  100.         {
  101.             flag = false;
  102.             try
  103.             {
  104.                 Console.Write("Введите колличество членов прогрессии: ");
  105.                 n = int.Parse(Console.ReadLine());
  106.             }
  107.             catch (Exception e)
  108.             { // ловим любые исключения
  109.                 flag = true;
  110.                 Console.WriteLine("Некорректные входные данные! ");
  111.             }
  112.         } while (flag);
  113.         double ans=geomProgrObj[n];
  114.         double sum = geomProgrObj.ProgrSum(n);
  115.         Console.WriteLine($"n-ый член прогрессии = {ans}. Сумма = {sum}");
  116.  
  117.     }
  118. }
  119.  
  120.  
  121.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement