Advertisement
fcamuso

Untitled

Oct 4th, 2020
425
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.00 KB | None | 0 0
  1. using System;
  2. using System.Drawing;
  3.  
  4. namespace overload_op_funzioni
  5. {
  6.   class Frazione
  7.   {
  8.     public int Num { get; set; } = 0;
  9.  
  10.     private int den;
  11.     public int Den
  12.     {
  13.       get => den;
  14.       set
  15.       {
  16.         if (value == 0) throw new ArgumentException("Denominatore zero");
  17.         den = value;
  18.       }
  19.     }
  20.     public Frazione() { Den = 1; }
  21.     public Frazione(int num, int den)
  22.     { Num = num; Den = den; }
  23.  
  24.     public Frazione(int n) : this(n, 1) { }
  25.     public Frazione(string s)
  26.     {
  27.  
  28.       if (string.IsNullOrEmpty(s)) return;
  29.  
  30.       //if (s == null || s == "") return;
  31.  
  32.       string[] dati = s.Split('/'); //da "25ert/7" -> ["25", "7"]
  33.  
  34.       try
  35.       {
  36.         Num = int.Parse(dati[0]);
  37.       }
  38.       catch (FormatException e)
  39.       {
  40.         throw new FormatException("Stringa non nel formato 'numero/numero' o 'numero'");
  41.       }
  42.  
  43.       if (dati.Length == 1) // "25"
  44.         Den = 1;
  45.       else
  46.       {
  47.         try
  48.         {
  49.           Den = int.Parse(dati[1]);
  50.         }
  51.         catch (FormatException e)
  52.         {
  53.           throw new FormatException("Stringa non nel formato 'numero/numero' o 'numero'");
  54.         }
  55.       }
  56.     }
  57.  
  58.     override public string ToString() { return $"{Num}/{Den}"; }
  59.  
  60.     static public Frazione operator +(Frazione f1, Frazione f2)
  61.     {
  62.  
  63.       return new Frazione(f1.Num * f2.Den + f2.Num * f1.Den, f1.Den * f2.Den);
  64.  
  65.     }
  66.  
  67.     static public Frazione operator +(Frazione f1, int n)
  68.     {
  69.       return f1 + new Frazione(n, 1);
  70.     }
  71.  
  72.     class Program
  73.     {
  74.       static void Main(string[] args)
  75.       {
  76.         int n1 = 5, n2 = 7;
  77.  
  78.         int n3 = n1 + n2;
  79.  
  80.         n3++;
  81.  
  82.  
  83.         Frazione f1 = new Frazione(3, 2);    //  3/2
  84.         Frazione f2 = new Frazione("4/5");  //  4/5
  85.  
  86.         //f1 += new Frazione("1/3");
  87.        
  88.         Frazione f3 = f1 + f2;
  89.  
  90.         //Console.WriteLine(7 + f1);
  91.      
  92.  
  93.  
  94.  
  95.         string s = null;
  96.         //Frazione f3 = new Frazione(s);
  97.  
  98.       }
  99.     }
  100.   }
  101. }
  102.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement