Advertisement
fcamuso

Untitled

Oct 11th, 2020
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.15 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.     public override string ToString() { return $"{Num}/{Den}"; }
  59.  
  60.     public static  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.     //public static Frazione operator +(Frazione f1, int n)
  68.     //{
  69.     //  return f1 + new Frazione(n, 1);
  70.     //}
  71.  
  72.     public static implicit operator Frazione(int n) => new Frazione(n);
  73.    
  74.     public static explicit operator Frazione(string s) => new Frazione(s);
  75.  
  76.     class Program
  77.     {
  78.       static void Main(string[] args)
  79.       {
  80.  
  81.         Frazione f1 = new Frazione(3, 2);    //  3/2
  82.         Frazione f2 = new Frazione("4/5");  //  4/5
  83.  
  84.        
  85.         Frazione f3 = f1 + f2;
  86.         Frazione f4 = 6; // = new Frazione(6)
  87.        
  88.         Console.WriteLine(3 + f1);
  89.         Console.WriteLine(f1 + 3);
  90.  
  91.         Frazione f5 = (Frazione)"4/5";
  92.         Console.WriteLine(f1 + "paperino");
  93.  
  94.       }
  95.     }
  96.   }
  97. }
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement