1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using System.Linq; |
---|
4 | using System.Text; |
---|
5 | |
---|
6 | namespace Live20 |
---|
7 | { |
---|
8 | /// @author Vesa Lappalainen |
---|
9 | /// @version 8.11.2011 |
---|
10 | /// <summary> |
---|
11 | /// Tutkitaan poikkeuksia |
---|
12 | /// </summary> |
---|
13 | public class Poikkeus |
---|
14 | { |
---|
15 | /// <summary> |
---|
16 | /// Esimerkkejä poikkeuksista |
---|
17 | /// </summary> |
---|
18 | /// <param name="args">ei käytössä</param> |
---|
19 | public static void Main(string[] args) |
---|
20 | { |
---|
21 | int[] luvut = { 2, 4, 1 }; |
---|
22 | /* |
---|
23 | luvut = new int[3]; // täynnä 0:ia |
---|
24 | luvut[0] = 2; |
---|
25 | luvut[1] = 4; |
---|
26 | luvut[2] = 1; |
---|
27 | */ |
---|
28 | |
---|
29 | int a1 = 3, a2 = 4, a3 = 0, a4 = 7; |
---|
30 | |
---|
31 | try |
---|
32 | { |
---|
33 | int s = Summa(luvut, 0, 2); |
---|
34 | Console.WriteLine(s); |
---|
35 | Console.WriteLine(10 / a1); |
---|
36 | Console.WriteLine(10 / a2); |
---|
37 | Console.WriteLine(10 / a3); |
---|
38 | Console.WriteLine(10 / a4); |
---|
39 | } |
---|
40 | catch (DivideByZeroException ex) |
---|
41 | { |
---|
42 | Console.WriteLine("Jaoit nollalla aasi!"); |
---|
43 | } |
---|
44 | catch (IndexOutOfRangeException ex) |
---|
45 | { |
---|
46 | Console.WriteLine(ex.Message); |
---|
47 | } |
---|
48 | Console.ReadKey(); |
---|
49 | } |
---|
50 | |
---|
51 | |
---|
52 | |
---|
53 | /// <summary> |
---|
54 | /// Lasketaan lukujen summa taulukon osajoukosta |
---|
55 | /// </summary> |
---|
56 | /// <param name="luvut">taulukko, jonka lukujen summa lasketaan</param> |
---|
57 | /// <param name="alku">indeksi josta summaaminen aloitetaan</param> |
---|
58 | /// <param name="loppu">loppuindeksi joka otetaan mukaan, -1 = taulukon loppuun</param> |
---|
59 | /// <returns>taulukon osajoukon summa</returns> |
---|
60 | /// @example |
---|
61 | /// <pre name="test"> |
---|
62 | /// int[] luvut = { 2, 4, 1 }; |
---|
63 | /// Poikkeus.Summa(luvut) === 7; |
---|
64 | /// Poikkeus.Summa(luvut,0,2) === 7; |
---|
65 | /// Poikkeus.Summa(luvut,1,2) === 5; |
---|
66 | /// Poikkeus.Summa(luvut,1) === 5; |
---|
67 | /// Poikkeus.Summa(luvut,0,1) === 6; |
---|
68 | /// Poikkeus.Summa(luvut,1,1) === 4; |
---|
69 | /// Poikkeus.Summa(luvut,1,0) === 0; |
---|
70 | /// Poikkeus.Summa(luvut,0,100) === 7; #THROWS IndexOutOfRangeException |
---|
71 | /// Poikkeus.Summa(luvut,-4,100) === 7; #THROWS IndexOutOfRangeException |
---|
72 | /// </pre> |
---|
73 | /// @endexample |
---|
74 | public static int Summa(int[] luvut, int alku=0, int loppu=-1) |
---|
75 | { |
---|
76 | int tulos = 0; |
---|
77 | if (loppu == -1) loppu = luvut.Length-1; |
---|
78 | // Seuraavat voisi olla oikeasti järkeviä, mutta tässä harjoitellaan |
---|
79 | // sitä, että poikkeus päästetään kutsuvaan ohjelmaan. |
---|
80 | // if (loppu >= luvut.Length) loppu = luvut.Length - 1; |
---|
81 | // if (alku < 0) alku = 0; |
---|
82 | for (int i = alku; i <= loppu; i++) |
---|
83 | { |
---|
84 | int luku = luvut[i]; |
---|
85 | tulos += luku; // tulos = tulos + luku; |
---|
86 | } |
---|
87 | |
---|
88 | return tulos; |
---|
89 | } |
---|
90 | |
---|
91 | |
---|
92 | } |
---|
93 | } |
---|