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

C# MŰHELY

C# MŰHELY

Két egész típusú változó tartalmának felcserélése

2020. június 01. - Benkő Tiborné

A feladatot kétféle módon oldjuk meg. 

1. Feladat: Két egész típusú változó tartalmának felcserélése segédváltozó használatával.

A Form1_Load eseménykezelő eljárásban az  x, y egész típusú változók tartalmát beállítjuk 72 és 37-re,  majd megjelenítjük textBox1 és a textBox2 Text mezejében, az Enabled tulajdonság false-ra állítása biztosítja, hogy a számokat ne lehessen módosítani. A Form1_Load eseménykezelő a Form1 objektum betöltése után azonnal meghívódik, így már a globálisan deklarált x és y változók megkapják a beállított értékeket.

              int x, y;
        private void Cserél_Click(object sender, EventArgs e)
        {
            int m; // segédváltozó 
            m = x; // x tartalmát mentettük az m változóba
            x = y; // x változóba írtuk a y tartalmát
            y = m; // y változó felveszi az m értékét, amely x értéke
            textBox3.Text = x.ToString(); textBox3.Enabled = false;
            textBox4.Text = y.ToString(); textBox4.Enabled = false;
            button1.Enabled = false;
        }
        private void Form1_Load(object sender, EventArgs e)
        {   
            x = 72; y = 37;
            textBox1.Text = x.ToString(); textBox1.Enabled = false;
            textBox2.Text = y.ToString(); textBox2.Enabled = false;
         }

 A program futási eredménye: alapállapot és a Cserél nyomógomb megnyomása után történik meg a csere.

       

2.  Feladat: Két egész típusú változó tartalmának felcserélése segédváltozó nélkül.

Megoldás:  A két egész típusú változó (x,y) tartalmának felcserélését segédváltozó használata nélkül a kizáró vagy (^) logikai művelet felhasználásával oldhatjuk meg.

            x = x ^ y
            y  = y ^ x
            x  = x ^ y

 A kizáró vagy állapot táblája

            x   y     |  x ^ y
           -------------------
            0     0   |   0
            0     1   |    1
            1     0   |    1
            1     1   |    0

 Legyen a x változó tartalma 72 és az y változóé 37. Alakítsuk át a két egész számot binárissá. Az átalakítandó számot osztjuk kettővel és a maradékot a választóvonal mögé írjuk, ha páros az eredmény, akkor 0, ha páratlan, akkor 1. Az utolsó eredményt az 1-et átmásoljuk a maradékok listájába.

            72 |  0
            36 |  0
            18 |  0
              9 |  1
              4 |  0
              2 |  0 
              1 |  1  

 Alulról felfelé leolvasva    1 0 0 | 1 0 0 0 | majd az elejére írt 0-val két  byte 
az x változó tartalma binárisan  |  0 1 0 0 | 1 0 0 0 |  

            37 |  1
            18 |  0
              9 |  1
              4 |  0
              2 |  0
              1 |  1   

Alulról felfelé leolvasva    1 0  | 0 1 0  1 | majd az elejére írt 2 db  0 -val a  két byte
az y változó tartalma binárisan |  0 0 1  0 | 0 1 0  1 | 

            x = x ^ y                     x          |  0 1 0 0 | 1 0 0 0 |                                        
                                                y          |  0 0 1 0 | 0 1 0 1 |
                                                      ------------------------------
                                             x          |  0 1 1 0 | 1 1 0 1 |                

           y  = y ^ x                    y          |  0 0 1 0 | 0 1 0 1 |                                        
                                               x          |  0 1 1 0 | 1 1 0 1 |
                                                    -------------------------------
                                             y          |  0 1 0 0 | 1 0 0 0 |     

           x  = x ^ y                    x          |  0 1 1 0 | 1 1 0 1 |                                        
                                               y          |  0 1 0 0 | 1 0 0 0 |
                                                    -------------------------------
                                             x          |  0 0 1 0 | 0 1 0 1 |

           Alapállapot                                           Megtörtént a csere

 x          |  0 1 0 0 | 1 0 0 0 |                  x          |  0 0 1 0 | 0 1 0 1 |                             
 y          |  0 0 1 0 | 0 1 0 1 |                  y          |  0 1 0 0 | 1 0 0 0 |

 

          int x, y;
          private void Cserél_Click(object sender, EventArgs e)
         {
            x = x ^ y;
            y = y ^ x;
            x = x ^ y;
            textBox3.Text = x.ToString(); textBox3.Enabled = false;
            textBox4.Text = y.ToString(); textBox4.Enabled = false;
            button1.Enabled = false;
        }
        private void Form1_Load(object sender, EventArgs e)
        {   
            x = 72; y = 37;
            textBox1.Text = x.ToString(); textBox1.Enabled = false;
            textBox2.Text = y.ToString(); textBox2.Enabled = false;
        }

 A program futási eredménye: alapállapot és a Cserél nyomógomb megnyomása után történik meg a csere.

       

 

A bejegyzés trackback címe:

https://csharp-muhely.blog.hu/api/trackback/id/tr10015733802

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása