krog

krog

Avtor: Alisa Ibrahimović

Razred krog

  • Navodilo
  • Napišite razred Krog, ki ima podan polmer. Vaš razred naj vsebuje metodi za izračun obsega in ploščine.
  • Ugotovi, koliko različnih krogov (imajo različne polmere) je v tabeli.
  • Vsem krogom v tabeli povečaj polmer za 10%.
  • Vsem krogom v tabeli bomo včrtali in očrtali kvadrate. Tako bo za vsak krog nastal kvadratni "plašč". Izračunaj skupno ploščino teh plaščev.
  • Vsaj en (zaželjeno pa več) problem po vaši izbiri ... (opišite jih!)

Celoten program



namespace Krog
{
    class Krog
    {

        public double polmer;

        public Krog(double r)
        {
            this.polmer = r;
        }

        public int[] VrniTabelo(int dolzina)
        {
            int[] tabelaPolmerov = new int[dolzina];
            //boben naključnih števil
            Random naklj = new Random();
            for (int i = 0; i < dolzina; i++)
            {
                //tabela polmerov
                tabelaPolmerov[i] = naklj.Next(1, 15); //naključen polmer med 1 in 15
            }

            return tabelaPolmerov;
        }

        public double VrniKot()
        {
            Random naklj = new Random();

            return naklj.Next(0, 360); //kot v stopinjah

        }

        public double VrniKrozniLok()
        {
            Krog z = new Krog(1);
            double y = z.VrniKot();
            double lok = Math.PI * polmer * y / 180;   //l=pi*r*alfa/180

            return Math.Round(lok, 2);
        }

        public double VrniKrozniIzsek()
        {
            Krog k = new Krog(1);
            double y = k.VrniKot();
            double izsek = Math.PI * Math.Pow(polmer, 2) * y / 360;
            return Math.Round(izsek, 2);
        }

        public double Obseg()
        {
            return Math.Round(2 * Math.PI * polmer,2);
        }

  public double Ploscina()
        {
            return Math.Round(Math.PI * (Math.Pow(polmer, 2)),2);  //math.pow je funkcija za potenciranje (power)
        }
        public double PloscinaOcrtanegaKvadrata()
        {
            return 4 * (Math.Pow(polmer, 2)); //2r*2r

        }

        public double PloscinaVcrtanegaKvadrata()
        {
            return Math.Pow(polmer, 2) + Math.Pow(polmer, 2);

        }
    }

    class Program
    {
        static void Main(string[] args)
        {

            Krog t = new Krog(1);//objekt z imenom t tipa Krog
            int[] tab;
            tab=t.VrniTabelo(5); //v tab je sedaj shranjenih 5 naključnih polmerov od 1 do 15


            //izpis tabele polmerov
            Console.WriteLine("Tabela polmerov: ");
            for (int j = 0; j < tab.Length; j++)
            {
                Console.WriteLine(tab[j]);
            }
            Console.WriteLine();



            //tabela, katere elementi so za 10% večji od prvotne tabele polmerov
            double[] tabelavecjihPolmerov = new double[tab.Length];
            Console.WriteLine("Tabela polmerov, ki so za 10% večji: ");
            for (int k = 0; k < tab.Length;k++ )
            {
                tabelavecjihPolmerov[k] = tab[k] + tab[k]* 0.1;
                Console.WriteLine(tabelavecjihPolmerov[k]);
            }

            Console.WriteLine();

            double skupnaPloscinaOcrtanih = 0.0;
            double skupnaPloscinaVcrtanih = 0.0;

            for (int l = 0; l < tab.Length; l++)
            {
                Krog krog = new Krog(tab[l]);  //definiramo objekt tipa Krog s polmerom v tabeli
                double o = krog.Obseg();
                double kot = krog.VrniKot();
                double lok = krog.VrniKrozniLok();
                double izsek = krog.VrniKrozniIzsek();
                Console.WriteLine(l + 1 + ". krog: \nPolmer: " + tab[l] + "\nKot:: " + kot + "° " + "\nObseg: " + o + "cm");
                Console.WriteLine("Dolžina krožnega loka: " + lok + " cm.");
                Console.WriteLine("Ploščina krožnega izseka: " + izsek + " cm2");


                double p = krog.Ploscina();
                Console.WriteLine("Ploščina kroga: " + p + "cm2");


                double ploscVc=krog.PloscinaVcrtanegaKvadrata();
                Console.WriteLine("Ploščina včrtanega kvadrata: " + ploscVc + " cm");

                double ploscOc = krog.PloscinaOcrtanegaKvadrata();
                Console.WriteLine("Ploščina očrtanega kvadrata: " + ploscOc + "cm ");
                skupnaPloscinaOcrtanih += ploscOc; // k skupni ploščini prištejemo trenutno


                skupnaPloscinaVcrtanih += ploscVc;
                Console.WriteLine();
            }
            Console.WriteLine("Skupna ploščina vseh včrtanih kvadratov je " + skupnaPloscinaVcrtanih + " cm2.");
            Console.WriteLine("Skupna ploščina vseh očrtanih kvadratov je " + skupnaPloscinaOcrtanih + " cm2.");

            Console.ReadLine();
        }
    }
}

Razlaga programa

Napisala sem razred z Imenom Krog, ki ima podan polmer, tipa double.


 public Krog(double r)
        {
            this.polmer = r;
        }

Iz navodila je razvidno, da potrebujemo tabelo polmerov, saj bomo metode izvajali na več različnih krogih. Napisala sem tudi metodo, ki vrne tabelo nekaj polmerov.
 public int[] VrniTabelo(int dolzina)
        {
            int[] tabelaPolmerov = new int[dolzina];
            //boben naključnih števil
            Random naklj = new Random();
            for (int i = 0; i < dolzina; i++)
            {
                //tabela polmerov
                tabelaPolmerov[i] = naklj.Next(1, 15); //naključen polmer med 1 in 15
            }

            return tabelaPolmerov;
        }

Tabela je tipa int (lahko bi bila tudi double). Metoda prejme parameter, tj. dolžina, ki nam pove, koliko polmerov želimo vrniti v tabeli. Z Random definiramo boben naključnih števil, ki jih kasneje s for zanko zapišemo v tabelo. Izbrala sem si polmere med 1 in 15. Metoda na koncu vrne tablo polmerov.

Razlaga programa

V Main-u sem tabelo tudi lepo izpisala.

Za dolžino sem si izbrala 5:
Krog t = new Krog(1);//objekt z imenom t tipa Krog
            int[] tab;
            tab=t.VrniTabelo(5); //v tab je sedaj shranjenih 5 naključnih polmerov od 1 do 15

Dobimo:

(izpisTabele.jpg)

Povečaj polmere

  • Vsem polmerom v tabeli povečaj polmer za 10%. To lahko zapoišemo kar v Main-u:


//tabela, katere elementi so za 10% večji od prvotne tabele polmerov
            double[] tabelavecjihPolmerov = new double[tab.Length];
            Console.WriteLine("Tabela polmerov, ki so za 10% večji: ");
            for (int k = 0; k < tab.Length;k++ )
            {
                tabelavecjihPolmerov[k] = tab[k] + tab[k]* 0.1;
                Console.WriteLine(tabelavecjihPolmerov[k]);
            }

Vsem polmerom prištejemo še 10% in izpišemo tabelo novih polmerov.

(vecjiPolmeri.jpg)

Obseg in ploščina

  • Za vsak krog izračunaj njegov obseg in ploščino. Vrača ga funkcija VrniKot:


 public double VrniKot()
        {
            Random naklj = new Random();

            return naklj.Next(0, 360); //kot v stopinjah

        }

Z Random definiramo boben naključnih kotov med 0 in 360°, ki jih funkcija vrne.

Obseg in ploščina

  • Še funkciji, ki vračata obseg ter ploščino kroga (zaokroženo na 2 decimalki):


 public double Obseg()
        {
            return Math.Round(2 * Math.PI * polmer,2);
        }

  public double Ploscina()
        {
            return Math.Round(Math.PI * (Math.Pow(polmer, 2)),2);  //math.pow je funkcija za potenciranje (power)
        }

