BME MOGI Gépészeti informatika. 1. feladat Generáljon egy 1 és 100 közötti véletlen egész számot, melyre a felhasználó tippelhet. A tippet a program értékelje a Sok vagy a Kevés visszajelzéssel. Ha a felhasználó kitalálta a számot, gratuláljon neki a program! Tegye lehetővé új játék indítását is! Megoldási mód: Windows Forms alkalmazás Oktatási cél: elágazás if használata, ellenőrzött adatbevitel bemutatása TryParse metódus, TextChanged esemény szemléltetése, formon fókusz áthelyezése Az elkészítendő form: A Form1 osztályba írandó programkód: Random rnd = new Random(); int gondolt; private void textbox1_textchanged(object sender, EventArgs e) int szám; bool jó = int.tryparse(textbox1.text, out szám); if (textbox1.text!= "" &&!jó) MessageBox.Show("Csak egész szám megengedett!"); return; if (szám==gondolt) label3.text = "Nyertél!"; else if (szám<gondolt) label3.text = "Kevés!"; else if (szám>gondolt) label3.text = "Sok!"; private void Form1_Load(object sender, EventArgs e) 1
gondolt = rnd.next(1, 101); label3.text = ""; private void button1_click(object sender, EventArgs e) gondolt = rnd.next(1, 101); label3.text = ""; textbox1.text = ""; textbox1.focus();. feladat Olvasson be egy tetszőleges egész számot, és vizsgálja meg az előjelét, valamint a párosságát! Kezelje külön, ha a szám nulla! Megoldási mód: Windows Forms alkalmazás Oktatási cél: elágazás switch használatának, ellenőrzött adatbevitelnek try catch szerkezet, GroupBox, RadioButton, CheckBox vezérlők alkalmazásának bemutatása Az elkészítendő form: A Form1 osztályba írandó programkód: private void textbox1_textchanged(object sender, EventArgs e) int szám = 0; try szám=int.parse(textbox1.text); switch (Math.Sign(szám)) case -1: radiobutton1.checked = true; break; case 1: radiobutton3.checked = true; break; default:
radiobutton.checked = true; break; checkbox1.checked = (szám!= 0) && (szám % == 0); // nem nulla páros checkbox.checked = szám %!= 0; //páratlan checkbox3.checked = szám == 0; // nulla catch (Exception ex) if (textbox1.text.trim ()=="" textbox1.text.trim () =="-" textbox1.text.trim() =="+") return; else MessageBox.Show(ex.Message); 3. feladat Olvassa be két síkbeli vektor koordinátáit, és számítsa ki a hosszúkat, a meredekségüket, a skaláris szorzatukat és az általuk bezárt szöget! Állapítsa meg az egymáshoz viszonyított helyzetüket merőlegesek-e, párhuzamosak-e! Számítsa ki a vektorokkal párhuzamos egységvektorok koordinátáit is! A feladat megoldásához írja meg a következő metódusokat: Hossz: bemenő paraméterek egy vektor koordinátái, visszaadott érték a vektor hossza. A vektor hossza egyenlő a koordináták négyzetösszegének gyökével. Meredekség: bemenő paraméterek egy vektor koordinátái, visszaadott érték a vektor meredeksége. A v(v1;v) vektor meredeksége m=v/v1. MerőlegesE: bemenő paraméterek a két vektor koordinátái, visszaadott érték az igaz logikai érték, ha a vektorok merőlegesek, különben a hamis logikai érték. Két vektor merőleges, ha a meredekségük szorzat -1-el egyenlő. A meredekség kiszámításához használja a Meredekség metódust! PárhuzamosE: bemenő paraméterek a két vektor koordinátái, visszaadott érték az igaz logikai érték, ha a vektorok párhuzamosak, különben a hamis logikai érték. Két vektor párhuzamos, ha a meredekségük egyenlő. A meredekség kiszámításához használja a Meredekség metódust! SkalárisSzorzat: bemenő paraméterek a két vektor koordinátái, kimenő paraméter a két vektor skaláris szorzata. A v(v1;v) és u(u1,u) vektorok skaláris szorzata az s= v1*u1+v*u összeg. SzögSzámít: bemenő paraméterek a két vektor koordinátái, kimenő paraméter a két vektor által bezárt szög fokban. A szöget a következő képlettel számíthatja ki: alfa= arccos(s/( v * u ) /π*180, ahol s a skaláris szorzat, a v és u a vektorok hossza. A szög kiszámításához használja a SkalárisSzorzat és a Hossz metódusokat! Normál: a metódus egy vektorból egységvektort készít úgy, hogy a vektor koordinátáit elosztja a vektor hosszával. Referencia paraméterek egy vektor koordinátái. Megoldási mód: Windows Forms alkalmazás 3
Oktatási cél: metódusok írásának, a paraméterátadás fajtáinak bemutatása Az elkészítendő form: A Form1 osztályba írandó programkód: double x1, x, y1, y; double szorzat, alfa; private void button1_click(object sender, EventArgs e) try x1 = double.parse(textbox1.text); y1 = double.parse(textbox.text); x = double.parse(textbox3.text); y = double.parse(textbox4.text); textbox5.text = Hossz(x1, y1).tostring("f"); textbox6.text = Hossz(x, y).tostring("f"); textbox7.text = Meredekség(x1, y1).tostring("f"); textbox8.text = Meredekség(x, y).tostring("f"); checkbox1.checked = MerőlegesE(x1, y1, x, y); checkbox.checked = PárhuzamosE(x1, y1, x, y); SkalárisSzorzat(x1, y1, x, y, out szorzat); SzögSzámít(x1, y1, x, y, out alfa); textbox9.text = szorzat.tostring("f"); textbox10.text = alfa.tostring("f"); Normál(ref x1, ref y1); Normál(ref x, ref y); textbox11.text = x1.tostring("f"); textbox1.text = y1.tostring("f"); textbox13.text = x.tostring("f"); textbox14.text = y.tostring("f"); catch (Exception ex) MessageBox.Show(ex.Message); 4
private double Hossz(double v1, double v) return Math.Sqrt(v1 * v1 + v * v); private double Meredekség(double v1, double v) return v / v1; private bool MerőlegesE(double v1, double v, double u1, double u) return Meredekség(v1, v) * Meredekség(u1, u) == -1; private bool PárhuzamosE(double v1, double v, double u1, double u) return Math.Abs(Meredekség(v1, v) - Meredekség(u1, u)) < 0.001; private void SkalárisSzorzat(double v1, double v, double u1, double u, out double s) s = v1 * u1 + v * u; private void SzögSzámít(double v1, double v, double u1, double u, out double sz) double skaláris; SkalárisSzorzat(v1, v, u1, u, out skaláris); sz = Math.Acos(skaláris / (Hossz(v1, v) * Hossz(u1, u))) / Math.PI * 180; private void Normál(ref double v1, ref double v) double h=hossz(v1, v); v1 /= h; v /= h; private void button_click(object sender, EventArgs e) textbox1.text = textbox.text = textbox3.text = ""; textbox4.text = textbox5.text = textbox6.text = ""; textbox7.text = textbox8.text = textbox9.text = ""; textbox10.text = textbox11.text = textbox1.text = ""; textbox13.text = textbox14.text = ""; 5
Gyakorló feladatok - Elágazások 1. Írjon Windows Forms alkalmazást, mely bekéri az a, b, c valós számokat, és eldönti, hogy azok lehetnek-e egy derékszögű háromszög oldalhosszúságai. Arra vonatkozóan nincs információ, hogy melyik két oldal a két befogó! A megoldáshoz használja Pitagorasz-tételét!. Írjon konzolalkalmazást, mely beolvas három valós számot, és eldönti, hogy azok lehetnek-e egy általános háromszög oldalai! A megoldáshoz használja a háromszög egyenlőtlenséget, mely szerint egy háromszögben bármely oldal hosszának nagyobbnak kell lennie a másik két oldal hosszának összegénél. 3. Írjon Windows Forms alkalmazást, mely bekéri a víz hőmérsékletét, majd eldönti, hogy az milyen halmazállapotú! A halmazállapot lehet a hőmérséklettől függően folyékony (0-100), gőz, (>=100) vagy jég (<=0). A halmazállapot kijelzéséhez használjon CheckBox vezérlőket! Ügyeljen arra, hogy a nulla fokos víz folyékony is és jég is lehet! 4. Írjon Windows Forms alkalmazást, mely egy tetszőleges síkbeli pont koordinátái alapján meghatározza, hogy a pont melyik síknegyedben található! Jelezze azt is, ha a pont az origó, vagy ha valamelyik koordináta-tengelyen van! A síknegyedek számozása az óramutató járásával megegyezően történik a jobb felsőtől indulva. 5. Írjon Windows Forms alkalmazást, mely bekér két egész számot, és megvizsgálja, hogy oszthatóe bármelyik a másikkal! Ügyeljen arra, hogy nullával nem lehet osztani! Írja ki az osztás eredményét is! A programban valósítson meg ellenőrzött adatbevitelt! 6. Írjon Windows Forms alkalmazást, mely bekér egy valós számot, melyet tekintsen egy szög mérőszámának fokban. Állapítsa meg a szög fajtáját - nullszög, hegyesszög, derékszög, tompaszög, egyenesszög, konkáv szög, teljes szög! A szögfajták megjelenítéséhez használjon GroupBox és RadioButton vezérlőket! 7. Írjon konzolalkalmazást, amely generál egy véletlen, bájt hosszúságú, 0 és 17 közötti értéket, majd kiírja, hogy az ilyen kódú karakter vezérlő karakter (0-31), írásjel, nagybetű (65-90), kisbetű (97-1), szóköz (3) vagy számjegy-e (48-57)! Írásjel az a karakter, melyek kódja eltér a felsoroltaktól. Ha a karakter nyomtatható (kód>3), jelenítse is meg! 8. Írjon Windows Forms alkalmazást, mely bekér egy 1-1 közötti értéket, majd kiírja, hogy az ilyen sorszámú hónap melyik évszakba esik! Jelezze azt is, hogy az adott hónap hány napos 8, 9, 30, 31. A program kezelje helyesen a szökőéveket is! Az évszakok és napok kijelzéséhez használjon rádiógombokat! Üzenetablakban jelezze, ha nem egész számot adott meg a felhasználó, illetve, ha az érték nem 1-1 közötti! (switch) 9. Készítsen konzolalkalmazást, mely bekér egy egész számot, amit tekintsen egy budapesti kerület számának! A program írja ki, hogy az ilyen sorszámú budapesti kerület a budai vagy a pesti oldalon van-e! A program ellenőrizze azt is, hogy a megadott szám 1 és 3 közötti érték-e, ha nem küldjön hibajelzést! (switch) 10. Írjon Windows Forms alkalmazást, mely két valós szám között elvégzi a négy alapművelet vagy a hatványozás valamelyikét! A műveletek kijelzésére használjon rádiógombokat! Hibás adatbevitel esetén, vagy ha az osztó nulla, küldjön hibajelzést! (switch) 11. Készítsen konzolalkalmazást, mely generál egy 1-7 közötti egész számot, ami a hét valamely napjának sorszáma! A program írja ki a nap nevét betűvel, illetve azt, hogy az adott nap hétköznapra vagy hétvégére esik! (switch) 1. Írjon konzolalkalmazást egy véletlenszerűen előállított, egész összeg kerekítésére a magyar kerekítési szabályok alapján. (1, és 6, 7 lefele, 3, 4, és 8, 9 felfele kerekítendő a megfelelő 5-el osztható számra)! (switch) 6
Gyakorló feladatok - metódusok 1. Konzolalkalmazásban írjon metódust a háromszög köré írható kör sugarának (R=a/( sin( )) kiszámítására! Paraméterek: a háromszög egy oldalának hossza és a vele szemközti szög radiánban, visszaadott érték a köré írt kör sugara! Használja a metódust az a=7, =0,5 radián adatokkal rendelkező háromszög köré írható kör sugarának kiszámítására!. Windows Forms alkalmazásban írjon metódust a vertikális hőmérsékletváltozás értékének kiszámítására (H=H0-M/100*C, ahol H0 a tengerszinten mért hőmérséklet, M a magasság méterben, C a hőmérséklet csökkenés 100 méterenként. C értéke 1500 méter alatt 1 Celsius fok, a fölött 0,5 Celsius fok). A H0, M és H adatokat paraméterlistán adja át! Az adatbevitelhez és az eredmény megjelenítéséhez készítsen formot! 3. Készítsen konzolalkalmazást, mely beolvas három számot, kiszámítja azok páronkénti négyzetes közepét, és kiírja őket a felhasználó kérése szerint növekvő vagy csökkenő sorrendben! A feladat megoldásához írja meg a következő metódusokat! a. Metódus két szám négyzetes közepének kiszámítására! Négyzetes közép alatt két szám négyzete számtani közepének négyzetgyökét értjük ( N szám, visszaadott érték a négyzetes közép! a b )! Paraméterek: két b. Metódus két valós szám értékének megcserélésére! A metódus paraméterei a számok. c. Metódus három szám sorba rendezésére! Paraméterek a három szám és a rendezés irányát jelző logikai érték! 4. Készítsen Windows Forms alkalmazást egy szakaszt adott arányban osztó pont koordinátáinak meghatározására! A feladat megoldásához írja meg a következő metódusokat! a. Metódus az u=(m*u1+n*u)/(n+m) érték kiszámítására. Paraméterek: u1, u, n, m, visszaadott érték a kiszámított u érték! b. Metódus, amivel egy szakaszt adott arányban osztó pont koordinátái számíthatók ki! A metódus bemenő paraméterei a szakasz két végpontjának koordinátái és n, valamint m értéke, kimenő paraméterei az osztópont koordinátái. 5. Hozzon létre Windows Forms alkalmazást egy háromszög köré írható és beírható körök sugarának kiszámítására! Az alkalmazás egyszerre csak az egyik sugarat számítsa ki a felhasználó választásától függően! A feladat megoldásához írja meg a következő metódusokat! a. Metódus a háromszög területének kiszámítására az oldalakból a Héron-képlet segítségével! Paraméterek: az oldalak, visszaadott érték a terület! t = s(s a)(s b)(s c), ahol s = a+b+c b. Metódus a háromszög köré írható kör sugarának kiszámítása (R=a b c/(4 T))! Paraméterek: a háromszög oldalai, visszaadott érték a köré írható kör sugara! c. Metódus a háromszögbe írható kör sugarának kiszámítása (r= T/(a+b+c))! Bemenő araméterek: a háromszög oldalai, kimenő paraméter a körbe írható kör sugara! d. Metódus, mely egy paraméter igaz vagy hamis értékétől függően kiszámítja a háromszög köré vagy bele írható kör sugarát! További paraméterek: a háromszög oldalai, visszaadott érték a sugár! 7