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

C# MŰHELY

C# MŰHELY

Bűvös négyzet generálása

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

Készítsünk olyan bűvös négyzetet, amely 3,5,7 max. 9 méretű mátrix lehet. A bűvös négyzet lényege, hogy a négyzetben lévő számok sorainak és oszlopainak valamint átlóinak összege mindig azonos.

A feladat megoldása:

                        int max = 9; // a mátrix max méret
        static int Agrippa(int n, ref int[] mátrix)
        {
            int i, j, IVAL;  // pozíció és a beírandó szám
            for (i = 0; i < n * n; i++)
               mátrix[i] = 0;  // mátrix nullázása
            /
/ kezdőértékek beállítása
            j = (n + 1) / 2; i = j + 1; IVAL = 1;
            while (mátrix[i + n * j] >= 0) //ha < 0, akkor vége
            {
                if (mátrix[i + n * j] == 0)
                { 
                    mátrix[i + n * j] = IVAL;
                    if (IVAL == n * n) return 1; // sikeres
                    IVAL++; i++; j++; // lépés le jobbra
                    if (i > n) // ha kint vagyunk a négyzetből
                    {
                        if (j > n)
                           { i = 2; j = n; }
                        else i = 1;
                    }
                    else
                    {
                        if (j > n) j = 1;
                    }
                }
                else  // már van ott szám
                {
                    i++; j--;
                    if (i > n) i = 1;
                }
            }
            return 0; // hiba;
        }

        private void Generálás_Click(object sender, EventArgs e)
        {
            int i, j, n, jel;
            int[] mtömb;
            if (textBox1.Text != "")
            {
                n = Int32.Parse(textBox1.Text);
                if (n < 3 || n > max || ((n % 2) == 0))
                {
                    MessageBox.Show(
                    "A méret: 3,5,7,9 lehet, nem lehet páros szám!",
                    "Üzenet");
                    textBox1.Text = "";
                }
                else
                {
                    mtömb = new int[(max + 1) * (max + 1)];
                    jel = Agrippa(n, ref mtömb);
                    if (jel == 0)
                        MessageBox.Show("Futási hiba", "Üzenet");
                    else
                    {
                        textBox2.Text = "";
                        MessageBox.Show("Sikeres futás", "Üzenet");
                        for (i = 1; i <= n; i++) // sorok
                        {
                            for (j = 1; j <= n; j++)
                            {
                                textBox2.Text +=
                                         mtömb[i + j * n].ToString()
                                         + "   ";
                            }
                            richTextBox1.Text += textBox2.Text
                                                 + "\n";
                            textBox2.Text = "";
                        }
                    }
                }
             }

         }

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

A program futási eredményei:

 

 

 

Hibajelzés:

A bejegyzés trackback címe:

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

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