Switch

Пошто смо сазнали како ради наредба if, сада ћемо се позабавити нардбом switch. То је наредба која омогућава да се тестира једна променљива, а затим се извршава једна од неколико грана зависно од њене вредности.


Синтакса наредбе switch је следећа:


 switch (izraz)
{
case vrednost1: naredba1
break;
case vrednost2: naredba2;
break;
...
default: podrazumevana naredba;
break;
}
У наредби switch, вредност коју враћа израз izraz пореди се са сваком вредношћу која следи иза кључне речи case. Ако постоји подударање између било које две вредности, онда се извршава нардба за тај case. На пример, ако се вредност коју враћа израз izraz подудара са врдношћу vrednost2, онда се извршава блок vrednost2. Ако нема поклапања, а постоји опционо подразумевано гранање, онда се извршавају подразумеване наредбе. Наредба break означава крај сваког гранања - наредба break завршава извршавање наредбе switch и програмски ток се наставља од наредбе која следи иза наредбе switch.

Дати дијаграм илуструје како функционише наредба switch:

Слика 6.71. Дијаграм двосмерног тестирања


Следећи пример показује синтаксу за наредбу switch:

Пример 1. Написати програм који за унети број, који означава редослед планете у односу на Сунце, враћа име те планете.

Решење :




Правимо форму облика:
Преименујемо label-e и button1
Слика 6.72. Почетни изглед форме
Слика 6.73. Изглед форме након преименовања компоненти

Пишемо одговарајући код у делу програма које се отвара двоструким кликом на дугме (button1) :

private void button1_Click(object sender, EventArgs e)
{
    //Promenljiva koju koristimo
    int pozicijaPlanete;
    pozicijaPlanete = int.Parse(textBox1.Text);

    //Na osnovu unesenog broja pozicijaPlanete, razmatramo slucajeve
    switch (pozicijaPlanete)
    {
        //Slucaj kada unesemo redni broj 1, ispisujemo koja je planeta 
        case 1: label2.Text = "Merkur";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 2, ispisujemo koja je planeta 
        case 2: label2.Text = "Venera";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 3, ispisujemo koja je planeta 
        case 3: label2.Text = "Zemlja";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 4, ispisujemo koja je planeta 
        case 4: label2.Text = "Mars";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 5, ispisujemo koja je planeta 
        case 5: label2.Text = "Jupiter";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 6, ispisujemo koja je planeta 
        case 6: label2.Text = "Saturn";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 7, ispisujemo koja je planeta 
        case 7: label2.Text = "Uran";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 8, ispisujemo koja je planeta 
        case 8: label2.Text = "Neptun";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 9, ispisujemo koja je planeta 
        case 9: label2.Text = "Pluton";
            //Kraj case bloka
            break;
        //Ako nijedan slucaj nije realizovan, uneto je nesto sto nije 
        //Broj koji odgovara nekoj planeti 
        default: label2.Text = "Nepoznata ";
            break;
    }
}

Покренемо програм и проверимо (за конкретну вредност pozicijaPlanete) :

Слика 6.74. Изглед форме након покретања програма


При извршавању наредбе break, програмска контрола напушта наредбу switch и програм се завршава.
Свака грана case може да садржи било који број наредби.

Напомена: Нема потребе да се витичасте заграде користе у оквиру сваке гране case. Наредба break означава крај сваке гране case.
Можемо да дефинишемо опциону подразумевану грану у наредби switch. Подразумевана грана биће извршена уколико си израз не поклапа ни са једном ознаком case.

Савет
Добро је дефинисати подразумевану грану, чак и ако немамо да обавимо никакву конкретну обраду. Укључивањем подразумеване гране показујемо само то да њу нисмо заборавили. Такође, подразумевана грана може да послужи за "хватање" неочекиваних вредности и за приказивање примерног упозорења кориснику.

Дефинисање "пропадања" у наредби switch


Уколико изоставимо наредбу break на крају гране case, ток контроле се наставља до следећег гранања case и извршиће се све наредбе на које се наиђе до следеће наредбе break. Ово је познато под појмом пропадање (енгл. fall-through), јер иако је дошло до поклапања са одређеним гранањем case, које не обухвата ни једну наредбу, програмска контрола се наставила и преноси на следеће гранање case.

