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

C# MŰHELY

C# MŰHELY

OSZTÁLY: Kalkulátor

2021. november 25. - Benkő Tiborné

Írjunk programot, amely osztállyal oldja meg a kalkulátor működését  a négy alapművelettel.

A feladat megoldása:

       // Kalkulátor osztály
        class Kalkulátor
        {
            // adatmezők deklarációja
            private double szám1, szám2, ered;
            private char művjel;

            // paraméteres konstruktor
            public Kalkulátor(double sz1, double sz2, char mjel)
            {
                szám1 = sz1; szám2 = sz2; művjel = mjel;
                ered = 0;
            }

            // Metódusok
            public void Művelet()
            {
                switch (művjel)
                {
                    case '+': ered = szám1 + szám2; break;
                    case '-': ered = szám1 - szám2; break;
                    case '*': ered = szám1 * szám2; break;
                    case '/': ered = szám1 / szám2; break;
                }
             }

            // Visszaadja az ered tartalmát
            public double Ered
            {
                get
                {
                    return ered;
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            double a, b;
            char műv;
            int hiba = 0; 
            if (textBox1.Text != "" && textBox2.Text != ""
                && textBox3.Text != "")
            {
                a = Double.Parse(textBox1.Text);
                b = Double.Parse(textBox2.Text);
                műv = Char.Parse(textBox3.Text);
                if (műv == '/' && b == 0)
                {
                     MessageBox.Show("0 az osztandó értéke!");
                }
                                        else
                {
                    switch (műv)
                    {
                        case '+':
                        case '-';
                        case '*':
                        case '/': hiba = 0; break;
                        default:
                            hiba = 1;
                            MessageBox.Show("Hibás a műveleti jel!",
                                            "Hibajelzés!");
                            break;
                    }
                    if (hiba == 0)
                    {
                        Kalkulátor k = new Kalkulátor(a, b, műv);
                        k.Művelet();
                        textBox4.Text = k.Ered.ToString("#.####");
                    }
                }
            }
        }

        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:

     

     

 

 

STRUKTÚRA: Kalkulátor

Írjunk programot, amely struktúrával oldja meg a kalkulátor működését  a négy alapművelettel.

A  feladat megoldása:

        struct Kalkulátor
        {
            // pédánymező
            private double szám1, szám2, ered;
            private char művjel;

            // paraméteres konstruktor
            public Kalkulátor(double sz1, double sz2, char mjel)
           {
                szám1 = sz1; szám2 = sz2; művjel = mjel;     
                ered = 0;         
           }

            // közönséges metódus
            public double Művelet()
            {   
                switch (művjel)
                {
                    case '+': ered = szám1 + szám2; break;      
                    case '-': ered = szám1 - szám2; break;  
                    case '*': ered = szám1 * szám2; break;  
                    case '/': ered = szám1 / szám2; break;  
               }
               return ered;
           }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dou
ble a, b;
            char műv;
            int hiba = 0;

            if (textBox1.Text != "" && textBox2.Text != ""
                && textBox3.Text != "")
            {
                a = Double.Parse(textBox1.Text);
                b = Double.Parse(textBox2.Text);
                műv = Char.Parse(textBox3.Text);
                if (műv == '/' && b == 0)
                {
                    MessageBox.Show("0 az osztandó értéke!");
                }
                else
                {
                    switch (műv)
                    {
                        case '+':
                        case '-':
                        case '*':
                        case '/': hiba = 0; break;
                        default: hiba = 1;
                            MessageBox.Show("Hibás a műveleti jel!",
                                            "Hibajelzés!");
                            break;
                    }
                    if (hiba == 0)
                    {
                      Kalkulátor k = new Kalkulátor(a, b, műv);
                      textBox4.Text = k.Művelet().ToString("#.####");
                    }
                }
            }
        }

        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:

  

 

       

FÜGGVÉNY: Kalkulátor

Írjunk programot, amely függvénnyel oldja meg a kalkulátor működését a négy alapvető műveletre.

A feladat megoldása:

            static double Kalkulátor(double szám1, double szám2,
                                 char művjel)
 
        {
            double ered = 0;
            switch (művjel)
            {
                case '+': ered = szám1 + szám2;break;        
                case '-': ered = szám1 - szám2; break;   
                case '*': ered = szám1 * szám2; break;   
                case '/': ered = szám1 / szám2; break
                default:
                     MessageBox.Show("Hibás a műveleti jel!",
                     "Hibajelzés!");
                      break;
            }
            return ered;
        }

        private void button1_Click(object sender, EventArgs e)
        {   
            double a, b, eredmény;
            char műv;
            if (textBox1.Text != "" && textBox2.Text != ""
                && textBox3.Text != "")
            {
                a = Double.Parse(textBox1.Text);
                b = Double.Parse(textBox2.Text);
                műv = Char.Parse(textBox3.Text);
                if (műv == '/' && b == 0)
                {
                    MessageBox.Show(" 0 az osztandó értéke!");
                }
                else
                {
                    eredmény = Kalkulátor(a, b, műv);
                    textBox4.Text = eredmény.ToString();
                }
            }
        }

        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:

   

     

Kalkulátor

Írjunk programot, amely kalkulátorként a négy alapvető műveletet kezeli.

 A feladat megoldása:

            private void button1_Click(object sender, EventArgs e)
       {
            double a, b, ered;
            char műv;
            if (textBox1.Text != "" && textBox2.Text != ""  &&
                textBox3.Text != "")
            {
                a = Double.Parse(textBox1.Text);
                b = Double.Parse(textBox2.Text);
                műv = Char.Parse(textBox3.Text);
                switch (műv)
                {
                    case '+': ered = a + b;
                        textBox4.Text = "Összeadás: " +
                                        ered.ToString();
                        break;
                    case '-': ered = a - b;
                        textBox4.Text = "Kivonás: " +
                                        ered.ToString();
                        break;
                    case '*': ered = a * b;
                        textBox4.Text = "Szorzás: " +
                                        ered.ToString();
                        break;
                    case '/':
                        if (b != 0)
                        {
                            ered = a / b;
                            textBox4.Text = "Osztás: " + e
                                            ered.ToString();
                        }
                        else
                           MessageBox
.Show(" 0 az osztandó értéke!");
                        break;

                     default: MessageBox.Show("hibás műveleti jel! ");
                              textBox3.Text = "";
                              return;
             

                }
            }
        }

        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:

  

    

    

Véletlen számokkal feltöltött vektor skalárszorzata

Írjunk programot, amely megadott méretű és megadott max. értékű véletlen számokkal feltöltött vektor skalárszorzatát számítja ki,

A feladat megoldása

        private void Számol_Click(object sender, EventArgs e)
        {
            int[] x;
            int[] y;
            int i, db, max, sk = 0;
            Random m;
            listBox1.Items.Clear();
            listBox2.Items.Clear();
            if (textBox2.Text != "" && textBox3.Text != "")
            {
                db = Int32.Parse(textBox2.Text);
                max = Int32.Parse(textBox3.Text);
                m = new Random();
                x = new int[db];
                y = new int[db];
                for (i = 0; i < db; i++)
                {
                    x[i] = m.Next(max) + 1;
                    y[i] = m.Next(max) + 1;
                    listBox1.Items.Add(x[i]);
                    listBox2.Items.Add(y[i]);
                    sk += x[i] * y[i];
                }
                textBox1.Text = sk.ToString();
            }
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            textBox1.Text = "";
            listBox1.Items.Clear();
            listBox2.Items.Clear();
        } 

        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            textBox1.Text = "";
            listBox1.Items.Clear();
            listBox2.Items.Clear();
       }

A program futási eredményei:

Kezdőértékkel adott vektorok skalárszorzata

Írjunk programot, amely kezdőértékkel adott vektorok skalárszorzatát számítja ki.

A feladat megoldása:

         private void Számol_Click(object sender, EventArgs e)
         {
            int[] x = new int[4] { 1, 2, 3, 4 };
            int[] y = new int[4] { 2, 3, 4, 5 };
            int i, sk = 0;
            listBox1.Items.Clear();
            listBox2.Items.Clear();

            for(i = 0; i< x.Length; i++)
            {
                sk += x[i] * y[i];
                listBox1.Items.Add(x[i]);
                listBox2.Items.Add(y[i]);
            }
            textBox1.Text = sk.ToString();
        }

A program futási eredménye:

STRUKTÚRA: Komplex számok műveletei

Írjunk programot, amely beolvas 2 komplex számot és elvégzi a két komplex szám összeadását, kivonását, szorzását és osztását. Az adatokat olvassuk be és ellenőrizzük le, ha az adatok rendben vannak, kijelölhetjük a kívánt műveletet.

A feladat megoldása:

                  public struct Komplex
        {
            public double re;
            public double im;
        } 

        Komplex K1 = new Komplex();
        Komplex K2 = new Komplex();
        Komplex Ered = new Komplex();

           int OK = 0;

        public void Összead(Komplex k1, Komplex k2, out Komplex ered)
        {
            ered.re = k1.re + k2.re;
            ered.im = k1.im + k2.im;
        }

        public void Kivonás(Komplex k1, Komplex k2, out Komplex ered)
        {
            ered.re = k1.re - k2.re;
            ered.im = k1.im - k2.im;
        }

        public void Szorzás(Komplex k1, Komplex k2, out Komplex ered)
        {
            ered.re = k1.re * k2.re - k1.im * k2.im;
            ered.im = k1.re * k2.im + k1.im * k2.re;
        }

        public void Osztás(Komplex k1, Komplex k2, out Komplex ered)
        {
             ered.re = (k1.re * k2.re + k1.im * k2.im) /
                       (k2.re * k2.re + k2.im * k2.im);
             ered.im = (k1.im * k2.re - k1.re * k2.im) /
                       (k2.re * k2.re + k2.im * k2.im);
        } 

        // összeadás
        private void radioButton1_CheckedChanged(object sender,
                                                 EventArgs e)
        {
            if (OK == 1)
            {
                Összead(K1, K2, out Ered);
                textBox5.Text = Ered.re.ToString();
                textBox6.Text = Ered.im.ToString();
            }
            else
            {
                radioButton1.Checked = false;
                textBox5.Text = "Adatok beolvasása!";
            }
        }

        // kivonás
        private void radioButton2_CheckedChanged(object sender,
                                                 EventArgs e)
        {
            if (OK == 1)
            {
                Kivonás(K1, K2, out Ered);
                textBox5.Text = Ered.re.ToString();
                textBox6.Text = Ered.im.ToString();
            }
            else
            {
                radioButton2.Checked = false;
                textBox5.Text = "Adatok beolvasása!";
            }

        }

        //szorzás
           private void radioButton3_CheckedChanged(object sender,
                                                 EventArgs e)

        {
            if (OK == 1)
            {
                Szorzás(K1, K2, out Ered);
                textBox5.Text = Ered.re.ToString();
                textBox6.Text = Ered.im.ToString();
            }
            else
            {
                radioButton3.Checked = false;
                textBox5.Text = "Adatok beolvasása!";
            }

        }

        // osztás
        private void radioButton4_CheckedChanged(object sender,
                                                 EventArgs e)
        {
            if (OK == 1)
            {
                Osztás(K1, K2, out Ered);
                textBox5.Text = Ered.re.ToString();
                textBox6.Text = Ered.im.ToString();
            }
            else
            {
                radioButton4.Checked = false;
                textBox5.Text = "Adatok beolvasása!";
            }

        }

        private void Ellenőrzés_Click(object sender, EventArgs e)
        {
            textBox5.Text = ""; textBox6.Text = "";
            if(textBox1.Text != "" && textBox2.Text != "" &&
               textBox3.Text != ""  && 
textBox4.Text != "")
            {
                K1.re = Double.Parse(textBox1.Text);
                K1.im = Double.Parse(textBox2.Text);
                K2.re = Double.Parse(textBox3.Text);
                K2.im = Double.Parse(textBox4.Text);

                MessageBox.Show("OK, Műveletek végrehajthatók!");
                OK = 1;            
            }
            else
            {
                OK = 0;
                MessageBox.Show("Hiányos adatmegadás!");
            }
      }

       private void textBox1_TextChanged(object sender, EventArgs e)
       {
            OK = 0; textBox5.Text = ""; textBox6.Text = "";
           
 radioButton1.Checked = false;
            radioButton2.Checked = false;
            radioButton3.Checked = false;
            radioButton4.Checked = false;

       }

       private void textBox2_TextChanged(object sender, EventArgs e )
       {
           OK = 0; textBox5.Text = ""; textBox6.Text = "";
           
 radioButton1.Checked = false;
            radioButton2.Checked = false;
            radioButton3.Checked = false;
            radioButton4.Checked = false;
     
       }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            OK = 0; textBox5.Text = ""; textBox6.Text = "";
           
 radioButton1.Checked = false;
            radioButton2.Checked = false;
            radioButton3.Checked = false;
            radioButton4.Checked = false;
         
        }         

        private void textBox4_TextChanged(object sender, EventArgs e)
        {
            OK = 0; textBox5.Text = ""; textBox6.Text = "";
           
 radioButton1.Checked = false;
            radioButton2.Checked = false;
            radioButton3.Checked = false;
            radioButton4.Checked = false;
       
        }

