using System; /// @author Vesa Lappalainen /// @version 14.10.2012 /// /// Ohjelmassa harjoitellaan taulukko funktioiden käyttöä. /// public class SuurinJaPienin { /// /// Kysytään käyttäjältä lukuja ja tulostetaan /// niistä suurin ja pienin. /// /// public static void Main(string[] args) { const int KOKO = 3; int[] luvut = new int[KOKO]; /* Console.Write("Anna 1. kokonaisluku >"); luvut[0] = int.Parse(Console.ReadLine()); Console.Write("Anna 2. kokonaisluku >"); luvut[1] = int.Parse(Console.ReadLine()); Console.Write("Anna 3. kokonaisluku >"); luvut[2] = int.Parse(Console.ReadLine()); */ for (int i = 0; i < luvut.Length; i++) { Console.Write("Anna {0}. kokonaisluku >", i + 1); luvut[i] = int.Parse(Console.ReadLine()); } int suurin = Suurin3(luvut); int pienin = Pienin3(luvut); Console.WriteLine("Suurin luku on " + suurin); Console.WriteLine("Pienin luku on " + pienin); Console.ReadKey(); } /// /// Aliohjelma tutkii, mikä annetuista /// kokonaisluvuista on pienin, /// ja palauttaa sen. /// /// taulukko jossa on luvut /// Pienin luku /// ///
    /// SuurinJaPienin.Pienin(new int[]{1, 2 ,3}) === 1;
    /// SuurinJaPienin.Pienin(new int[]{2, 1, 3}) === 1;
    /// SuurinJaPienin.Pienin(new int[]{2, 3, 1}) === 1;
    /// SuurinJaPienin.Pienin(new int[]{3, 3, 2}) === 2;
    /// SuurinJaPienin.Pienin(new int[]{3, 3, 3}) === 3;
    /// SuurinJaPienin.Pienin(new int[]{1, 2})    === 1;
    /// SuurinJaPienin.Pienin(new int[]{2})       === 2;
    /// SuurinJaPienin.Pienin(new int[]{})        === int.MaxValue;
    /// 