Пример који илуструје наредбу switch са пропадањем:


static void Main(string[] args)
{   
    //Promenljivu koju koristimo
    int broj=1;                         
    switch(broj)
    {
        case 0: System.Console.WriteLine("Nula");
	   break; 
        case 1:  
        case 2: System.Console.WriteLine("Jedan ili dva");
	   break;
        case 3: System.Console.WriteLine("Tri");
	   break;
        default: System.Console.WriteLine("Drugi broj");
	   break;
    }
}

Вредност променљиве типа int постављена је на 1, али с обзиром на гранање за case 1, програмска контрола пропада на следеће гранање - case за 2, приказујући ову вредност:

Jedan ili dva

Примери


Пример 2. Написати програм који за унета два броја и рачунску операцију одређује резултат.

Решење :


Правимо калкулатор са четири рачунске операције (сабирање, одузимање,
множење и дељење).Програм треба да брати решење операције, ако смо унели
једну од четири операције или да нам испише поруку о погрешном уносу,ако
нисмо унели исправну операцију.


Правимо форму облика:
Слика 6.75. Почетни изглед форме
Преименујемо label-e и button1Слика 6.76. Изглед форме након преименовања компоненти

Пишемо одговарајући код у делу програма које се отвара двоструким кликом на дугме (button1) :

private void button1_Click(object sender, EventArgs e)
{
    //Promenljive koje koristimo
    float a, b, rez;
    string c;
    a = float.Parse(textBox1.Text);
    c = textBox2.Text;
    b = float.Parse(textBox3.Text);

    //Na osnovu unesene operacije c(textBox2) racuna se rezultat, razmatramo slucajeve
    switch (c)
    {
        //Slucaj kada unesemo +, tada nam dugme vrsi sabiranje
        case "+": rez = a + b;
            //Ispisujemo rezultat operacije
            label5.Text = "Rezultat operacije je " + rez;
            //Kraj case bloka
            break;
        //Slucaj kada unesemo -, tada nam dugme vrsi oduzimanje
        case "-": rez = a - b;
            //Ispisujemo rezultat operacije
            label5.Text = "Rezultat operacije je " + rez;
            //Kraj case bloka
            break;
        //Slucaj kada unesemo *, tada nam dugme vrsi mnozenje
        case "*": rez = a * b;
            //Ispisujemo rezultat operacije
            label5.Text = "Rezultat operacije je " + rez;
            //Kraj case bloka
            break;
        //Slucaj kada unesemo /, tada nam dugme vrsi deljenje
        case "/":
            //Ako nam je delilac b razlicit od nuli
            if (b != 0)
            {
                //Rezultat nam je a podeljeno sa b
                rez = a / b;
                //Ispisujemo rezultat operacije
                label5.Text = "Rezultat operacije je " + rez;
            }
            //U suprotnom delilac b je nula
            else
                //Ispisujemo da ne mozemo deliti nulom
                label5.Text = "Nije dozvoljeno deljenje nulom !!!";
            //Kraj case bloka
            break;
        //Ako nijedan slucaj nije realizovan, uneto je nesto sto nije operacija
        default:
            //Ispisujemo poruku o pogresnom unosu operacije
            label5.Text = "Uneli ste pogresnu operaciju";
            break;
    }
}

Покренемо програм и проверимо за конкретне операције :

Слика 6.77. Изглед форме након покретања програма

Пример 3. Написати програм који нам када унесемо редни број дана враћа који је то дан у недељи.

Решење :
Програм треба да нам врати назив дана у недељи, ако унесемо његов редни број (број од 1 до 7),
или да нам испише поруку о погрешном уносу ако смо унели неки број који није редни број дана у недељи.

Sorry, the GeoGebra Applet could not be started. Please make sure that Java 1.4.2 (or later) is installed and active in your browser (Click here to install Java now)

*У случају да се анимација не приказује, притиснути дугме Прикажи слику





Правимо форму облика:
Слика 6.78. Почетни изглед форме
Преименујемо label-e и button1
Слика 6.79. Изглед форме након преименовања компоненти

Пишемо одговарајући код у делу програма које се отвара двоструким кликом на дугме (button1) :

private void button1_Click(object sender, EventArgs e)
{
    //Promenljiva koju koristimo
    int a;
    a = int.Parse(textBox1.Text);

    //Na osnovu unesenog broja a, razmatramo slucajeve
    switch (a)
    {
        //Slucaj kada unesemo redni broj 1, ispisujemo koji je dan 
        case 1: label3.Text = "Prvi dan u nedelji je ponedeljak";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 2, ispisujemo koji je dan 
        case 2: label3.Text = "Drugi dan u nedelji je utorak";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 3, ispisujemo koji je dan 
        case 3: label3.Text = "Treci dan u nedelji je sreda";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 4, ispisujemo koji je dan 
        case 4: label3.Text = "Cetvrti dan u nedelji je cetvrtak";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 5, ispisujemo koji je dan 
        case 5: label3.Text = "Peti dan u nedelji je petak";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 6, ispisujemo koji je dan 
        case 6: label3.Text = "Sesti dan u nedelji je subota";
            //Kraj case bloka
            break;
        //Slucaj kada unesemo redni broj 7, ispisujemo koji je dan 
        case 7: label3.Text = "Sedmi dan u nedelji je nedelja";
            //Kraj case bloka
            break;
        //Ako nijedan slucaj nije realizovan, uneto je nesto sto nije redni broj dana u nedelji
        default: label3.Text = "Uneti redni broj nije broj dana u nedelji !";
            break;
    }
}

Пример 4. Написати програм који нам када унесемо редни број месеца враћа колико има дана у том месецу.

Решење :
Опште је познато да месеци у години немају исти број дана.
Јануар, Март, Мај, Јул, Август, Октобар и Децембар имају по 31 дан, Април, Јун, Септембар и Новембар имају по 30 дана сваке године, док у зависности од тога да ли је година преступна или не Фебруар има 29 или 28 дана.


Правимо форму облика:
Слика 6.80. Почетни изглед форме
Преименујемо label-e и button1
Слика 6.81. Изглед форме након преименовања компоненти

Пишемо одговарајући код у делу програма које се отвара двоструким кликом на дугме (button1) :

private void button1_Click(object sender, EventArgs e)
{
    //Promenljive koje koristimo
    int m, g, p, b;
    m = int.Parse(textBox1.Text);
    g = int.Parse(textBox2.Text);
    //Proveravamo da li je godina prestupna
    if ((g % 4 == 0) && (g % 100 != 0) || (g % 400 == 0))
        p = 1;
    else
        p = 0;
    
    //Odredjujemo koliko ima dana koji mesec
    if (m == 2)
        b = 28 + p;
    else if ((m == 4) || (m == 6) || (m == 9) || (m == 11))
        b = 30;
    else 
        b = 31;

    //Ako unesemo redni broj meseca veci od 12 ili manji od 1
    if ((m > 12) || (m < 1))
        //Ispisujemo poruku o pogresnom unosu
        label3.Text = "Uneli ste pogresan datum!!!";
    //U suprotnom uneli smo ispravan redni broj meseca
    else 
    {
        //Na osnovu unesenog rednog broja meseca m, razmatramo slucajeve
        switch (m)
        {
            //Slucaj kada unesemo redni broj 1, ispisujemo koliko dana ima prvi mesec
            case 1: label3.Text = "Januar ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 2, ispisujemo koliko dana ima drugi mesec
            case 2: label3.Text = "Februar ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 3, ispisujemo koliko dana ima treci mesec
            case 3: label3.Text = "Mart ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 4, ispisujemo koliko dana ima cetvrti mesec
            case 4: label3.Text = "April ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 5, ispisujemo koliko dana ima peti mesec
            case 5: label3.Text = "Maj ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 6, ispisujemo koliko dana ima sesti mesec
            case 6: label3.Text = "Jun ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 7, ispisujemo koliko dana ima sedmi mesec
            case 7: label3.Text = "Jul ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 8, ispisujemo koliko dana ima osmi mesec
            case 8: label3.Text = "Avgust ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 9, ispisujemo koliko dana ima deveti mesec
            case 9: label3.Text = "Septembar ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 10, ispisujemo koliko dana ima deseti mesec
            case 10: label3.Text = "Oktobar ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 11, ispisujemo koliko dana ima jedanesti mesec
            case 11: label3.Text = "Novembar ima " + b + " dana.";
                break;
            //Slucaj kada unesemo redni broj 12, ispisujemo koliko dana ima dvanesti mesec
            case 12: label3.Text = "Decembar ima " + b + " dana.";
                break;
            //Ako nijedan slucaj nije realizovan, uneto je nesto sto nije redni broj meseca u godini
            default: label3.Text = "Uneli ste pogresan datum";
                break;
        }
    }
}

Пример 5. Написати програм који нам када унесемо датум враћа редни број дана у години.

Решење :


Правимо форму облика:
Слика 6.82. Почетни изглед форме
Преименујемо label-e и button1
Слика 6.83. Изглед форме након преименовања компоненти

Пишемо одговарајући код у делу програма које се отвара двоструким кликом на дугме (button1) :

private void button1_Click(object sender, EventArgs e)
{
    //Promenljive koje koristimo
    int d, m, g, p, b;
    d = int.Parse(textBox1.Text);
    m = int.Parse(textBox2.Text); 
    g = int.Parse(textBox3.Text);
    //Proveravamo da li je godina prestupna
    if ((g % 4 == 0) && (g % 100!=0) || (g%400==0))
        p = 1;
    else
        p = 0;

    //Odredjujemo koliko dana ima koji mesec
    if (m == 2)
        b = 28 + p;
    else if ((m == 4) || (m == 6) || (m == 9) || (m == 11))
        b=30;
    else 
        b=31;

    //Redni broj dana ne moze biti manji od 1 ni veci od broja dana u mesecu u kom je taj dan
    //Redni broj meseca ne moze biti veci od 12 ni manji od 1
    if ((d > b) || (d < 1) || (m > 12) || (m < 1))
        //Ispisujemo poruku o pogresnom unosu datuma 
        label3.Text = "Uneli ste pogresan datum!!!";
    //U suprotnom uneli smo ispravan datum
    else 
    {
        //Broj meseca koji smo uneli smanjimo za 1
        m = m - 1;
        //Na osnovu unesenog rednog broja meseca m, 
        //Razmatramo slucajeve posle smanjenja rednog broja meseca za 1
        switch (m) 
        {
            //Slucaj kada smo kao redni broj meseca uneli 2 (februar)
            //Broju dana dodamo 31, toliko dana ima januar
            case 1: d = d + 31;
                break;
            //Slucaj kada smo kao redni broj meseca uneli 3 (mart)
            //Broju dana dodamo broj dana prethodna dva meseca
            case 2: d = d + 31 + 28 + p;
                break;
            //Slucaj kada smo kao redni broj meseca uneli 4 (april)
            //Broju dana dodamo broj dana prethodna tri meseca           
            case 3: d = d + 31 + 28 + p + 31;
                break;
            //Slucaj kada smo kao redni broj meseca uneli 5 (maj)
            //Broju dana dodamo broj dana prethodna cetiri meseca
            case 4: d = d + 31 + 28 + p + 31 + 30;
                break;
            //Slucaj kada smo kao redni broj meseca uneli 6 (jun)
            //Broju dana dodamo broj dana prethodnih pet meseci
            case 5: d = d + 31 + 28 + p + 31 + 30 + 31;
                break;
            //Slucaj kada smo kao redni broj meseca uneli 7 (jul)
            //Broju dana dodamo broj dana prethodnih sest meseci
            case 6: d = d + 31 + 28 + p + 31 + 30 + 31 + 30;
                break;
            //Slucaj kada smo kao redni broj meseca uneli 8 (avgust)
            //Broju dana dodamo broj dana prethodnih sedam meseci
            case 7: d = d + 31 + 28 + p + 31 + 30 + 31 + 30 + 31;
                break;
            //Slucaj kada smo kao redni broj meseca uneli 9 (septembar)
            //Broju dana dodamo broj dana prethodnih osam meseca
            case 8: d = d + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31;
                break;
            //Slucaj kada smo kao redni broj meseca uneli 10 (oktobar)
            //Broju dana dodamo broj dana prethodnih devet meseci
            case 9: d = d + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31 + 30;
                break;
            //Slucaj kada smo kao redni broj meseca uneli 11 (novembar)
            //Broju dana dodamo broj dana prethodnih deset meseci
            case 10: d = d + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31 + 30 +31;
                break;
            //Slucaj kada smo kao redni broj meseca uneli 12 (decembar)
            //Broju dana dodamo broj dana prethodnih jedanest meseci
            case 11: d = d + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 +30;
                break;
            //Ako nijedan slucaj nije realizovan
            default: label3.Text = "Uneli ste pogresan datum!!!";
                break;
        }
        //Ispisujemo koji je redni broj dana u godini datuma koji smo uneli
        label3.Text = "Uneti datum je " + d + " dan u godini.";
    }
}

Пример 6. Написати програм који одређује разлику између два датума у истој години.

Решење :
Овај задатак ћемо решити на следећи начин :
прво ћемо одредити за први и други датум који смо унели редни број дана у години,
када одузмемо добијене редне бројеве добићемо колика је разлика у данима између њих.


Правимо форму облика:
Слика 6.84. Почетни изглед форме
Преименујемо label-e и button1
Слика 6.85. Изглед форме након преименовања компоненти

Пишемо одговарајући код у делу програма које се отвара двоструким кликом на дугме (button1) :

private void button1_Click(object sender, EventArgs e)
{
    //Promenljive koje koristimo
    int d1, m1, g1, d2, m2, g2, p, b;
    d1 = int.Parse(textBox1.Text);
    m1 = int.Parse(textBox2.Text);
    g1 = int.Parse(textBox3.Text);
    d2 = int.Parse(textBox4.Text);
    m2 = int.Parse(textBox5.Text);
    g2 = int.Parse(textBox6.Text);
   
    //Proveravamo da li smo uneli datume iz razlicite godine
    if (g1 != g2)
        //Ako jesmo, ispisujemo poruku o pogresnom unosu
        label4.Text = "Niste uneli istu godinu!";
    //U suprotnom uneli smo datume iz iste godine
    else
    {
        //Proveravamo da li je godina prestupna
        if ((g1 % 4 == 0) && (g1 % 100 != 0) || (g1 % 400 == 0))
            p = 1;
        else
            p = 0;

        //Odredjujemo koliko dana ima koji mesec, za prvi datum
        if (m1 == 2)
            b = 28 + p;
        else if ((m1 == 4) || (m1 == 6) || (m1 == 9) || (m1 == 11))
            b = 30;
        else
            b = 31;
 
        //Redni broj dana ne moze biti manji od 1 ni veci od broja dana u mesecu u kom je taj dan
        //Redni broj meseca ne moze biti veci od 12 ni manji od 1        
        if ((d1 > b) || (d1 < 1) || (m1 > 12) || (m1 < 1))
            //Ispisujemo poruku o pogresnom unosu datuma (prvog datuma)
            label4.Text = "Uneli ste pogresan datum!!!";
        //U suprotnom uneli smo prvi ispravan datum
        else
        {
            //Odredjujemo koliko dana ima koji mesec, za drugi datum
            if (m2 == 2)
                b = 28 + p;
            else if ((m2 == 4) || (m2 == 6) || (m2 == 9) || (m2 == 11))
                b = 30;
            else 
                b = 31;

            //Redni br. dana ne moze biti manji od 1 ni veci od broja dana u mesecu u kom je taj dan
            //Redni broj meseca ne moze biti veci od 12 ni manji od 1
            if ((d2 > b) || (d2 < 1) || (m2 > 12) || (m2 < 1))
                //Ispisujemo poruku o pogresnom unosu datuma
                label4.Text = "Uneli ste pogresan datum!!!";
            //U suprotnom uneli smo ispravan drugi datum
            else
            {
                //Broj meseca prvog datuma koji smo uneli smanjimo za 1
                m1 = m1 - 1;
                //Razmatramo slucajeve posle smanjenja rednog broja prvog meseca koji smo uneli
                switch (m1)
                {
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 2 (februar)
                    //Broju dana dodamo 31, toliko dana ima januar
                    case 1: d1 = d1 + 31;
                        break;
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 3 (mart)
                    //Broju dana dodamo broj dana prethodna dva meseca
                    case 2: d1 = d1 + 31 + 28 + p;
                        break;
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 4 (april)
                    //Broju dana dodamo broj dana prethodna tri meseca 
                    case 3: d1 = d1 + 31 + 28 + p + 31;
                        break;
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 5 (maj)
                    //Broju dana dodamo broj dana prethodna cetiri meseca
                    case 4: d1 = d1 + 31 + 28 + p + 31 + 30;
                        break;
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 6 (jun)
                    //Broju dana dodamo broj dana prethodnih pet meseci
                    case 5: d1 = d1 + 31 + 28 + p + 31 + 30 + 31;
                        break;
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 7 (jul)
                    //Broju dana dodamo broj dana prethodnih sest meseci
                    case 6: d1 = d1 + 31 + 28 + p + 31 + 30 + 31 + 30;
                       break;
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 8 (avgust)
                    //Broju dana dodamo broj dana prethodnih sedam meseci
                    case 7: d1 = d1 + 31 + 28 + p + 31 + 30 + 31 + 30 + 31;
                        break;
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 9 (septembar)
                    //Broju dana dodamo broj dana prethodnih osam meseca
                    case 8: d1 = d1 + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31;
                         break;
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 10 (oktobar)
                    //Broju dana dodamo broj dana prethodnih devet meseci
                    case 9: d1 = d1 + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31 + 30;
                         break;
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 11 (novembar)
                    //Broju dana dodamo broj dana prethodnih deset meseci
                    case 10: d1 = d1 + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
                         break;
                    //Slucaj kada smo kao redni broj meseca prvog datuma uneli 12 (decembar)
                    //Broju dana dodamo broj dana prethodnih jedanest meseci
                    case 11: d1 = d1 + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
                         break;
                    //Ako nijedan slucaj nije realizovan
                    default: label4.Text = "Uneli ste pogresan datum!!!";
                         break;
                }
                //Broj meseca drugog datuma koji smo uneli smanjimo za 1
                m2 = m2 - 1;
                //Razmatramo slucajeve posle smanjenja rednog broja drugog meseca koji smo uneli
                switch (m2)
                {
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 2 (februar)
                    //Broju dana dodamo 31, toliko dana ima januar
                    case 1: d2 = d2 + 31;
                        break;
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 3 (mart)
                    //Broju dana dodamo broj dana prethodna dva meseca
                    case 2: d2 = d2 + 31 + 28 + p;
                        break;
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 4 (april)
                    //Broju dana dodamo broj dana prethodna tri meseca 
                    case 3: d2 = d2 + 31 + 28 + p + 31;
                        break;
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 5 (maj)
                    //Broju dana dodamo broj dana prethodna cetiri meseca
                    case 4: d2 = d2 + 31 + 28 + p + 31 + 30;
                        break;
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 6 (jun)
                    //Broju dana dodamo broj dana prethodnih pet meseci
                    case 5: d2 = d2 + 31 + 28 + p + 31 + 30 + 31;
                        break;
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 7 (jul)
                    //Broju dana dodamo broj dana prethodnih sest meseci
                    case 6: d2 = d2 + 31 + 28 + p + 31 + 30 + 31 + 30;
                        break;
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 8 (avgust)
                    //Broju dana dodamo broj dana prethodnih sedam meseci
                    case 7: d2 = d2 + 31 + 28 + p + 31 + 30 + 31 + 30 + 31;
                        break;
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 9 (septembar)
                    //Broju dana dodamo broj dana prethodnih osam meseca
                    case 8: d2 = d2 + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31;
                        break;
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 10 (oktobar)
                    //Broju dana dodamo broj dana prethodnih devet meseci
                    case 9: d2 = d2 + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31 + 30;
                        break;
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 11 (novembar)
                    //Broju dana dodamo broj dana prethodnih deset meseci
                    case 10: d2 = d2 + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
                        break;
                    //Slucaj kada smo kao redni broj meseca drugog datuma uneli 12 (decembar)
                    //Broju dana dodamo broj dana prethodnih jedanest meseci
                    case 11: d2 = d2 + 31 + 28 + p + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
                        break;
                    //Ako nijedan slucaj nije realizovan
                    default: label4.Text = "Uneli ste pogresan datum!!!";
                        break;
                }
                //Ispisujemo koja je razlika u danima izmedju unetih datuma
                label4.Text = "Razlika u danima izmedju dva datuma je " + (d2 - d1);
            }
        }
    }
}

Покренемо програм и проверимо за конкретне операције :

Слика 6.86. Изглед форме након покретања програма