A program futási eredményei:

 

 

FÜGGVÉNY: Bináris szám 0 és 1 bitjeinek száma

Írjunk programot, amely pozitív egész számnak megjeleníti a bináris alakját.és megszámlálja 0 és 1-es biteket.

A feladat megoldása:

         static string Konvertáló(int szám)
        {
            const uint ALAP = 2;
            uint 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;
        }

       static void Bit01_számláló(uint n, out uint b0, out uint b1)
       {
            b0 = 0; b1 = 0;
            for (; (n != 0); n >>= 1)
            {
                if ((n & 1) != 0) b1++;
                else b0++;
           }
       }

        private void button1_Click(object sender, EventArgs e)
        {
            int adat;
            uint bit0, bit1, x;
            string bin;
            if (textBox1.Text != "")
            {
                adat = Int32.Parse(textBox1.Text);
                if (adat > 0)
                {
                    x = (uint)adat;
                    bin = Konvertáló(adat);
                    textBox2.Text = bin;
                    Bit01_számláló(x, out bit0, out bit1);
                    textBox3.Text = bit0.ToString();
                    textBox4.Text = bit1.ToString();
                }
                else
                    MessageBox.Show("A szám 0 vagy negatív!",
                                    "Üzenet");
            }
        }

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

A program futási eredményei:

    

 

REKURZIÓ: Kamatos kamat számítása évenkénti bontásban

Írjunk programot, amely rekurzióval számítja ki a kamatos kamat értékét és jelenítsük meg évenkénti bontásban.

A feladat megoldása:

            static double Kamat(int év, double összeg, double kamatláb)
        {
            if (év == 0) { return összeg; }
            else
            {
                összeg = összeg * (1.0 + kamatláb / 100.0);
                return Kamat(év - 1,összeg, kamatláb);
            }
        }
       

        private void button1_Click(object sender, EventArgs e)
        {
            int év, i;
            double ered, összeg, kamatláb;
            string s;
            if (textBox1.Text != "" && textBox2.Text != "" &&
                textBox3.Text != "")
            {
                összeg = Double.Parse(textBox1.Text);
                kamatláb = Double.Parse(textBox2.Text);
                év = Int32.Parse(textBox3.Text);
                ered = Kamat(év, összeg, kamatláb);
                textBox4.Text = ered.ToString("#.#####");
                listBox1.Items.Clear();
                for (i = 1; i <= év; i++)
                {
                     ered = Kamat(i, összeg, kamatláb);
                     s = i.ToString("#.#####") +
                                    ". év végén az összeg: "
                                    + ered.ToString();
                     listBox1.Items.Add(s);                
                }
            }
        }

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

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

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

A program futási eredményei:

CIKLUS: Kamatos kamat számítása évenkénti bontásban

Írjunk programot, amely egy adott összegek adott kamat mellett kiszámítja a kamatos kamattal megnövelt értékét évenkénti bontásban.

A feladat megoldása:

                                    private void Számítáa_Click(object sender, EventArgs e)
            {
                int i, év;
                double összeg, kamatláb;
                string s;
                listBox1.Items.Clear();
                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);
                        s = " " + i.ToString() +
                            ".   év végén az összeg:  " +
                            összeg.ToString("#.#####") + " Ft";
                        listBox1.Items.Add(s);
                    }
                    textBox4.Text = " " + év.ToString() +
                                    ".   év végén az összeg:  " +
                                    összeg.ToString("#.#####")
                                    + " Ft";
                }
             }

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

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

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

A program futási eredményei:

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