BME MOGI Gépészeti informatika 4. 1. feladat önálló feladatmegoldás Generáljon két 1 és 10 közötti véletlen egész számot, majd kiírja ezekre a számokra a tízes szorzótáblákat! Ha az első generált szám nagyobb a másodiknál, cserélje meg a két változó értékét! Megoldási mód: konzolalkalmazás Oktatási cél: változók értékcseréjének, ciklusok egymásba írásának bemutatása A programkód: static void Main(string[] args) Random rnd = new Random(); int n = rnd.next(1, 11); int m = rnd.next(1, 11); int s = 0; if (n>m) // csere s = n; n = m; m = s; for (int i = 1; i <=10; i++) Console.Write("0,5\t",i); for (int j = n; j <= m; j++) Console.Write("0,5", i * j); Console.WriteLine(); Console.ReadLine(); 1
2. feladat önálló feladatmegoldás Írjon programot, mely bekéri egy másodfokú egyenlet három együtthatójának értékét, majd megvizsgálja, hogy az egyenlet megoldható-e valós számkörben, ha igen, akkor kiszámítja a gyököket, ha nem, azt üzenettel jelzi! A program küldjön hibajelzést, ha az A együttható értéke nulla! A feladat megoldásához írja meg a következő metódusokat! a. Metódus egy másodfokú egyenlet megoldhatóságának vizsgálatára! Bemenő paraméter a három együttható, a visszaadott érték az igaz logikai érték, ha az egyenletnek van valós megoldása, különben a hamis logikai érték! b. Írjon metódust, mely egy sztring értékét alakítja valós számmá! Az üres sztring megengedett érték, ekkor a szám értéke nulla legyen! Ha az átalakítás nem sikerült generáljon hibát! Bemenő paraméter a sztring, kimenő paraméter a szám, visszaadott érték az igaz logikai érték, ha az átalakítás sikeres volt, különben a hamis logikai érték! Megoldási mód: Windows Forms alkalmazás Oktatási cél: az eddig tanult ismeretek alkalmazásának gyakoroltatása Az elkészítendő form: A Form1 osztályba írandó programkód: private void button1_click(object sender, EventArgs e) double a=0, b=0, c=0, x1=0, x2=0; try if (!Beolvas(textBox1.Text, out a)!beolvas(textbox2.text, out b)!beolvas(textbox3.text, out c)) if (a==0) 2
MessageBox.Show("Az A együttható nem lehet nulla"); if (Megoldható(a,b,c)) x1 = (-b + Math.Sqrt(b * b - 4 * a * c)) / (2 * a); x2 = (-b - Math.Sqrt(b * b - 4 * a * c)) / (2 * a); textbox4.text = x1.tostring ("F2"); textbox5.text = x2.tostring("f2"); textbox4.text = textbox5.text = "nincs megoldás"; catch (Exception ex) MessageBox.Show(ex.Message); public static bool Beolvas(string mező, out double változó) bool vissza = true; if (mező == "") változó = 0; vissza = double.tryparse(mező, out változó); if (!vissza) throw new FormatException("Formátumhiba! " + mező); return vissza; private bool Megoldható(double a, double b, double c) return b * b - 4 * a * c >= 0; private void button2_click(object sender, EventArgs e) textbox1.text = textbox2.text = textbox3.text = textbox4.text = textbox5.text = ""; 3. feladat önálló feldolgozásra Írjon programot számtani vagy mértani sorozat adott tartományba eső, legfeljebb adott számú elemének kiírására! Az adatbevitelt az alábbi form szerint oldja meg, az elemeket ListBox vezérlőben jelenítse meg! Használja a programban a 2. b. pontban leírt metódust az egész értékek beolvasására! Megoldási mód: Windows Forms alkalmazás Oktatási cél: az eddig tanult ismeretek gyakoroltatása 3
Az elkészítendő form: A Form1 osztályba írandó programkód: private void Form1_Load(object sender, EventArgs e) radiobutton1.checked = true; public static bool Beolvas(string mező, out double változó) bool vissza = true; if (mező == "") változó = 0; vissza = double.tryparse(mező, out változó); if (!vissza) throw new FormatException("Formátumhiba! " + mező); return vissza; private void button2_click(object sender, EventArgs e) double alsó, felső, első, lépés, elem=0, darab; bool számtanie = radiobutton1.checked; listbox1.items.clear(); if (!Beolvas(textBox1.Text, out alsó)!beolvas(textbox2.text, out felső) 4
!Beolvas(textBox3.Text, out első)!beolvas(textbox4.text, out lépés)!beolvas(textbox5.text, out darab)) if (!számtanie && lépés==0) MessageBox.Show("A mértani sorozat hányadosa nem lehet nulla!"); bool bent = false, kint = true; int db = 0; for (elem = első; (bent kint) && (db<darab); db++) if (elem >= alsó && elem <= felső) listbox1.items.add(elem.tostring()); bent = true; kint = false; if (bent) bent = false; if (számtanie) elem += lépés; elem *= lépés; 5