///
public static int Pienin(int[] luvut) { int pienin = int.MaxValue; foreach (int luku in luvut) // voi tehdä millä silmukalla vaan if (luku < pienin) pienin = luku; return pienin; } /// /// Aliohjelma tutkii, mikä annetuista /// kokonaisluvuista on suurin, /// ja palauttaa sen. /// /// taulukko jossa on luvut /// Suurin luku /// ///
    /// SuurinJaPienin.Suurin(new int[]{3, 2, 1}) === 3;
    /// SuurinJaPienin.Suurin(new int[]{2, 3, 1}) === 3;
    /// SuurinJaPienin.Suurin(new int[]{2, 1, 3}) === 3;
    /// SuurinJaPienin.Suurin(new int[]{4, 2, 4}) === 4;
    /// SuurinJaPienin.Suurin(new int[]{1, 1, 1}) === 1;
    /// SuurinJaPienin.Suurin(new int[]{1, 2   }) === 2;
    /// SuurinJaPienin.Suurin(new int[]{1      }) === 1;
    /// SuurinJaPienin.Suurin(new int[]{       }) === 0;
    /// 
///
public static int Suurin(int[] luvut) { if (luvut.Length == 0) return 0; int suurin = luvut[0]; for (int i = 1; i < luvut.Length; i++) // voisi olla foreach { if (luvut[i] > suurin) suurin = luvut[i]; } return suurin; } /// /// Aliohjelma tutkii, mikä annetuista /// kolmesta kokonaisluvuista on pienin, /// ja palauttaa sen. /// /// 3 paikkainen taulukko jossa on luvut /// Pienin luku kolmesta /// ///
    /// SuurinJaPienin.Pienin3(new int[]{1, 2 ,3}) === 1;
    /// SuurinJaPienin.Pienin3(new int[]{2, 1, 3}) === 1;
    /// SuurinJaPienin.Pienin3(new int[]{2, 3, 1}) === 1;
    /// SuurinJaPienin.Pienin3(new int[]{3, 3, 2}) === 2;
    /// SuurinJaPienin.Pienin3(new int[]{3, 3, 3}) === 3;
    /// 
///
public static int Pienin3(int[] luvut) { int pienin = int.MaxValue; // saadaan "symmetrinen" kaikkien indeksien suhteen. if (luvut[0] < pienin) pienin = luvut[0]; if (luvut[1] < pienin) pienin = luvut[1]; if (luvut[2] < pienin) pienin = luvut[2]; return pienin; } /// /// Aliohjelma tutkii, mikä annetuista /// kolmesta kokonaisluvuista on suurin, /// ja palauttaa sen. /// /// 3 paikkainen taulukko jossa on luvut /// Suurin luku kolmesta /// ///
    /// SuurinJaPienin.Suurin3(new int[]{3, 2, 1}) === 3;
    /// SuurinJaPienin.Suurin3(new int[]{2, 3, 1}) === 3;
    /// SuurinJaPienin.Suurin3(new int[]{2, 1, 3}) === 3;
    /// SuurinJaPienin.Suurin3(new int[]{4, 2, 4}) === 4;
    /// SuurinJaPienin.Suurin3(new int[]{1, 1, 1}) === 1;
    /// SuurinJaPienin.Suurin3(new int[]{1, 1   }) === 1; #THROWS IndexOutOfRangeException
    /// "ABC" =R= "A.C";
    /// 
///
public static int Suurin3(int[] luvut) { int suurin = luvut[0]; if (luvut[1] > suurin) suurin = luvut[1]; if (luvut[2] > suurin) suurin = luvut[2]; return suurin; } /// /// Etsitään taulukon suurimman luvun paikka. /// /// taulukko josta suurinta etsitään /// suurimman paikka. -1 jos ei löydy /// ///
    ///   int[] luvut = {2,5,4,3};
    ///   SuurinJaPienin.SuurimmanPaikka(luvut) === 1;
    ///   SuurinJaPienin.SuurimmanPaikka(new int[]{3,2,1}) === 0;
    ///   SuurinJaPienin.SuurimmanPaikka(new int[]{3,4,1}) === 1;
    ///   SuurinJaPienin.SuurimmanPaikka(new int[]{3,2,5}) === 2;
    ///   SuurinJaPienin.SuurimmanPaikka(new int[]{3}) === 0;
    ///   SuurinJaPienin.SuurimmanPaikka(new int[]{}) === -1;
    /// 
///
public static int SuurimmanPaikka(int[] t) { int paikka = -1; int suurin = int.MinValue; for (int i = 0; i < t.Length; i++) // ei voi tehdä foreach { int luku = t[i]; if (luku > suurin) { suurin = luku; paikka = i; } } return paikka; } /// /// Vaihdetaan taulukon suurin alkio halutuksi. /// /// taulukko josta suurinta etsitään ja missä suurin vaihdetaan /// suurimman alkion uusi arvo /// ///
    ///   int[] luvut = {2,5,4,3};
    ///   SuurinJaPienin.VaihdaSuurin(luvut,1);
    ///   String.Join(" ",luvut) === "2 1 4 3";
    ///   SuurinJaPienin.VaihdaSuurin(luvut,1);
    ///   String.Join(" ",luvut) === "2 1 1 3";
    ///   SuurinJaPienin.VaihdaSuurin(luvut,9);
    ///   String.Join(" ",luvut) === "2 1 1 9";
    ///   SuurinJaPienin.VaihdaSuurin(luvut,1);
    ///   String.Join(" ",luvut) === "2 1 1 1";
    ///   SuurinJaPienin.VaihdaSuurin(luvut,-1);
    ///   String.Join(" ",luvut) === "-1 1 1 1";
    ///   luvut = new int[]{5};
    ///   SuurinJaPienin.VaihdaSuurin(luvut,2);
    ///   String.Join(" ",luvut) === "2";
    ///   luvut = new int[0];
    ///   SuurinJaPienin.VaihdaSuurin(luvut,2);
    ///   String.Join(" ",luvut) === "";
    /// 
///
public static void VaihdaSuurin(int[] t, int korvaavaArvo) { int paikka = SuurimmanPaikka(t); if (paikka < 0) return; t[paikka] = korvaavaArvo; } /// /// Täyttää taulukun valitulla luvulla /// /// taulukko joka täytetään /// millä luvulla täytetään /// @example ///
    ///   int[] luvut = {1,2,3,4};
    ///   SuurinJaPienin.Tayta(luvut,5);
    ///   String.Join(" ",luvut) === "5 5 5 5";
    /// 
/// @endexample public static void Tayta(int[] luvut, int milla) { for (int i = 0; i < luvut.Length; i++) // ei voi tehdä foreach { luvut[i] = milla; } } /// /// Etsitään taulukosta mistä kohti pyydetty luku löytyy /// /// taulukko josta etsitään /// etsittävä luku /// paikan jossa luku oli, jos monta niin palautetaan /// ekan paikka. Jos ei löydy niin palautetaan -1 /// /// ///
    ///   int[] luvut = {1,2,3,4,3,2,0};
    ///   SuurinJaPienin.Etsi(luvut,5) === -1;
    ///   SuurinJaPienin.Etsi(luvut,4) === 3;
    ///   SuurinJaPienin.Etsi(luvut,1) === 0;
    ///   SuurinJaPienin.Etsi(luvut,0) === 6;
    ///   SuurinJaPienin.Etsi(luvut,2) === 1;
    ///   SuurinJaPienin.Etsi(new int[]{},1) === -1;
    /// 
///
public static int Etsi(int[] luvut, int etsittava) { for (int i = 0; i < luvut.Length; i++) { int luku = luvut[i]; if (luku == etsittava) return i; } return -1; } }