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

C# MŰHELY

C# MŰHELY

SZTRING: Két szó összefűzése ABC sorrendben

2022. március 08. - Benkő Tiborné

Olvassunk be két gyümölcs nevet, fűzzük össze ABC sorrendben vesszővel elválasztva és MessageBox-ban jelezzük, hogy "Csere volt", "Nem volt csere" vagy "Azonosak." Az összehasonlításra használjuk a Compare(), az összefűzésre a Concat() függvényeket.

A  feladat megoldása:

                       private void button1_Click(object sender, EventArgs e)
        {
            string gy1, gy2, osszefuz;
            if (textBox1.Text != "" && textBox2.Text != "")
            {
                gy1 = textBox1.Text;
                gy2 = textBox2.Text;
                if (String.Compare(gy1, gy2) == 1)
                {
                    osszefuz = String.Concat(gy2, ", ", gy1);
                    textBox3.Text = osszefuz;
                    MessageBox.Show("Csere volt", "Figyelem",
                                     MessageBoxButtons.OK);
                }
                else if (String.Compare(gy1, gy2) == -1)
                {
                    osszefuz = String.Concat(gy1, ", ", gy2);
                    textBox3.Text = osszefuz;
                    MessageBox.Show("Nem volt csere", "Figyelem",
                                     MessageBoxButtons.OK);
                }
                else
                {
                    osszefuz = String.Concat(gy2, ", ", gy1);
                    textBox3.Text = osszefuz;
                    MessageBox.Show("Azonosak", "Figyelem",
                                    MessageBoxButtons.OK);
                }
            }
        }

        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:

    

    

    

 

 

SZTRING: Két szöveg összefűzése Concat használatával.

Olvassunk be  egy vezetéknevet és egy keresztnevet fűzzük össze Concat() metódussal. A teljes név ne legyen  módosítható. 

A feladat megoldása:

        private void Osszefuz_Click(object sender, EventArgs e)

        { 
            string vez_nev, keresztnev, teljes;
            if (textBox1.Text != "" && textBox2.Text != "")
            {
                vez_nev = textBox1.Text;
                keresztnev = textBox2.Text;
                teljes = String.Concat(vez_nev, " ", keresztnev);
                textBox3.ReadOnly = true// csak olvasható
                textBox3.Text = teljes;
            }
        }

        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énye:

 

SZTRING: Két szó helyzete az ABC-ben

Jelezzük, hogy az első szó előbb van az ABC-ben, vagy később, vagy a két szó azonos

A feladat megoldása:

   private void Kiertekel_Click(object sender, EventArgs e)
 {
      string s1, s2;
      int ered;
      if (textBox1.Text != "" && textBox2.Text != "")
      {
          s1 = textBox1.Text;
          s2 = textBox2.Text;
          ered = String.Compare(s1, s2);
          switch (ered)
          {
              case -1: textBox3.Text = s1 + " előbb van az ábécében";
                       break;
              case  0: textBox3.Text = " a két szöveg azonos";
                       break;
              case  1: textBox3.Text = s1 +
                       " később van az ábécében"; break;
          }
      }
  } 

  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:

 

 

TÖMB. Egydimenziós tömb elemeinek összege és átlaga

Adott nagyságú tömb adatainak beolvasása után számítsuk ki a tömb adatainak összegét és az átlagát. Az átlagot függvénnyel is oldjuk meg.

A feladat megoldása:

        static double Összeg(double [] w)
       {
            int i;
            double sz = 0;
            for (i = 0; i < w.Length; i++ )
            {
                sz += w[i];
            }
            return sz;
        }

        static void Átlag(double [] w, out double átl)
        {
            int i;
            átl = 0;
            for (i = 0; i < w.Length; i++ )
            {
                átl+= w[i];
            }
            átl /= w.Length;     
        }

        static double ÁtlagFg(double [] w)
        {
            return Összeg(w) / w.Length;
        }

        // globális változók
        int db, i = 0;
        double [] x;

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
                db = Int32.Parse(textBox1.Text);

            x = new double[db];
            AdatOlvasás.Enabled = true;
            button1.Enabled = false;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            textBox2.Clear();
            textBox2.Focus();
            AdatOlvasás.Enabled = false;
            Számítások.Enabled = false;
       }

       private void AdatOlvasás_Click(object sender, EventArgs e)
       {
          double adat;
          string s;

          if (textBox2.Text != "" )
          {
              adat = Double.Parse(textBox2.Text);
              s = "  " + i.ToString() + "\t" + adat.ToString();
              listBox1.Items.Add(s);
              x[i] = adat;
              textBox2.Text = "";
              i++;
              if (i == db)
              {  
                   textBox2.Text = "Lista vége";
                   AdatOlvasás.Enabled = false; 
                   Számítások.Enabled = true;
              }
              else
              {                  
                   textBox2.Clear();
                   textBox2.Focus();
              }
           }
        }

        private void Számítások_Click(object sender, EventArgs e)
        {
            double átlag, átlagf, össz;
            össz = Összeg(x);
            Átlag(x, out átlag);
            átlagf = ÁtlagFg(x);
            textBox3.Text = össz.ToString();
            textBox4.Text = átlag.ToString();
            textBox5.Text = átlagf.ToString();
        }  

