C# programok ismertetése érdeklődőknek kezdőktől haladókig

C# MŰHELY

C# MŰHELY

CIKLUS: Kamatos kamat számítása

2021. február 16. - Benkő Tiborné

Írjunk programot, amely az adott pénzösszegnek, adott kamat mellett a kívánt időtartamra kiszámítja a kamatos kamattal megnövelt összeget.

A feladat megoldása:

            private void Számítáa_Click(object sender, EventArgs e)
        {
            int i, év;
            double összeg, kamatláb;
            if (textBox1.Text != "" && textBox2.Text != "")
            {
                összeg = Double.Parse(textBox1.Text);
                kamatláb = Double.Parse(textBox2.Text);
                do
                {
                     év = Int32.Parse(textBox3.Text);
                } while (év < 1 || év > 10);
                for (i = 1; i <= év; i++)
                {
                     összeg *= (1 + kamatláb / 100);
                }
                textBox4.Text = " " + év.ToString() +
                                ".   év végén az összeg:  " +
                                összeg.ToString("#.#####" + " Ft");
           }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
             textBox4.Text = "";
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
             textBox4.Text = "";
        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {
              textBox4.Text = "";
        }

A program futási eredményei:

   

 

 

REKURZIÓ: Hatvány számítása

Írjunk programot, amely rekurzióval számítja ki a hatvány értékét.

A feladat megoldása:

                        static doubleuble  x, int n)
        {
            if (n == 0) return 1;
            else return (x * hatv(x, n - 1))
        }

        private void button1_Click(object sender, EventArgs e)
        {
            double alap, hatvány;
            int kitevő;
            if (textBox1.Text != "" && textBox2.Text != "")
            {
                alap = Double.Parse(textBox1.Text);
                kitevő = Int32.Parse(textBox2.Text);
                if(kitevő < 0)
                {
                    hatvány = hatv(alap, -kitevő);
                    hatvány = 1.0 / hatvány;
                }
                else
                    hatvány = hatv(alap, kitevő);
                textBox3.Text = hatvány.ToString(); 
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
             textBox3.Text = "";
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
             textBox3.Text = "";
        }

A program futási eredményei:

    

 

FÜGGVÉNY. Hatvány számítása

Írjunk programot, amely függvénnyel kétféle módon számítja ki a hatvány értékét: matematikai függvénnyel, valamint ciklus utasítással.

A feladat megoldása:

        // Matematikai függvénnyel
        static double hatvFg(double x, int n)
        {
            if (n == 0) return 1;
            if (n < 0)
                return 1.0 / Math.Pow(x, -n);
            else
                return Math.Pow(x, n);
        }

        // Ciklus utasítással
        static double hatvCiklussal(double x, int n)
        {
            int i;
            double ered;
            if (n == 0) return 1;
            ered = 1;
            for (i = 1; i <= Math.Abs(n); i++)
                ered *= x;
            if (n < 0)
                ered = 1.0 / ered;
            return ered;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            double alap, hatvány;
            int kitevő;
            if (textBox1.Text != "" && textBox2.Text != "")
            {
                alap = Double.Parse(textBox1.Text);
                kitevő = Int32.Parse(textBox2.Text);
                hatvány = hatvFg(alap, kitevő);
                textBox3.Text = hatvány.ToString();
                hatvány = hatvCiklussal(alap, kitevő);
                textBox4.Text = hatvány.ToString();
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
             textBox3.Text = ""; textBox4.Text = "";
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
              textBox3.Text = ""; textBox4.Text = "";
        }

A program futási eredményei:

   

   

   

 

 

REKURZIÓ: Faktoriális számítása

Írjunk programot, amely rekurzióval számítja ki a faktoriális értékét,.

A feladat megoldása:

        static ulong Faktoriális(ulong n)
        {    
            if (n > 1)
                return n*Faktoriális(n-1);
            else
                return 1;

         }

        private void button1_Click(object sender, EventArgs e)
        {
            ulong k, eredmény;
            if(textBox1.Text != "")
            {
                k = UInt64.Parse(textBox1.Text);
                eredmény = Faktoriális(k);
                textBox2.Text = eredmény.ToString();
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            textBox2.Text = "";
        }

A program futási eredményei:

FÜGGVÉNY: Faktoriális számítása

Írjunk programot, amely függvénnyel számítja ki a faktoriális értékét, negatív szám esetén adjon hibajelzést.

A feladat megoldása:

           static ulong Faktoriális(ulong n)
        {
            ulong i, f = 1;
            if (n > 1)
            {
                 for (i = 1; i <= n; i++)
                     f *= i;
                 return f;
            }
            else
               return 1;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ulong k, eredmény;
            long a;
            if (textBox1.Text != "")
            {
                a = Int64.Parse(textBox1.Text);
                if (a >= 0)
                {
                    k = (UInt64)a;
                    eredmény = Faktoriális(k);
                    textBox2.Text = eredmény.ToString();
                }
                else
                {
                    MessageBox.Show("A szám negatív!", "Hibajelés");
                    textBox1.Text = "";
                }
            }
         }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
             textBox2.Text = "";
        }

A program futási értékei:

   

FÜGGVÉNY: Másodfokú egyenlet megoldása

Írjunk programot, amely függvénnyel oldja meg a másodfokú egyenlet együtthatóinak ismeretében az egyenlet gyökeit.

A feladat megoldása:

           double a, b, c;
        static int adat = 0;
        static void MásodFg(double a, double b, double c,
                            out string s,
                            out int kód,
                            out double x1,out double x2,
                            out double xk1, 
                            out double xk2)
       {
            double d; x1 = 0; x2 = 0; xk1 = 0; xk2 = 0;
            kód = 0; s = "";
            if (adat == 1)
            {
               if (a == 0)
               {
                  if (b == 0)
                  {
                     if (c == 0)
                     {
                         s =
                      "Az egyenletnek bármelyik szám a megoldása!";
                     }
                     else
                     {
                         s = "Ellentmondás, nincs megoldás!";
                     }
                }
                else
                {
                    x1 = -c / b;
                    s = "Az egyenlet elsőfokú. ";
                    kód = 1;
                }
             }
             else
             { 
                d = b * b - 4 * a * c;
                if (d == 0)
                {
                   x1 = -b / (2 * a);
                   s = "Egybeeső gyök.";
                   kód = 2;
                }
                else if (d > 0)
                {
                   x1 = (-b + Math.Sqrt(d)) / (2 * a);
                   x2 = (-b - Math.Sqrt(d)) / (2 * a);
                   s = "Valós gyökök.";
                   kód = 3;
                }
                else
                {
                   x1 = -b / (2 * a);
                   xk1 = Math.Sqrt(Math.Abs(d)) / (2 * a);
                   xk2 = -xk1;
                   s = "Komplex gyökök.";
                   kód = 4;
                }
              } 
            }
            else
                MessageBox.Show("Nincs adat megadva!");
        }

        private void Olvasás_Click(object sender, EventArgs e)
        {
            adat=0;
            if (textBox1.Text != "" && textBox2.Text != "" &&
                textBox3.Text != "")
            {
                a = Double.Parse(textBox1.Text);
                b = Double.Parse(textBox2.Text);
                c = Double.Parse(textBox3.Text);
                adat = 1;
            }
        }

        private void Megoldás_Click(object sender, EventArgs e)
        {
            string s;
            int kód;
            double x1, x2, xk1, xk2;
            MásodFg(a, b, c, out s, out kód, out x1,
                    out x2, out xk1, out  xk2);
            textBox8.Text = s;

            switch (kód)
            {
                case 1: textBox4.Text = x1.ToString();
                        break;
                case 2: textBox4.Text = x1.ToString();
                        break;
                case 3: textBox4.Text = x1.ToString();
                        textBox5.Text = x2.ToString();
                        break;
                case 4: textBox4.Text = x1.ToString();
                        textBox5.Text = x1.ToString();
                        textBox6.Text = xk1.ToString();
                        textBox7.Text = xk2.ToString();
                        break;
             }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            textBox4.Text = ""; textBox5.Text = "";
            textBox6.Text = ""; t
extBox7.Text = "";
            textBox8.Text = ""; adat = 0;
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            textBox4.Text = ""; textBox5.Text = "";
            textBox6.Text = "";
 textBox7.Text = "";
            textBox8.Text = ""; adat = 0;
        }

A program futási eredményei:

 

Másodfokú egyenlet megoldása

Írjunk programot, amely a másodokú egyenlet együtthatói ismeretében meghatározza az egyenlet gyökeit.

A feladat megoldása:

        private void Számol_Click(object sender, EventArgs e)
        {
            double a, b, c, d, gyök1, gyök2, xv, xk1, xk2;
            int sign;
            if (textBox1.Text != "" && textBox2.Text != "" &&
                textBox3.Text != "")

            {
                a = Double.Parse(textBox1.Text);
                b = Double.Parse(textBox2.Text);
                c = Double.Parse(textBox3.Text);
                if (a == 0)
                {
                    if (b == 0)
                    {
                        if (c == 0)
                        {
                             textBox8.Text =
                        "Az egyenletnek bármelyik szám a megoldása!";
                        }
                        else
                        {
                             textBox8.Text =
                             "Ellentmondás, nincs megoldás!";
                        }
                    }
                    else
                    {
                        gyök1 = -c / b;
                        textBox8.Text = "Az egyenlet elsőfokú:  " +
                                        gyök1.ToString("#.####");
                    }
                }
                else
                {
                    d = b * b - 4 * a * c;
                    if (d == 0) sign = 0;
                    else sign = (int)(d / Math.Abs(d));
                    switch (sign)
                    {
                       case -1:
                            xv = -b / (2.0 * a);
                            xk1 = Math.Sqrt(Math.Abs(d)) /( 2.0 * a);
                            xk2 = -xk1;
                            textBox8.Text =
                            "Az egyenletnek komplex megoldása van.";
                            textBox6.Text =
                            "" + xv + "  +" + xk1.ToString("#.####");
                            textBox7.Text =
                            "" + xv + "  -" + xk2.ToString("#.####");
                            break;
                       case 0:
                            gyök1 = -b / (2 * a);
                            textBox8.Text =
                            "Az egyenletnek egybeeső gyöke van: "
                            + 
gyök1.ToString();
                            break
                       case 1:
                            gyök1 = (-b + Math.Sqrt(d)) / (2 * a);
                            gyök2 = (-b - Math.Sqrt(d)) / (2 * a);
                            textBox4.Text = gyök1.ToString("#.####");
                            textBox5.Text = gyök2.ToString("#.####");
                            textBox8.Text =
                            "Az egyenletnek két valós gyöke van.";
                            break;
                     }
                 }
             }
        }

        private void Kilépés_Click(object sender, EventArgs e)
        {
             Application.Exit();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            textBox4.Text = ""; textBox5.Text = "";
            textBox6.Text = ""
textBox7.Text = "";
            textBox8.Text = "";
        } 

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            textBox4.Text = ""; textBox5.Text = "";
            textBox6.Text = ""
textBox7.Text = "";
            textBox8.Text = "";
        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            textBox4.Text = ""; textBox5.Text = "";
            textBox6.Text = ""
textBox7.Text = ""
            textBox8.Text = "";
        }

A program futási eredményei:

 

 

 

FÜGGVÉNY: Szökőév vizsgálata

Íjunk programot, amely a megadott évről eldönti, hogy szökőév-e.

A feladat megoldása:

        static int SzökőÉv(int év)
       {
            if (év % 4 == 0 && év % 100 != 0 || év % 400 == 0)
                return 1;
            else
                return 0;
       }

        private void Vizsgálat_Click(object sender, EventArgs e)
        {
            int év;
            if (textBox1.Text != "")
            {
                év = Int32.Parse(textBox1.Text);
                if (SzökőÉv(év) == 1)
                    textBox2.Text = év.ToString() + "  szökőév!";
                else
                    textBox2.Text = év.ToString() + "  nem szökőév!";
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
             textBox2.Text = "";
         }

A program futási eredményei:

    

FÜGGVÉNY: Szökőévek megjelenítése

Írjunk programot, mely az éveknek adott határai között a szökőéveket jeleníti meg.

A feladat megoldása:

        static int SzökőÉv(int év)
        {
            if (év % 4 == 0 && év % 100 != 0 || év % 400 == 0)
                return 1;
            else
                return 0;
        }

        private void Vizsgálat_Click(object sender, EventArgs e)
        {
            int év_mettől, év_meddig, i;
            if (textBox1.Text != "" && textBox2.Text != "")
            {
                év_mettől = Int32.Parse(textBox1.Text);
                év_meddig = Int32.Parse(textBox2.Text);
                listBox1.Items.Clear();
                for (i = év_mettől; i <= év_meddig; i++)
                {
                     if (SzökőÉv(i) == 1)

                         listBox1.Items.Add(i.ToString());
                }
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
             listBox1.Items.Clear();
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
              listBox1.Items.Clear();
        }

A program futási eredményei:

     

FÜGGVÉNY:Bitműveletek, léptetés balra, jobbra, egyes- és ketteskomplemens

Írjunk programot, amely beolvas két pozitív egész számot és a léptetés számát, majd  VAGY, ÉS, KIZÁRÓ VAGY , léptetés balra, léptetés jobbra, egyes- és ketteskomplemens megjelenítése numerikus értékkel és binárisan is.

A feladat megoldása:

        static string Konvertáló(int szám)
        {
            const uint ALAP = 2;
            int maradék, decimális = (uint)szám;
            string bináris = "";
            while (decimális != 0)
            {
                maradék = decimális % ALAP;
                bináris = maradék.ToString() + bináris;
                decimális = decimális / ALAP;
            }
            return bináris;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int a, b, n, eVagy, eÉs, eKizáróvagy, eléptetésB,
                eléptetésJ, 
egyesKompl, kettesKompl;
            string ered;
            if (textBox1.Text != "" && textBox2.Text != "" &&
                textBox3.Text!= "")
            {
                a = Int32.Parse(textBox1.Text);
                b = Int32.Parse(textBox2.Text);
                n = Int32.Parse(textBox3.Text);
               if (a > 0 && b > 0 && n > 0)
               {
                    ered = Konvertáló(a);
                    label11.Text = ered;
                    ered = Konvertáló(b);
                    label12.Text = ered; 
                    eVagy = a | b;
                    textBox4.Text = eVagy.ToString();
                    ered = Konvertáló(eVagy);
                    textBox5.Text = ered;
                    eÉs = a & b;
                    textBox6.Text = eÉs.ToString();
                    ered = Konvertáló(eÉs);
                    textBox7.Text = ered;
                    eKizáróvagy = a ^ b;
                    textBox8.Text = eKizáróvagy.ToString();
                    ered = Konvertáló(eKizáróvagy);
                    textBox9.Text = ered;
                    eléptetésB = a << n;
                    textBox10.Text = eléptetésB.ToString();
                    ered = Konvertáló(eléptetésB);
                    textBox11.Text = ered;
                    eléptetésJ = a >> n;
                    textBox12.Text = eléptetésJ.ToString();
                    ered = Konvertáló(eléptetésJ);
                    textBox13.Text = ered; 
                    egyesKompl = ~a;
                    textBox14.Text = egyesKompl.ToString();
                    ered = Konvertáló(egyesKompl);
                    textBox15.Text = ered;
                    kettesKompl = -a;
                    textBox16.Text = kettesKompl.ToString();
                    ered = Konvertáló(kettesKompl);
                    textBox17.Text = ered;
                }
                else MessageBox.Show("Hibás adat", "Hibajelzés");
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            textBox4.Text = ""; textBox5.Text = "";
            textBox6.Text = ""
textBox7.Text = "";
            textBox8.Text = ""; textBox9.Text = ""
            textBox10.Text = ""; textBox11.Text = "";
            textBox12.Text = ""
textBox13.Text = "";
            textBox14.Text = ""; textBox15.Text = "";
            textBox16.Text = ""; textBox17.Text = "";
            label11.Text = ""; label12.Text = "";
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
       {
            textBox4.Text = ""; textBox5.Text = "";
            textBox6.Text = ""
textBox7.Text = "";
            textBox8.Text = ""; textBox9.Text = ""
            textBox10.Text = ""; textBox11.Text = "";
            textBox12.Text = ""
textBox13.Text = "";
            textBox14.Text = ""; textBox15.Text = "";
            textBox16.Text = ""; textBox17.Text = "";
            label11.Text = ""; label12.Text = "";
    
        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            textBox4.Text = ""; textBox5.Text = "";
            textBox6.Text = ""
textBox7.Text = "";
            textBox8.Text = ""; textBox9.Text = ""
            textBox10.Text = ""; textBox11.Text = "";
            textBox12.Text = ""
textBox13.Text = "";
            textBox14.Text = ""; textBox15.Text = "";
            textBox16.Text = ""; textBox17.Text = "";
            label11.Text = ""; label12.Text = ""; 
 
       }

A program futási eredményei:

süti beállítások módosítása