Advertisement
Guest User

Untitled

a guest
Dec 14th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.73 KB | None | 0 0
  1. class Teleso // definice třídy se statickými metodami
  2. {
  3. // statická metoda na určení, zda délky tří stran a, b, c definují trojúhelník
  4. static public bool JeTrojuhelnik(double a, double b, double c)
  5. {
  6. // tři strany musí být kladné
  7. //a součet dvou libovolných stran musí být větší než délka třetí
  8. return (a > 0.0) && (b > 0.0) && (c > 0.0) &&
  9. (a + b > c) && (c + b > a) && (a + c > b);
  10. }
  11.  
  12. // statická metoda na určení, zda tři délky a, b, c definují rovnoramenný trojúhelník
  13. static public bool Rovnoramenny(double a, double b, double c)
  14. {
  15. return JeTrojuhelnik(a, b, c) &&
  16. ((a == b) || (c == b) || (a == c)); // aspoň jedna dvojce stran je shodná
  17. }
  18.  
  19. // statická metoda na určení, zda tři délky a, b, c definují rovnostranný trojúhelník
  20. static public bool Rovnostranny(double a, double b, double c)
  21. {
  22. return JeTrojuhelnik(a, b, c) &&
  23. (a == b) && (a == c) ; // všechny strany jsou shodné
  24. }
  25.  
  26. // statická metoda na určení, zda tři délky a, b, c definují pravoúhlý trojúhelník
  27. static public bool Pravouhly(double a, double b, double c)
  28. {
  29. return JeTrojuhelnik(a, b, c) &&
  30. ((a*a == b*b+c*c) || (c*c == b*b+a*a) || (b*b == c*c+a*a));
  31. // platí aspoň jedna z variant Pythagorovy věty
  32. }
  33.  
  34. // Statická metoda pro určení objemu a obsahu jehlanu o základně a*b a výšce c
  35. // výstup je v parametrech out V a out S
  36. static public void Jehlan(double a, double b, double c, out double V,out double S )
  37. {
  38. V=1.0/3.0*a*b*c;
  39. S = a * b + b * Math.Sqrt(a * a / 4.0 + c * c ) + a * Math.Sqrt(b * b / 4.0 + c * c );
  40. }
  41. // statická metoda, která vypíše textem požadované vlastnosti trojúhelníka
  42. static public string TrojuhelnikVlastnosti(double a, double b, double c)
  43. {
  44. if (!JeTrojuhelnik(a, b, c)) return "Není to trojúhelník.";
  45. else
  46. { // pokud se jedná o trojúhelník, určuje jeho vlastnosti rúznými texty
  47. // jednotlivé podmínky vycházejí z toho, že předchozí výstup nenastal
  48. if (Rovnostranny(a, b, c)) return "Jedná se o rovnostranný trojúhelník";
  49. if (Rovnoramenny(a, b, c) && (!Pravouhly(a, b, c))) return "Jedná se rovnoramenný trojúhelník";
  50. if (Rovnoramenny(a, b, c) && Pravouhly(a, b, c)) return "Jedná se rovnoramenný pravoúhlý trojúhelník";
  51. if (Pravouhly(a, b, c)) return "Jedná se o pravoúhlý trojúhelník";
  52. return "Jedná se o trojúhelník";
  53. }
  54. }
  55.  
  56. // ořeže začáteční a koncové mezery, využití metody objektu string
  57. static public void Ores(ref string S)
  58. {
  59. S = S.Trim();
  60. }
  61.  
  62. //Odstranění vícenásobných mezer mezi slovy
  63. static public string Vycisti1( string S)
  64. {
  65. string[] slova = S.Split(' '); //rozdělení řetězce na pole slov(podřetězců) oddělené mezerami
  66. string novy = ""; // vytvoření základu nového řetězce bez nadbytečných mezer
  67. foreach (var slovo in slova)
  68. {
  69. // přidej slovo do nového řetězce, pokud dané slovo není prázdné, před slovo dej jednu mezeru
  70. // slovo mezi zdvojenými mezerami má délku nula
  71. if (slovo.Length > 0) novy += " " + slovo;
  72. }
  73. // takto vytvořený řetězec začíná mezerou
  74. return novy.Trim();// odstranění mezery na začátku před odesláním na výstup
  75. }
  76.  
  77. // jiný způsob odstranění vícenásobných mezer
  78. static public string Vycisti2(string S)
  79. {
  80. string Novy = ""; // vytvoření základu nového řetězce bez nadbytečných mezer
  81. bool mezera = true; //na začátku řetězce nemají být mezery, proto nastavíme příznak začátku mezery na pravdu
  82. for (int i = 0; i < S.Length; i++) // jdeme po jedlotlivých znacích řetězce
  83. {
  84. if ((S[i] == ' ') && (mezera)) { } // daný znak je mezera a předchozí byla taky-> nic nepřidávej
  85. // daný znak není mezerou, nebo předchozí znak nebyl mezerou
  86. else if (S[i] != ' ') { mezera = false; Novy += S[i]; } // daný znak není mezera, příznak nastav na nemezera a zapiš ho do nového řetězce
  87. else { mezera = true; Novy += S[i]; } // daný znak je mezera, ale před tím mezera nebyla -> nastav příznak začátku mezery, a vlož jednu mezeru
  88.  
  89. }
  90. // pozor, postup nechává jednu mezeru na konci
  91. if (Novy[Novy.Length - 1] == ' ')// pokud končí řetězec mezerou, úřízni ji
  92. Novy = Novy.Substring(0, Novy.Length - 1);
  93. return Novy; // výstup
  94. }
  95.  
  96. // rozdělení na sudé a liché znaky
  97. static public void DvaPodretesce(string S, out string Sude, out string Liche)
  98. {
  99. Sude = ""; Liche = "";// vyčištění výstupních hodnot
  100. for (int i = 0; i < S.Length; i++)
  101. {
  102. if (i % 2 == 0) Liche += S[i]; // pokud je index sudý, přidej znak do lichých, jinak do sudých
  103. else Sude += S[i];
  104. }
  105. }
  106.  
  107. }
  108.  
  109. class Program
  110. {
  111. static void Main(string[] args)
  112. {
  113. Console.WriteLine("Vítejte v aplikaci");
  114. bool pokracovat = true;
  115. while (pokracovat)
  116. {
  117. // zobrazení menu
  118. Console.WriteLine("Zadejte číslo fukce:");
  119. Console.WriteLine("1 - ověření zda zadané strany a,b,c mohou tvořit trojúhelník ");
  120. Console.WriteLine("2 - ověření zda zadaný trojúhelník je rovnostranný, rovnoramenný, pravoúhlý ");
  121. Console.WriteLine("3 - výpočet povrchu a objemu jehlanu ");
  122. Console.WriteLine("4 - rozdělení řetězce na dva nové řetězce tak, že první bude obsahovat pouze lichá písmena a druhý pouze sudá písmena.");
  123. Console.WriteLine("5 - odstranění všech mezer na začátku a konci řetězce a mezi slovy bude pouze jedna mezera");
  124. Console.WriteLine("6 - konec programu ");
  125. // načtení volby
  126. char volba = Console.ReadKey().KeyChar;
  127. Console.Clear();
  128. // definice proměnných
  129. double a, b, c;
  130. string S;
  131. // provedení volby
  132. switch (volba)
  133. {
  134. case '1':
  135. Console.WriteLine("Volba 1 - ověření zda zadané strany a,b,c mohou tvořit trojúhelník ");
  136. Console.WriteLine("Zadejte tři délky stran trojúhelníka:");
  137. a = double.Parse(Console.ReadLine());
  138. b = double.Parse(Console.ReadLine());
  139. c = double.Parse(Console.ReadLine());
  140. if (Teleso.JeTrojuhelnik(a, b, c)) Console.WriteLine("Zadané délky tvoří strany trojúhelníka.");
  141. else Console.WriteLine("Zadané délky netvoří strany trojúhelníka.");
  142. break;
  143. case '2':
  144. Console.WriteLine("Volba 2 - ověření zda zadaný trojúhelník je rovnostranný, rovnoramenný, pravoúhlý");
  145. Console.WriteLine("Zadejte tři délky stran trojúhelníka:");
  146. a = double.Parse(Console.ReadLine());
  147. b = double.Parse(Console.ReadLine());
  148. c = double.Parse(Console.ReadLine());
  149. Console.WriteLine(Teleso.TrojuhelnikVlastnosti(a, b, c));
  150. break;
  151. case '3':
  152. Console.WriteLine("Volba 3 - výpočet povrchu a objemu jehlanu");
  153. Console.WriteLine("Zadejte délky stran podstavy:");
  154. a = double.Parse(Console.ReadLine());
  155. b = double.Parse(Console.ReadLine());
  156. Console.WriteLine("Zadejte výšku:");
  157. c = double.Parse(Console.ReadLine());
  158. double Objem, Obsah;
  159. Teleso.Jehlan(a,b,c,out Objem,out Obsah);
  160. Console.WriteLine(" Jehlan o hranách základny {0} a {1} s výškou {2} má objem {3} a obsah {4}", a, b, c, Objem, Obsah);
  161. break;
  162. case '4':
  163. Console.WriteLine("Volba 4 - rozdělení řetězce na dva nové řetězce tak, že první bude obsahovat pouze lichá písmena a druhý pouze sudá písmena.");
  164. Console.WriteLine("Zadejte řetězec:");
  165. S = Console.ReadLine();
  166. string Sud, Lich;
  167. Teleso.DvaPodretesce(S, out Sud, out Lich);
  168. Console.WriteLine("Sudé znaky: {0} Liché znaky: {1}",Sud,Lich);
  169. break;
  170. case '5':
  171. Console.WriteLine("Volba 5 - odstranění všech mezer na začátku a konci řetězce a mezi slovy bude pouze jedna mezera");
  172. Console.WriteLine("Zadejte řetězec:");
  173. S = Console.ReadLine();
  174. Console.WriteLine("První metoda:");
  175. Console.WriteLine(Teleso.Vycisti1(S));
  176. Console.WriteLine("Druhá metoda:");
  177. Console.WriteLine(Teleso.Vycisti2(S));
  178. break;
  179. default:
  180. pokracovat = false;
  181. break;
  182. }
  183. //vyčištění obrazovky po stisknutí klávesy
  184. Console.WriteLine();
  185. Console.WriteLine("Pokračuj stisknutím libovolné klávesy.");
  186. Console.ReadKey();
  187. Console.Clear();
  188.  
  189. }
  190.  
  191. }
  192.  
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement