BME MOGI Gépészeti informatika 1. 1. feladat Végezze el a következő feladatokat! Olvassa be a nevét és írjon üdvözlő szöveget a képernyőre! Generáljon két 1-100 közötti egész számot, és írassa ki a hányadosukat és az osztási maradékot! Generáljon egy 1-100 közötti valós számot, valamint határozza meg fenti egészek hányadosát valós osztással! Írassa ki a valós számok hányadosának egész és is! Logikai értékkel jelezze, hogy az egészek összege nagyobb-e a valósak különbségénél! Generáljon egy karaktert, melynek kódja 33-128 között van! Írja ki az ezt a karaktert megelőző és követő karaktert a képernyőre! Megoldási mód: konzolalkalmazás Oktatási cél: adattípusok ismertetése, műveletek, precedencia (elsőbbségi) szabály, típuskonverzió, beolvasás és kiírás, adatok formázása kiíráskor, véletlen szám előállítása A programkód: static void Main(string[] args) int egész1, egész2; char karakter; string név, szöveg="üdvözöllek "; double valós1, valós2; bool logikai; Random rnd = new Random(); Console.WriteLine("Írd be a nevedet!"); név = Console.ReadLine(); Console.WriteLine(szöveg+név+"!"); Console.WriteLine(); egész1 = rnd.next(1, 101); egész2= rnd.next(1, 101); Console.WriteLine("A generált két egész szám: 0 1",egész1,egész2); Console.WriteLine("A hányadosuk és az osztási maradék: 0 1", egész1/egész2, egész1 % egész2); valós1 = rnd.nextdouble() * (101-1) + 1; valós2 = (double)egész1 / egész2; Console.WriteLine("\nA generált két valós szám: 0:0.00 1", valós1, valós2.tostring("f2")); Console.WriteLine("A hányadosuk egész és tört része: "+ "0:0 1:0.0000", (int)(valós1 / valós2), valós1 / valós2 - (int)(valós1 / valós2)); egész1 += egész2; valós1 -= valós2; logikai = egész1 > valós1; Console.WriteLine("\nAz egészek összege nagyobb a valósak + különbségénél: 0", logikai); karakter =(char) rnd.next(33, 128); Console.WriteLine("\nA generált karakter 0, melynek kódja 1", karakter, (int)karakter); Console.WriteLine("Az előző karakter 0, a következő karakter 1", --karakter, (char)((int)karakter + 2)); Console.ReadLine(); 1
2. feladat Olvassuk be egy háromszög oldalainak hosszát, majd számoljuk ki és írjuk ki a kerületét, területét, magasságvonalainak hosszát és szögeinek nagyságát! Megoldási mód: konzolalkalmazás Oktatási cél: beolvasás és kiírás, adatok formázása kiíráskor, képletírás gyakoroltatása, Math osztály használata Felhasznált képletek: Héron képlet a területszámításra, szinusz és koszinusz tétel a szögek számítására: t = s(s a)(s b)(s c), ahol s = a+b+c 2 b c sinα = a b sinγ = a c sinβ c 2 = a 2 + b 2 2 a b cosγ A programkód: static void Main(string[] args) double a, b, c, ma, mb, mc, alfa, béta, gamma; double terület, kerület; Console.WriteLine("Kérem a háromszög oldalainak hosszát:"); a = double.parse(console.readline()); b = double.parse(console.readline()); c = double.parse(console.readline()); kerület = a + b + c; terület = Math.Sqrt(kerület/2*(kerület / 2 - a)* (kerület / 2 - b) * (kerület / 2 - c)); ma = terület * 2 / a; mb = terület * 2 / b; mc = terület * 2 / c; gamma = Math.Acos((c * c - a * a - b * b) / (-2 * a * b)) / Math.PI * 180; alfa = Math.Asin(a /c * Math.Sin(gamma/180*Math.PI )) / Math.PI * 180; béta = 180 - alfa - gamma; Console.WriteLine(); Console.WriteLine("A háromszög kerülete: 0", kerület.tostring ("F2")); 2
Console.WriteLine("A háromszög területe: 0", terület.tostring("f2")); Console.WriteLine("A háromszög magasságai: 0:0.00 1:0.00 2:0.00", ma, mb, mc); Console.WriteLine("A háromszög szögei: 0:0.00 1:0.00 2:0.00", alfa, béta, gamma); Console.ReadLine(); 3. feladat Olvassa be egy szabályos sokszög csúcsainak számát és oldalainak hosszát majd számítsa ki a sokszög belső szögét, külső szögét, átlóinak számát, területét, a beírt kör sugarát és a köré írt kör sugarát! Kezelje a hibás adatbevitelt! Képletek és ábra: β r a kerület: n*a R csúcsok száma: n oldal: a belső szög: β = (n-2)*π/n külső szög: α = 2* π/n átlók száma: n*(n-3)/2 köré írt kör sugara: R = a/(2*sin(π/n)) beírt írt kör sugara: r = R*cos(π/n) terület: 0,5*n*R 2 *sin(2* π/n) Megoldási mód: Windows Forms alkalmazás Oktatási cél: form készítése, TextBox és Button vezérlők kezelése, eseménykezelés bemutatása, konstans használata, try catch szerkezet alkalmazása, képletírás gyakoroltatása, konvertálási módok bemutatása, Math osztály használata 3
Az elkészítendő form: A Form1 osztályba írandó programkód: const int alapértelmezettcsúcsszám = 6; const double alapértelmezettoldal = 1; int csúcsszám=0; double oldal=0; double köréírtsugár=0; private void button1_click(object sender, EventArgs e) try csúcsszám = int.parse(textbox1.text); oldal = Convert.ToDouble(textBox2.Text); textbox3.text = ((csúcsszám - 2) * 180 / csúcsszám).tostring("f2"); textbox4.text = (360 / csúcsszám).tostring ("F2"); textbox5.text = (csúcsszám * (csúcsszám - 3) / 2).ToString("F2"); köréírtsugár = oldal / (2 * Math.Sin(Math.PI / csúcsszám)); textbox7.text = (köréírtsugár * Math.Cos(Math.PI / csúcsszám)).tostring("f2"); textbox6.text = (csúcsszám / 2 * Math.Pow(köréÍrtSugár, 2) * Math.Sin(2 * Math.PI / csúcsszám)).tostring("f2"); textbox8.text = köréírtsugár.tostring("f2"); catch (Exception ex) 4
MessageBox.Show(ex.Message); private void button2_click(object sender, EventArgs e) textbox1.text = alapértelmezettcsúcsszám.tostring(); textbox2.text = alapértelmezettoldal.tostring(); textbox3.text = textbox4.text =textbox5.text = ""; textbox6.text = textbox7.text = textbox8.text = ""; private void Form1_Load(object sender, EventArgs e) textbox3.enabled = textbox4. Enabled =textbox5. Enabled = false; textbox6. Enabled = textbox7. Enabled = textbox8. Enabled = false; textbox1.text = alapértelmezettcsúcsszám.tostring (); textbox2.text = alapértelmezettoldal.tostring(); Gyakorló feladatok: 1. Készítsen Windows Forms alkalmazást egy kör sugara és középpontjának, valamint egy tetszőleges pont koordinátáinak beolvasására! Számítsa ki a kör területét, kerületét továbbá a középpont és a pont távolságát! 2. Készítsen konzolalkalmazást, mely generál két -10 és 10 közötti véletlen egész számot, majd kiszámítja és kiírja az összegüket, különbségüket és szorzatukat! Az eredmény szám1 műveleti jel szám2 = eredmény formában jelenjen meg mindhárom művelet esetén! 3. Egy gázpalack m liter gázt tartalmaz, egy lufiba b liter gáz kell. Készítsen Windows Forms alkalmazást, mely beolvassa m és b értékét, majd kiszámolja, hogy hány lufit tudunk ezzel a gázmennyiséggel felfújni, és hány liter gáz marad a palackban! 4. Készítsen Windows Forms alkalmazást, mely bekér egy Celsius fokban megadott hőmérsékletértéket, majd átváltja azt Fahrenheitbe, illetve a Fahrenheitben megadott hőmérséklet értéket átváltja Celsiusba! 5. Konzolalkalmazásban generáljon két 1 és 5 közötti véletlen egész számot, és az A számok egyenlők: szöveg után az igaz vagy a hamis logikai értékkel jelezze, hogy fennáll-e az értékegyezőség! Hajtsa végre a műveletet valós számokkal is! Két valós számot tekintsen egyenlőnek, ha különbségük abszolút értéke kisebb egy ezrednél! 6. Windows Forms alkalmazásban kérjen be két időpontot (óra, perc, másodperc sorrendben), majd számítsa ki, és írassa ki a két időpontot órában, illetve a két időpont közti különbséget másodpercekben! Használja a Math:Abs függvényt! 7. Windows Forms alkalmazásban kérjen be három-három természetes számot, ezek rendre három pénzjegy vagy érme értékét, illetve az ezekből rendelkezésre álló mennyiséget jelentik! Határozza meg és írassa ki, hogy hány forintja van összesen! 8. Írjon konzolalkalmazást, amely a kilogrammban mért testsúly és a centiméterben mért testmagasság alapján meghatározza a testtömeg indexet, és kiírja azt a képernyőre! Testtömegindex = Testömeg[kg]/Testmagasság 2 [m 2 ] 5