Záměna prvního a posledního sloupce C sharp – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Záměna prvního a posledního sloupce C sharp – .NET – Fórum – Programujte.comZáměna prvního a posledního sloupce C sharp – .NET – Fórum – Programujte.com

 

BloodyMarry
~ Anonymní uživatel
1 příspěvek
18. 1. 2015   #1
-
0
-

Dobrý den,

chci se poradit. Jak mám provést záměnu prvního a posledního sloupce pomocí dvojrozměrného pole a cyklů? Zatím jsem udělala něco takového (ale má mi vyjít jen 2 dvojrozměrná pole):

// Načtěte matici N x N čísel a proveďte záměnu prvního a posledního sloupce, 
            // rozměr matice načtěte jako náhodné číslo od 2 do 5.

            Random nahoda = new Random();
            int rozmer = nahoda.Next(2, 5 + 1);
            int[,] pole3 = new int[rozmer, rozmer];
            int pomoc = 0;
            for (int i = 0; i < rozmer; i++)
                for (int j = 0; j < rozmer; j++)
                {
                    pole3[i, j] = nahoda.Next(10, 100);
                    Console.Write(pole3[i, j] + "  ");
                    pomoc++;
                    if (pomoc % rozmer == 0)
                        Console.WriteLine("");
                }
            Console.WriteLine();
            
            
            int [,]pole3a = new int[rozmer,rozmer];
            for (int i = 0; i < rozmer; i++)
                    for (int j = 0; j < rozmer; j++)
                    {
                       
                           if (j == 0)

                            pole3a[i, j] = pole3[i, j + (rozmer-1)];
                        else
                            pole3a[i, j] = pole3[i, j];
                        
                        
                        Console.Write(pole3a[i, j] + "  ");
                        pomoc++;
                    if (pomoc % rozmer == 0)
                        Console.WriteLine("");
                       
                    }
            Console.WriteLine();

            int[,] pole3b = new int[rozmer, rozmer];
            for (int i = 0; i < rozmer; i++)
                    for (int j = 0; j < rozmer; j++)
                    {
                        if (j == (rozmer-1))
                            pole3b[i, j] = pole3[i, 0];
            else
                pole3b[i, j] = pole3[i, j];
            Console.Write(pole3b[i,j] + "  ");

            pomoc++;
            if (pomoc % rozmer == 0)
                Console.WriteLine("");
                    }
            Console.WriteLine();
            int[,] pole3c = new int[rozmer, rozmer];
            for (int i = 0; i < rozmer; i++)
                    for (int j = 0; j < rozmer; j++)
                    {
                        
                        pole3c[i, j] = pole3[i, j];
                        pole3c[i, j] = pole3b[i, j];
                        Console.Write(pole3c[i, j] + "  ");

                        pomoc++;
                        if (pomoc % rozmer == 0)
                            Console.WriteLine("");
                    }

            Console.ReadKey();

Děkuji

Nahlásit jako SPAM
IP: 85.135.12.–
Matěj Andrle+1
Grafoman
18. 1. 2015   #2
-
0
-

#1 BloodyMarry
Jak někdo dokáže podělat tak jednoduchý program??? A zde prosím používej BB Code... (Formátování pro zdrojový kód.)

class Program
{
	static void Main()
	{
		Random numberGenerator = new Random();
		int matrixLength = numberGenerator.Next(2, 6), cell = 0;
		int[,] matrix = new int[matrixLength, matrixLength];

		for (int y = 0; y < matrixLength; y++)
		{
			for (int x = 0; x < matrixLength; x++)
			{
				matrix[x, y] = numberGenerator.Next(10, 100);
				Console.Write(matrix[x, y] + "  ");
			}

			Console.WriteLine();
		}

		Console.WriteLine();

		for (int y = 0; y < matrixLength; y++)
		{
			cell = matrix[matrixLength - 1, y];
			matrix[matrixLength - 1, y] = matrix[0, y];
			matrix[0, y] = cell;

			for (int x = 0; x < matrixLength; x++)
				Console.Write(matrix[x, y] + "  ");

			Console.WriteLine();
		}

		Console.ReadKey();
	}
}


Co je na tom tak ukrutně složitého? Ukaž mi v mém kódu jediné větvení! Já ho tam nevidím - že by vůbec nebylo třeba?

Nahlásit jako SPAM
IP: 78.136.144.–
m4r100
Návštěvník
20. 1. 2015   #3
-
0
-

#1 BloodyMarry
#2 Matěj Andrle

A ted správně.

Vytvoris si kostru sve nove funkce: 

using System;

namespace Matrix
{
	public class MatrixHelpers
	{

		public static void FlipFirstLastColumn<T>(T[,] inputArray)
		{
		}

	}
}

Napises si k ni unit testy (co ma ta funkce umet, jak se ma chovat v meznich pripadech):  

using System;
using Matrix;
using NUnit.Framework;


namespace ConsoleAppTests
{
    [TestFixture]
    public class FlipFirstLastColumn
    {
        private readonly int[,] _matrixInt1X1 = {{1}};

        private readonly int[,] _matrixInt2X2 = {{11, 21}, 
                                                 {12, 22}};
        private readonly int[,] _matrixInt2X2Result = {{21, 11}, 
                                                       {22, 12}};

        private readonly int[,] _matrixInt3X4 = {{11, 21, 31}, 
                                                 {12, 22, 32},
                                                 {13, 23, 33},
                                                 {14, 24, 34}};
        private readonly int[,] _matrixInt3X4Result = {{31, 21, 11}, 
                                                       {32, 22, 12},
                                                       {33, 23, 13},
                                                       {34, 24, 14}};

        private readonly string[,] _matrixString3X2 = {{"c1r1", "c2r1", "c3r1"}, 
                                                       {"c1r2", "c2r2", "c3r2"}};
        private readonly string[,] _matrixString3X2Result = {{"c3r1", "c2r1", "c1r1"}, 
                                                             {"c3r2", "c2r2", "c1r2"}};

        [Test]
        public void FlipFirstLastColumnTest_empty ()
        {
            var input = new int[0, 0];
            MatrixHelpers.FlipFirstLastColumn (input);
            Assert.AreEqual (new int[0,0], input);
        }

        [Test]
        public void FlipFirstLastColumnTest_1X0 ()
        {
            var input = new int[1, 0];
            MatrixHelpers.FlipFirstLastColumn (input);
            Assert.AreEqual (new int[1,0], input);
        }

        [Test]
        public void FlipFirstLastColumnTest_0X1 ()
        {
            var input = new int[0, 1];
            MatrixHelpers.FlipFirstLastColumn (input);
            Assert.AreEqual (new int[0,1], input);
        }

        [Test]
        public void FlipFirstLastColumnTest_1X1 ()
        {
            MatrixHelpers.FlipFirstLastColumn (_matrixInt1X1);
            Assert.AreEqual (new int[1,1]{{1}}, _matrixInt1X1);
        }

        [Test]
        public void FlipFirstLastColumnTest_2X2 ()
        {
            MatrixHelpers.FlipFirstLastColumn (_matrixInt2X2);
            Assert.AreEqual (_matrixInt2X2Result, _matrixInt2X2);
        }

        [Test]
        public void FlipFirstLastColumnTest_3X4 ()
        {
            MatrixHelpers.FlipFirstLastColumn (_matrixInt3X4);
            Assert.AreEqual (_matrixInt3X4Result, _matrixInt3X4);
        }

        [Test]
        public void FlipFirstLastColumnTest_3X2_String ()
        {
            MatrixHelpers.FlipFirstLastColumn (_matrixString3X2);
            Assert.AreEqual (_matrixString3X2Result, _matrixString3X2);
        }

    }
}

A konecne implementujes svoji funkci:

using System;

namespace Matrix
{
	public class MatrixHelpers
	{

		public static void FlipFirstLastColumn<T>(T[,] inputArray)
		{
			var lenRow = inputArray.GetLength(0);
			var countCol = inputArray.GetLength(1) - 1;

			if (lenRow < 1 || countCol < 1)
				return;

			for (int i = 0; i < lenRow; i++)
			{
				var colFirst = inputArray[i, 0];
				inputArray[i, 0] = inputArray[i, countCol];
				inputArray[i, countCol] = colFirst;
			}
		}
	}
}

Pokud testy prochazi, mas funkcni kod.

Nahlásit jako SPAM
IP: 94.112.137.–
Matěj Andrle+1
Grafoman
20. 1. 2015   #4
-
0
-

#3 m4r10
Do OOP by se to mé dalo zařadit mnohem snáze! A především jak jsem psal - ukaž mi v mém řešení větvení! Přidat genericitu a dát to do spešl objektu ten můj kód, tak to by teprve byla pecka...

Nahlásit jako SPAM
IP: 78.136.182.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý