krog ( kopija )

krog ( kopija )

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



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Krog
{
    class Krog
    {

        public double polmer;

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

        public double Kot(double k)
        {
            return k;
        }

        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 Obseg()
        {
            return 2*Math.PI*polmer;
        }

        public double Ploscina()
        {
            return Math.PI * polmer * polmer;
        }

        public double PloscinaOcrtanegaKvadrata()
        {
            return 4 * polmer*polmer; //2r*2r

        }

        public double PloscinaVcrtanegaKvadrata()
        {
            return 2*polmer*polmer;
        }
    }

    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.Kot(45);
                double lok = Math.PI*tab[l]*kot/180;
                double izsek = Math.PI*tab[l]*tab[l]*kot/360;
                Console.WriteLine(l + 1 + ". krog: \nPolmer: " + tab[l] + "\nKot:: " + kot + "° " + "\nObseg: " + Math.Round(o,2) + "cm");
                Console.WriteLine("Dolžina krožnega loka: " + Math.Round(lok,2) + " cm.");
                Console.WriteLine("Ploščina krožnega izseka: " + Math.Round(izsek, 2) + " cm2");


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


                double ploscVc=krog.PloscinaVcrtanegaKvadrata();
                Console.WriteLine("Ploščina včrtanega kvadrata: " + Math.Round(ploscVc,2) + " cm2");

                double ploscOc = krog.PloscinaOcrtanegaKvadrata();
                Console.WriteLine("Ploščina očrtanega kvadrata: " + Math.Round(ploscOc,2) + "cm2 ");
                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 tabelo 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)

Kot

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


public double Kot(double k)
        {
            return k;
        }
 

Obseg in ploščina

  • Še funkciji, ki vračata obseg ter ploščino kroga :


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

        public double Ploscina()
        {
            return Math.PI * polmer * polmer;
        }

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 kroga, nato drugega, itd. Podobno za očrtane kvadrate. Tukaj sta metodi za izračun ploščin:


public double PloscinaOcrtanegaKvadrata()
        {
            return 4 * polmer*polmer; //2r*2r

        }

        public double PloscinaVcrtanegaKvadrata()
        {
            return 2*polmer*polmer;
        }

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.Kot(45);
                double lok = Math.PI*tab[l]*kot/180;
                double izsek = Math.PI*tab[l]*tab[l]*kot/360;
                Console.WriteLine(l + 1 + ". krog: \nPolmer: " + tab[l] + "\nKot:: " + kot + "° " + "\nObseg: " + Math.Round(o,2) + "cm");
                Console.WriteLine("Dolžina krožnega loka: " + Math.Round(lok,2) + " cm.");
                Console.WriteLine("Ploščina krožnega izseka: " + Math.Round(izsek, 2) + " cm2");


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


                double ploscVc=krog.PloscinaVcrtanegaKvadrata();
                Console.WriteLine("Ploščina včrtanega kvadrata: " + Math.Round(ploscVc,2) + " cm2");

                double ploscOc = krog.PloscinaOcrtanegaKvadrata();
                Console.WriteLine("Ploščina očrtanega kvadrata: " + Math.Round(ploscOc,2) + "cm2 ");
                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čunan po formuli l=pi*r*alfa/180, pri čemer je alfa središčni kot.


  double lok = Math.PI*tab[l]*kot/180;

tab[l] je polmer iz tabele polmerov na l-tem mestu.

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°


        double izsek = Math.PI*tab[l]*tab[l]*kot/360;

Rezultat

(rezultat1.del.jpg)

Rezultat

(rezultat2.del.jpg)
0%
0%