Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Teleso // definice třídy se statickými metodami
- {
- // statická metoda na určení, zda délky tří stran a, b, c definují trojúhelník
- static public bool JeTrojuhelnik(double a, double b, double c)
- {
- // tři strany musí být kladné
- //a součet dvou libovolných stran musí být větší než délka třetí
- return (a > 0.0) && (b > 0.0) && (c > 0.0) &&
- (a + b > c) && (c + b > a) && (a + c > b);
- }
- // statická metoda na určení, zda tři délky a, b, c definují rovnoramenný trojúhelník
- static public bool Rovnoramenny(double a, double b, double c)
- {
- return JeTrojuhelnik(a, b, c) &&
- ((a == b) || (c == b) || (a == c)); // aspoň jedna dvojce stran je shodná
- }
- // statická metoda na určení, zda tři délky a, b, c definují rovnostranný trojúhelník
- static public bool Rovnostranny(double a, double b, double c)
- {
- return JeTrojuhelnik(a, b, c) &&
- (a == b) && (a == c) ; // všechny strany jsou shodné
- }
- // statická metoda na určení, zda tři délky a, b, c definují pravoúhlý trojúhelník
- static public bool Pravouhly(double a, double b, double c)
- {
- return JeTrojuhelnik(a, b, c) &&
- ((a*a == b*b+c*c) || (c*c == b*b+a*a) || (b*b == c*c+a*a));
- // platí aspoň jedna z variant Pythagorovy věty
- }
- // Statická metoda pro určení objemu a obsahu jehlanu o základně a*b a výšce c
- // výstup je v parametrech out V a out S
- static public void Jehlan(double a, double b, double c, out double V,out double S )
- {
- V=1.0/3.0*a*b*c;
- S = a * b + b * Math.Sqrt(a * a / 4.0 + c * c ) + a * Math.Sqrt(b * b / 4.0 + c * c );
- }
- // statická metoda, která vypíše textem požadované vlastnosti trojúhelníka
- static public string TrojuhelnikVlastnosti(double a, double b, double c)
- {
- if (!JeTrojuhelnik(a, b, c)) return "Není to trojúhelník.";
- else
- { // pokud se jedná o trojúhelník, určuje jeho vlastnosti rúznými texty
- // jednotlivé podmínky vycházejí z toho, že předchozí výstup nenastal
- if (Rovnostranny(a, b, c)) return "Jedná se o rovnostranný trojúhelník";
- if (Rovnoramenny(a, b, c) && (!Pravouhly(a, b, c))) return "Jedná se rovnoramenný trojúhelník";
- if (Rovnoramenny(a, b, c) && Pravouhly(a, b, c)) return "Jedná se rovnoramenný pravoúhlý trojúhelník";
- if (Pravouhly(a, b, c)) return "Jedná se o pravoúhlý trojúhelník";
- return "Jedná se o trojúhelník";
- }
- }
- // ořeže začáteční a koncové mezery, využití metody objektu string
- static public void Ores(ref string S)
- {
- S = S.Trim();
- }
- //Odstranění vícenásobných mezer mezi slovy
- static public string Vycisti1( string S)
- {
- string[] slova = S.Split(' '); //rozdělení řetězce na pole slov(podřetězců) oddělené mezerami
- string novy = ""; // vytvoření základu nového řetězce bez nadbytečných mezer
- foreach (var slovo in slova)
- {
- // přidej slovo do nového řetězce, pokud dané slovo není prázdné, před slovo dej jednu mezeru
- // slovo mezi zdvojenými mezerami má délku nula
- if (slovo.Length > 0) novy += " " + slovo;
- }
- // takto vytvořený řetězec začíná mezerou
- return novy.Trim();// odstranění mezery na začátku před odesláním na výstup
- }
- // jiný způsob odstranění vícenásobných mezer
- static public string Vycisti2(string S)
- {
- string Novy = ""; // vytvoření základu nového řetězce bez nadbytečných mezer
- bool mezera = true; //na začátku řetězce nemají být mezery, proto nastavíme příznak začátku mezery na pravdu
- for (int i = 0; i < S.Length; i++) // jdeme po jedlotlivých znacích řetězce
- {
- if ((S[i] == ' ') && (mezera)) { } // daný znak je mezera a předchozí byla taky-> nic nepřidávej
- // daný znak není mezerou, nebo předchozí znak nebyl mezerou
- 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
- 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
- }
- // pozor, postup nechává jednu mezeru na konci
- if (Novy[Novy.Length - 1] == ' ')// pokud končí řetězec mezerou, úřízni ji
- Novy = Novy.Substring(0, Novy.Length - 1);
- return Novy; // výstup
- }
- // rozdělení na sudé a liché znaky
- static public void DvaPodretesce(string S, out string Sude, out string Liche)
- {
- Sude = ""; Liche = "";// vyčištění výstupních hodnot
- for (int i = 0; i < S.Length; i++)
- {
- if (i % 2 == 0) Liche += S[i]; // pokud je index sudý, přidej znak do lichých, jinak do sudých
- else Sude += S[i];
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Vítejte v aplikaci");
- bool pokracovat = true;
- while (pokracovat)
- {
- // zobrazení menu
- Console.WriteLine("Zadejte číslo fukce:");
- Console.WriteLine("1 - ověření zda zadané strany a,b,c mohou tvořit trojúhelník ");
- Console.WriteLine("2 - ověření zda zadaný trojúhelník je rovnostranný, rovnoramenný, pravoúhlý ");
- Console.WriteLine("3 - výpočet povrchu a objemu jehlanu ");
- 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.");
- Console.WriteLine("5 - odstranění všech mezer na začátku a konci řetězce a mezi slovy bude pouze jedna mezera");
- Console.WriteLine("6 - konec programu ");
- // načtení volby
- char volba = Console.ReadKey().KeyChar;
- Console.Clear();
- // definice proměnných
- double a, b, c;
- string S;
- // provedení volby
- switch (volba)
- {
- case '1':
- Console.WriteLine("Volba 1 - ověření zda zadané strany a,b,c mohou tvořit trojúhelník ");
- Console.WriteLine("Zadejte tři délky stran trojúhelníka:");
- a = double.Parse(Console.ReadLine());
- b = double.Parse(Console.ReadLine());
- c = double.Parse(Console.ReadLine());
- if (Teleso.JeTrojuhelnik(a, b, c)) Console.WriteLine("Zadané délky tvoří strany trojúhelníka.");
- else Console.WriteLine("Zadané délky netvoří strany trojúhelníka.");
- break;
- case '2':
- Console.WriteLine("Volba 2 - ověření zda zadaný trojúhelník je rovnostranný, rovnoramenný, pravoúhlý");
- Console.WriteLine("Zadejte tři délky stran trojúhelníka:");
- a = double.Parse(Console.ReadLine());
- b = double.Parse(Console.ReadLine());
- c = double.Parse(Console.ReadLine());
- Console.WriteLine(Teleso.TrojuhelnikVlastnosti(a, b, c));
- break;
- case '3':
- Console.WriteLine("Volba 3 - výpočet povrchu a objemu jehlanu");
- Console.WriteLine("Zadejte délky stran podstavy:");
- a = double.Parse(Console.ReadLine());
- b = double.Parse(Console.ReadLine());
- Console.WriteLine("Zadejte výšku:");
- c = double.Parse(Console.ReadLine());
- double Objem, Obsah;
- Teleso.Jehlan(a,b,c,out Objem,out Obsah);
- 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);
- break;
- case '4':
- 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.");
- Console.WriteLine("Zadejte řetězec:");
- S = Console.ReadLine();
- string Sud, Lich;
- Teleso.DvaPodretesce(S, out Sud, out Lich);
- Console.WriteLine("Sudé znaky: {0} Liché znaky: {1}",Sud,Lich);
- break;
- case '5':
- Console.WriteLine("Volba 5 - odstranění všech mezer na začátku a konci řetězce a mezi slovy bude pouze jedna mezera");
- Console.WriteLine("Zadejte řetězec:");
- S = Console.ReadLine();
- Console.WriteLine("První metoda:");
- Console.WriteLine(Teleso.Vycisti1(S));
- Console.WriteLine("Druhá metoda:");
- Console.WriteLine(Teleso.Vycisti2(S));
- break;
- default:
- pokracovat = false;
- break;
- }
- //vyčištění obrazovky po stisknutí klávesy
- Console.WriteLine();
- Console.WriteLine("Pokračuj stisknutím libovolné klávesy.");
- Console.ReadKey();
- Console.Clear();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement