Zanke v C# - naloge

Zanke v C# - naloge

Avtor: Alisa Ibrahimović

Naloga 1

Navodilo: napiši funkcijo, ki na zaslon izpiše, koliko števil v dani tabeli je večjih od 50 (funkcija je uporabna npr. pri izračunu procenta tistih študentov, ki so kolokvij pisali pozitivno). Uporabi do while zanko!


int[] tabela = { 89, 12, 51, 5, 49, 70, 45, 99,100,56 };
            int dolzina = tabela.Length;
            int stevec = 0;
            do
            {
                if (tabela[dolzina - 1] >= 50)
                {
                    stevec++;
                    dolzina--;
                }
                else if (dolzina == 0)
                {
                    return;
                }
                else
                {
                    dolzina--;
                }
            } while (dolzina > 0);

            Console.Write("Število elementov v tabeli, ki so večja od 50 je " + stevec + ".");
            Console.ReadLine();

Primer 1

  • Komentar
  • podana je tabela celih števil
  • definiramo spremenljivko dolzina, ki je tipa integer, ta nam prešteje št. elementov v tabeli
  • definiramo še spremenljivko stevec, ki je na začetku 0, ta nam bo štela, koliko je takih števil v tabeli
  • uporabimo ukaz do in v zanki napišemo, kaj želimo, da se izvaja
  • s pogojno zanko if preverimo ali je izpolnjen pogoj v oklepaju, tj. če je trenutno število v tabeli večje ali enako 50
  • če je, prejšnjji števec povečamo za 1 in dolžino zmanjšamo za 1
  • zmanjšamo zato, ker tabelo preglejujemo zadenjsko
  • če pa element ni večji ali enak 50, le zmanjšamo dolžino
  • postopek ponavljamo, dokler je izpolnjen pogoj v while, tj. dokler ne pridemo do konca (oz. začetka) tabele
  • v vmesni if zanki pa preverjamo ali je dolzina enaka 0. Če je, končamo.
  • S Console.WriteLine() izpišemo, koliko je takih števil
  • Pozor! Ni dovolj, da napišemo do while zanko brez if zanke za preverjanje, le je dolžina že enaka 0. Saj vemo, da se zanka do izvede tudi takrat, ko je dolzina enaka 0!

Primer 1

Kaj dobimo:

(dowhileprimer1.jpg)

Če pa spremenimo tabelo na: int[] tabela = { 89, 122, 51, 51, 99, 70, 45, 99, 100, 56 };  Potem dobimo:

(dowhileprimer1_.jpg)

Primer 2

Poglejmo si še en primer. Naloga: Napiši funkcijo, ki bo vsakemu številu v dani tabeli prištela 10. Uporabi foreach zanko.

Program:



  int[] tabela = { 89, 12, 51, 5, 49, 70, 45, 99,100,56 };

            foreach (int i in tabela)
            {
                Console.WriteLine(i + 10);
            }

            Console.ReadLine();

Primer 2

  • Komentar
  • najprej definiramo tabelo tipa integer (uporabila sem enako tabelo kot pri primeru z do while zanko)
  • z zanko foreach določimo parameter i, ki nam predstavlja trenutni element v tabeli
  • s Console.WriteLine() izpišemo na zaslon za 10 povečana števila iz dane tabele
  • tabela pa ostane enaka, saj smo na zaslon izpisali število iz tabele + 10

In kaj dobimo ob zagonu programa:

(foreachprimer2.jpg)

Primer 3

Poglejmo si še en primer.

  • Naloga: Napiši funkcijo, z do while zanko poišče in izpiše največji element v tabeli.


int[] tab = { 200, 4, -1, 6, 8, 5, 2, 3, 13, 56, 34, 12, 459 };
            int maksimum = tab[0]; //začetni maksimum
            int dolzina=tab.Length;
            do
            {
                if (tab[dolzina - 1] > maksimum)
                {
                    maksimum = tab[dolzina - 1];
                }
                dolzina--;
            } while (dolzina > 0);
            Console.Write("Največji element tabele je " + maksimum);
            Console.ReadLine();

Primer 3

  • Komentar
  • največji element iščemo na že ustvarjeni tabeli celih števil
  • na začetku definiramo spremenljivko maksimum, ki je enaka prvemu elementu tabele
  • nato se z do zanko sprehodimo po vseh elementih tabele (zadenjsko) in preverimo ali je trenutni element večji od trenutnega maksimuma
  • če je, postane nov maksimum ta element
  • s Console.Write() izpišemo, kateri element je največji

Ob zagonu programa dobimo:

(dowhileprimer3.jpg)

Primer 4

Naloga S foreach zanko poišči ali je v dani tabeli neko število. Npr. Zanima nas, če je v tabeli tab število 12.


int[] tab = { 20, 14, -12, 13, 56, 3, 12, 9,77 };
            int iskanoStevilo = 12;
            bool najdeno=false;

            foreach(int st in tab)
            {
                if (st == iskanoStevilo)
                {
                    najdeno = true;
                    break;
                }

            }
            if (najdeno)
            {
                Console.WriteLine("Število " + iskanoStevilo + " je v tabeli.");
            }

            else
            {
                Console.WriteLine("Števila " + iskanoStevilo + " ni v tabeli.");
            }
            Console.ReadLine();

Primer 4

  • Komentar
  • na začetku je definirana tabela celih števil in iskano število
  • definiramo tudi spremenljivko najdeno, ki je tipa bool, tj. logična spremenljivka - na začetku je false
  • z zanko foreach za vsak trenutni element tabele definiramo spremenljivko st
  • na vsakem koraku preverjamo ali je st morda enak iskanemu številu
  • če je, s stavkom break prekinemo delovanje zanke
  • in skočimo na naslednjo if zanko, ki je izven foreach-a
  • v le-tej namreč preverjamo ali je najdeno true. Če je, na zaslon izpišemo, da se iskano število nahaja v tabeli
  • sicer izpišemo, da se ne nahaja v tej tabeli

Kaj dobimo ob zagonu programa:

(foreachprimer4.jpg)

Kaj pa če spremenimo tabelo na:  int[] tab = { 20, 14, -12, 13, 56, 3,  9,77 }; 

in v njej še vedno iščemo število 12?

(foreachprimer4_.jpg)
0%
0%