A program futási eredményei:

 

 

TÖMB. Véletlen számokkal feltöltött kétdimenziós tömbök különbsége

1 és 10 között véletlen számokkal töltsünk fel 2 darab kétdimenziós tömböt, melynek 3 sora és két oszlopa legyen Számítsuk ki a két tömb különbségét.

A feladat megoldása:

         private void button1_Click(object sender, EventArgs e)
        {
            int i, j;
            int[,] a = new int[3, 2];
            int[,] b = new int[3, 2];
            int[,] különbség = new int[3, 2];
            string s1 = "", s2 = "", s3 = "";
            Random m = new Random();

            for (i = 0; i < a.GetLongLength(0); i++)
            {
                for (j = 0; j < a.GetLongLength(1); j++)
                {
                    a[i, j] = m.Next(10) +1;
                    b[i, j] = m.Next(10) + 1;
                    s1 += "  " + a[i, j].ToString();
                    s2 += "  " + b[i, j].ToString();
                    különbség[i, j] = a[i, j] - b[i, j];
                    s3 += "  " + különbség[i, j].ToString();
                }
                s1 += "\n";
                listBox1.Items.Add(s1);
                s1 = "";
                s2 += "\n";
                listBox2.Items.Add(s2);
                s2 = "";
                s3 += "\n";
                listBox3.Items.Add(s3);
                s3 = "";
            }
            button1.Enabled = false;
         }

A program futási eredménye:

TÖMB: Konstanssal feltöltött kétdimenziós tömök összege

Konstanssal töltsünk fel 2 darab kétdimenziós, 3 sorú két oszlopú tömböket és számítsuk ki az összegüket.

A feladat megoldása:

         double [,] a = new double [3,2]{
                                         {2.0, 1.0 },
                                         {3.0, 2.0 },
                                         {4.0, 3.0 }
                                        };

        double[,] b = new double[3, 2]{
                                         {3.0, 3.0 },
                                         {2.0, 1.0 },
                                         {5.0, 4.0 }
                                      };

        double[,] összeg = new double[3, 2];

        private void button1_Click(object sender, EventArgs e)
        {
            int i, j;
            string s1 = "", s2 = "", s3 = "";
            for (i = 0; i < a.GetLongLength(0); i++)
            {
                for (j = 0; j < a.GetLongLength(1); j++)
                {
                    s1 += "  " + a[i, j].ToString();
                    s2 += "  " + b[i, j].ToString();
                    összeg[i, j] = a[i, j] + b[i, j];
                    s3 += "  " + összeg[i, j].ToString();
                }
                s1 += "\n";
                listBox1.Items.Add(s1);
                s1 = "";
                s2 += "\n";
                listBox2.Items.Add(s2);
                s2 = "";
                s3 += "\n";
                listBox3.Items.Add(s3);
                s3 = "";
            }

            Button1.Enabled = false;
        }

A program futási eredménye:


STRUKTÚRA: Árukészlet nyilvántartása

Írjunk programot, amely struktúra használatával tartja számon az árukészletet, adja meg az áruk darabszámát, összértékét és keresse meg legdrágább árut.

 A feladat megoldása:

        public struct Áru
        {
             public double ára;
             public int db;
             public string azonosító;
        }

        static int db = 5;
        Áru [] raktár = new Áru[db];

        private void Adatok_Click(object sender, EventArgs e)
        {   
            int i;
            string s = ""
            raktár[0].azonosító = "asztal";
            raktár[0].ára = 8100;
            raktár[0].db = 5;

            raktár[1].azonosító = "szék";
            raktár[1].ára = 4800;
            raktár[1].db = 12;

            raktár[2].azonosító = "tükör";
            raktár[2].ára = 2200;
            raktár[2].db = 3;

            raktár[3].azonosító = "fogas";
            raktár[3].ára = 1100;
            raktár[3].db = 4;

            raktár[4].azonosító = "lámpa";
            raktár[4].ára = 600;
            raktár[4].db = 8;

            listBox1.Items.Clear();

            for (i = 0; i < db; i++)
            {
                s = raktár[i].azonosító + '\t' + raktár[i].ára +
                     '\t'+
 raktár[i].db;
                 listBox1.Items.Add(s);
            }
        }

        private void Árukészlet_Click(object sender, EventArgs e)
        { 
            int i;
            double áruk_értéke = 0;
            int db_összege = 0;
            double drága;
            int index;

            for (i = 0; i < db; i++)
            {
                db_összege += raktár[i].db;
                áruk_értéke += raktár[i].db * raktár[i].ára;
            }
            textBox1.Text = db_összege.ToString();
            textBox2.Text = áruk_értéke.ToString();
            drága = raktár[0].ára;index = 0;

            for (i = 1; i < db; i++)
            {
               if(drága < raktár[i].ára)
               {
                  drága = raktár[i].ára;
                  index = i;
               }
           }
           textBox3.Text = raktár[index].azonosító + "  " + drága;
        }

A program futási eredménye:

STRUKTÚRA: Komplex műveletek

 Írjunk programot, amely a Komplex struktúra használatával oldja meg két komplex szám összeadását, kivonását, szorzását és osztását.

 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)
        {
            textBox5.Text = ""; textBox6.Text = ""; OK = 0;
            radioButton1.Checked = false;
            radioButton2.Checked = false;
 
            radioButton3.Checked = false;
           
radioButton4.Checked = false;
        } 

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

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

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

A program futási eredményei:

 

STRUKTÚRA: Számtani és mértani közép számítása

Írjunk programot, amely struktúra használatával oldja meg két valós szám számtani és mértani közepét.

A feladat megoldása:

        struct Művelet
        {
            private double adat1, adat2, ered1, ered2;

            public Művelet(double sz1, double sz2)
            {
                adat1 = sz1; adat2 = sz2; ered1 = ered2 =0;
            }

            public void Mértani()
            {
                ered1 = Math.Sqrt(adat1 * adat2);
            }

            public void Számtani()
            {
                ered2 = (adat1 + adat2)/2;
            }

            public double Ered1
            {
                get { return ered1;}           
            }

            public double Ered2
            {
                get { return ered2; }
            }  
        }

        private void Számol_Click(object sender, EventArgs e)
        {
            double szám1, szám2, ered1, ered2;

            if(textBox1.Text != "" && textBox2.Text != "")
            {
                 szám1 = Double.Parse(textBox1.Text);
                 szám2 = Double.Parse(textBox2.Text);
                 Művelet m = new Művelet(szám1, szám2);
                 m.Mértani();
                 ered1 = m.Ered1;
                 textBox3.Text = ered1.ToString();
                 m.Számtani();
                 ered2 = m.Ered2;
                 textBox4.Text = ered2.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:

ÖRÖKLÉS. Kalkulátor

Írjunk programot, amely örökléssel oldja meg a kalkulátor működését a négy alapművelet mellett hatványoz és gyököt von, valamint mértani és számtani közepet is számol.

A feladat megoldása: 

                      class Kalkulátor
        {
            // adatmezők deklarációja
            protected double szám1, szám2, ered;
            protected 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 virtual 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;
                }
            }
        }

        class UjKalkulátor : Kalkulátor
        { 
            private double ered2, ered3;
            public UjKalkulátor(double sz1, double sz2, char mjel)
                               :base(sz1, sz2, mjel)
            {
                 ered2 = 0; ered3=0;
            }

           // Metódusok
            public override 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;
                    //  a szám1-et a szam2-edik hatványra emel
                    case '^': ered = Math.Pow(szám1,szám2); break;
                    // a szám1-et a szám2-edik gyökét számítja ki
                    case '~': ered = Math.Pow(szám1,1.0/szám2);
                              break;

                 }
            }

            public void MértaniKözép()
            {
                 ered2 = Math.Pow((szám1*szám2),1.0/2.0);
            }
            public void SzámtaniKözép()
            {
                 ered3 = (szám1+szám2)/2.0;
            }

            public double Ered2
            {
                get
                {
                    return ered2;
                }
            }
            public double Ered3
            {
                get
                {
                    return ered3;
                }
            }
        }

        private void Művelet_Click(object sender, EventArgs e)
        {
            double a, b;
            char műv;
            
int hiba;
            if (textBox1.Text != "" && textBox2.Text != ""
                && textBox3.Text != "")
            {
                a = Double.Parse(textBox1.Text);
                b = Double.Parse(textBox2.Text);
                műv = Char.Parse(textBox3.Text);
                hiba = 0;
                if (műv == '/' && b == 0)
                {
                     MessageBox.Show("0 az osztandó értéke!");
                }
                else
                {
                     switch (műv)
                     {
                        case '+': textBox7.Text = "Összeadás"; break;
                        case '-': textBox7.Text = "Kivonás"; break;
                        case '*': textBox7.Text = "Szorzás"; break;
                        case '/': textBox7.Text = "Osztás"; break;
                        case '^': textBox7.Text = "Hatványozás";
                                  break;
                        case '~': textBox7.Text = "Gyökvonás"; break;
                        default: hiba = 1;
                            MessageBox.Show("Hibás a műveleti jel!",
                                            "Hibajelzés!"); break;
                    }

                    if (hiba == 0);
                    {
                        UjKalkulátor k1 = new UjKalkulátor(a,b,műv);

                        k1.Művelet();
                        textBox4.Text = k1.Ered.ToString();
                        k1.SzámtaniKözép();
                        textBox5.Text = k1.Ered3.ToString();
                        k1.MértaniKözép();
                        textBox6.Text = k1.Ered2.ToString();
                    }
                }
            }
       }

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

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

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

A program futási eredményei:

 

     

    

 

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