Zadania - zestaw 12/2

  1. Zdefiniować i zastosować funkcje lub procedury (zależnie od potrzeb) realizujące poniższe czynności:
    1. Przedstawić podaną liczbę wpostaci binarnej.
    2. Przedstawić podaną liczbę wpostaci hexadecymalnej.
    3. Obliczyć wartość sin(x) = x/1! - x3/3! + x5/5! - x7/7! + ...
  2. Zdefiniować i zastosować funkcje lub procedury (zależnie od potrzeb) realizujące poniższe czynności:
    1. Obliczenie wartości ex = 1 + x/1! + x2/2! + x3/3! + x4/4! + ...
    2. Wyznaczenie: liczności, średniej i odchylenia standardowego ciągu liczb rzeczywistych przekazanych w tabeli. (jako funkcja)
    3. Wyznaczenie: maksimum, minimum i rozstępu ciągu liczb rzeczywistych przekazanych w tablicy. Wyniki jako kolejne elementy tablicy wynikowej. (jako procedura)
  3. Zaprojektować, zaimplementować i wykorzystać praktycznie klasy realizujące poniższe wytyczne:
    1. Klasa rozwiązująca równanie ax2 + bx + c = 0 (pola: a,b,c,wynik; metody: liczDelta, liczPierwiastki).
    2. Klasa obliczająca cos(x) = 1 - x2/2! + x4/4! - x6/6! + ... z dokładnościa do zadanego eps (pola: x, eps, wynik, blad, liczbaUlamkow; metody: obliczCosX, obliczBlad)
    3. Klasa produkująca kontrolki (3 typy) (pola: typ, left, top , width, height, ilosc; metody: wykonaj_Jedna, wykonaj_Zadaną_IloscPionowo, wykonaj_Zadaną_Ilosc_Poziomo, wykonaj_Zadaną_Ilosc_w_Kaskadzie)
    4. Klasa sortująca tabelę liczb (pola: dlugoscTabeli, kierunekSortowania, metodaSortowania; metody sortujBabelkowo, sortujInaczej, podajCzasOstatniegoSortowania)
    5. Klasa z metodami statycznymi realizującymi A1 i A2.

Uwaga! Funkcje/procedury z zakresu A i B powinny być niezależne od wszelkich deklaracji występujacych poza ich wnętrzem

Uwaga! Klasy mają mieć własne konstruktory (obowiązkowo) i destruktory (opcjonalnie): np. mają one na formularzu tworzyć/niszczyć własne pola edycyjne do wpisywania danych.

Uwaga! W razie problemu z dostępem do kontrolek z destruktora, rozwiązaniem jest użycie metody Invoke formularza. Przykład poniżej. (Rozwiązanie jest połowiczne, gdyż nie sprawdza się przy pozostawieniu obiektu do zakończenia programu)

  public class MojaKlasa
  {
    private Form form;
    private TextBox tbx;
    delegate void proceduraUsuwajaca();
    private proceduraUsuwajaca usuwaj;    

    private void Tworz()
    {
      tbx = new TextBox();
      tbx.Text = "podaj A";
      tbx.Location = new Point(0,0);
      form.Controls.Add(tbx);
    }
        
    private void Usun()
    {
      form.Controls.Remove(tbx);      
    }

    // Konstruktor    
    public MojaKlasa(Form f)
    {
      form = f;
      Tworz();      
    }

    // Destruktor
    ~MojaKlasa()
    {
      usuwaj = Usun;
      form.Invoke(usuwaj);
    }
  }