Metodi sta enostavni, uporabila sem formulo za obseg o=2*pi*r, za ploščino pl=pi*r^2

Kvadratni plašč

• Vsem krogom v tabeli bomo včrtali in očrtali kvadrate. Tako bo za vsak krog nastal kvadratni plašč. Izračunaj skupno ploščino teh plaščev.

Najprej moramo izračunati ploščino včrtanega kvadrata prvega kvadrata, nato drugega, itd. Podobno za očrtane kvadrate. Tukaj sta metodi za izračun ploščin:


public double PloscinaOcrtanegaKvadrata()
        {
            return 4 * (Math.Pow(polmer, 2)); //2r*2r

        }

        public double PloscinaVcrtanegaKvadrata()
        {
            return Math.Pow(polmer, 2) + Math.Pow(polmer, 2);

        }

Funkciji nam vrneta ploščino včrtanega oz. očrtanega kvadrata i-temu krogu. V Main-u pa lahko izračunamo skupno vsoto očrtanih in skupno vsoto včrtanih kvadratov(Slika kasneje).

Kvadratni plašč

Vsoto vseh kvadratnih plaščev lahko izračunamo v Main-u:


           double skupnaPloscinaOcrtanih = 0.0;
            double skupnaPloscinaVcrtanih = 0.0;

            for (int l = 0; l < tab.Length; l++)
            {
                Krog krog = new Krog(tab[l]);  //definiramo objekt tipa Krog s polmerom v tabeli
                double o = krog.Obseg();
                double kot = krog.VrniKot();
                double lok = krog.VrniKrozniLok();
                double izsek = krog.VrniKrozniIzsek();
                Console.WriteLine(l + 1 + ". krog: \nPolmer: " + tab[l] + "\nKot:: " + kot + "° " + "\nObseg: " + o + "cm");
                Console.WriteLine("Dolžina krožnega loka: " + lok + " cm.");
                Console.WriteLine("Ploščina krožnega izseka: " + izsek + " cm2");


                double p = krog.Ploscina();
                Console.WriteLine("Ploščina kroga: " + p + "cm2");


                double ploscVc=krog.PloscinaVcrtanegaKvadrata();
                Console.WriteLine("Ploščina včrtanega kvadrata: " + ploscVc + " cm");

                double ploscOc = krog.PloscinaOcrtanegaKvadrata();
                Console.WriteLine("Ploščina očrtanega kvadrata: " + ploscOc + "cm ");
                skupnaPloscinaOcrtanih += ploscOc; // k skupni ploščini prištejemo trenutno


                skupnaPloscinaVcrtanih += ploscVc;

Razlaga

  • Ploščina včrtanih ter očrtanih kvadratov je na začetku enaka 0
  • Sprehodimo se po tabeli ter vsakič definiramo nov objekt tipa Krog
  • uporabimo vse metode in s Console.WriteLine izpisujemo vrednosti
  • pri vsoti vseh očrtanih/včrtanih kvadratov sproti prištevamo trenutno vrednost

Krožni lok

  • Za vsak krog izračunaj dolžino njegovega krožnega loka.

Vemo, da se krožni lok izračuan po formuli l=pi*r*alfa/180, pri čemer je alfa središčni kot.


  public double VrniKrozniLok()
        {
            Krog z = new Krog(1);
            double y = z.VrniKot();
            double lok = Math.PI * polmer * y / 180;   //l=pi*r*alfa/180

            return Math.Round(lok, 2);
        }

Krožni izsek

  • Za vsak krog izračunaj ploščino krožnega izseka.

Podobno kot pri loku uporabimo formulo za krožni izsek plIzsek=pi*r^2*alfa/360°


        public double VrniKrozniIzsek()
        {
            Krog k = new Krog(1);
            double y = k.VrniKot();
            double izsek = Math.PI * Math.Pow(polmer, 2) * y / 360;
            return Math.Round(izsek, 2);
        }

Rezultat

(rezultat1.del.jpg)

Rezultat

(rezultat2.del.jpg)
0%
0%