Advertisement
Guest User

Untitled

a guest
Jun 12th, 2014
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.37 KB | None | 0 0
  1. using System;
  2. using System.Globalization;
  3.  
  4. namespace ZHExample
  5. {
  6.     // interface: IKor;
  7.     public interface IKor
  8.     {
  9.         // tulajdonságok:
  10.         // double Sugar (get, set);
  11.         double Sugar { get; set; }
  12.         // double Atmero (get);
  13.         double Atmero { get; }
  14.         // double Ker (get);
  15.         double Ker { get; }
  16.         //double Ter (get)
  17.         double Ter { get; }
  18.     }
  19.  
  20.     // osztály: Kor, mely valósítsa meg az IKor interface-t;
  21.     public class Kor : IKor
  22.     {
  23.         // 1 db tagváltozó: sugár;
  24.         private double _sugar;
  25.  
  26.         // konstruktor inicializálja a sugarat;
  27.         public Kor(double sugar = 0)
  28.         {
  29.             _sugar = sugar;
  30.         }
  31.  
  32.         public double Sugar
  33.         {
  34.             get { return _sugar; }
  35.             set { _sugar = value; }
  36.         }
  37.  
  38.         public double Atmero
  39.         {
  40.             get { return Sugar*2; /* középiskolás matek */ }
  41.             // az Atmero tulajdonságnak legyen set ága is;
  42.             set { Sugar = value / 2; }
  43.         }
  44.  
  45.         public double Ker
  46.         {
  47.             get { return Kerulet(Sugar); }
  48.         }
  49.  
  50.         public double Ter
  51.         {
  52.             get { return Terulet(Sugar); }
  53.         }
  54.  
  55.         // + 2 db statikus funkció:
  56.         // double Kerulet(double _sugar)
  57.         public static double Kerulet(double sugar)
  58.         {
  59.             return 2 * sugar * Math.PI; /* középiskolás matek */
  60.         }
  61.  
  62.         //  és double Terulet(double _sugar).
  63.         public static double Terulet(double sugar)
  64.         {
  65.             return sugar * sugar * Math.PI; /* középiskolás matek */
  66.         }
  67.     }
  68.  
  69.     class Program
  70.     {
  71.         // Main:
  72.         static void Main(string[] args)
  73.         {
  74.             // eldöntendő kérdés, hogy sugarat (S) vagy átmérőt (A) akar-e megadni; (Esc esetén lépjen ki a programból.)
  75.             char inputMode = ' ';
  76.             do
  77.             {
  78.                 Console.Write("Sugár (S) vagy átmérő (A)? ");
  79.                 var command = Console.ReadKey();
  80.                 switch (command.Key)
  81.                 {
  82.                     case ConsoleKey.A:
  83.                         inputMode = 'A';
  84.                         break;
  85.                     case ConsoleKey.S:
  86.                         inputMode = 'S';
  87.                         break;
  88.                     case ConsoleKey.Escape:
  89.                         return; /* kilépés a Main metódusból -> az egész programból */
  90.                 }
  91.                 Console.WriteLine();
  92.             } while (inputMode == ' ');
  93.  
  94.             string kerdes = inputMode == 'A' ? "Átmérő? " : "Sugár? ";
  95.             double ertek;
  96.  
  97.             // ... mindaddig próbálkozzunk, amíg hibátlan nem lesz;
  98.             do
  99.             {
  100.                 Console.Write(kerdes);
  101.  
  102.                 // olvassuk be a választott adatot ...
  103.                 string input = Console.ReadLine();
  104.  
  105.                 if (!double.TryParse(input, NumberStyles.Float, CultureInfo.InvariantCulture, out ertek))
  106.                 {
  107.                     // hibás az adat, ha az nem szám...
  108.                     Console.WriteLine("A megadott érték nem szám!"); // külön üzenet figyelmeztessen ezekre az esetekre;
  109.                     ertek = double.NaN;
  110.                 }
  111.                 else if (ertek < 0)
  112.                 {
  113.                     // ... vagy negatív
  114.                     Console.WriteLine("A megadott szám negatív!"); // külön üzenet figyelmeztessen ezekre az esetekre;
  115.                     ertek = double.NaN;
  116.                 }
  117.             } while (double.IsNaN(ertek));
  118.  
  119.  
  120.             Kor kor = new Kor();
  121.  
  122.             if (inputMode == 'A')
  123.             {
  124.                 kor.Atmero = ertek;
  125.             }
  126.             else
  127.             {
  128.                 kor.Sugar = ertek;
  129.             }
  130.  
  131.             // három tizedesjegyre írjuk ki a kör kerületét és területét a tulajdonságok felhasználásával;
  132.             Console.WriteLine("A kör kerülete: {0:F3} területe: {1:F3}", kor.Ker, kor.Ter);
  133.  
  134.             // ugyanígy írassuk ki a kétszer akkora sugarú kör kerületét és területét a statikus függvényekkel.
  135.             Console.WriteLine("Kétszer akkora sugarú kör kerülete: {0:F3} területe: {1:F3}", Kor.Kerulet(kor.Sugar * 2), Kor.Terulet(kor.Sugar * 2));
  136.             Console.ReadKey();
  137.         }
  138.     }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement