Skip to content
Snippets Groups Projects
KaannaTaulukkoAli.cs 2.31 KiB
using System;

/// @author vesal
/// @version 22.9.2013
/// <summary>
/// Käännetään taulukko aliohjelmalla
/// </summary>
public class KaannaTaulukkoAli
{
    /// <summary>
    /// Luodaan taulukko, käännetään se ja tulostetaan
    /// </summary>
    public static void Main()
    {
        int[] t = { 23, 45, 12, 66, 7, 20 };
        Vaihda(t, 0, 5);
        Vaihda(t, 1, 4);
        Vaihda(t, 2, 3);
        Console.WriteLine(string.Join(", ", t));
        
        // Seuraava ei toimisi Javassa:
        Vaihda(ref t[0], ref t[5]);
        Vaihda(ref t[1], ref t[4]);
        Vaihda(ref t[2], ref t[3]);
        Console.WriteLine(string.Join(", ", t));
        
        // Silmukoilla
        for (int i1 = 0, i2 = t.Length-1; i1 < i2; i1++, i2--) Vaihda(t, i1, i2);
        Console.WriteLine(string.Join(", ", t));

        for (int i1 = 0, i2 = t.Length-1; i1 < i2; i1++, i2--) Vaihda(ref t[i1], ref t[i2]);
        Console.WriteLine(string.Join(", ", t));
    }
    
    
    /// <summary>
    /// Vaihedetaan taulukon kahden alkion paikka keskenään
    /// </summary>
    /// <param name="t">taulukko josta vaihdetaan</param>
    /// <param name="i">ensimmäisen vaihdettavan alkion indeksi</param>
    /// <param name="j">toisen vaihdettavan alkion indeksi</param>
    /// <example>
    /// <pre name="test">
    ///    int[] t = { 23, 45, 12, 66 };
    ///    Vaihda(t,0,2);
    ///    string.Join(" ", t) === "12 45 23 66";
    ///    Vaihda(t,0,3);
    ///    string.Join(" ", t) === "66 45 23 12";
    /// </pre>
    /// </example>
    public static void Vaihda(int[] t, int i, int j)
    {
        int tmp;
        tmp = t[i];
        t[i] = t[j];
        t[j] = tmp;
    }
    
    
    /// <summary>
    /// Vaihdetaan kahden muuttujan arvot keskenään
    /// </summary>
    /// <param name="a">viite ensimmäiseen vaihdettavaan muuttujaan</param>
    /// <param name="b">viite toiseen vaihdettavaan muuttujaan</param>
    /// <example>
    /// <pre name="test">
    ///    int a=3, b=5;
    ///    Vaihda(ref a, ref b);
    ///    a === 5; b === 3;
    ///    int[] t = { 23, 45, 12, 66 };
    ///    Vaihda(ref t[0], ref t[2]);
    ///    string.Join(" ", t) === "12 45 23 66";
    /// </pre>
    /// </example>
    public static void Vaihda(ref int a, ref int b)
    {
        int temp = a;
        a = b;
        b = temp;
    }
}