Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

Podobne dokumenty
Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Wprowadzenie do Scilab: macierze

Podstawy programowania skrót z wykładów:

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

1 Powtórzenie wiadomości

Podstawy Programowania C++

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Szablony klas, zastosowanie szablonów w programach

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Proste programy w C++ zadania

2 Przygotował: mgr inż. Maciej Lasota

Zadania z podstaw programowania obiektowego

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Wprowadzenie do Scilab: macierze

ROZDZIAŁ 2. Operatory

MATERIAŁY DO ZAJĘĆ II

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Wstęp do wskaźników w języku ANSI C

Lab 9 Podstawy Programowania

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

Programowanie obiektowe - zadania

Język C zajęcia nr 11. Funkcje

Język C, tablice i funkcje (laboratorium)

IX. Wskaźniki.(3 godz.)

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Java Podstawy. Michał Bereta

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

PARADYGMATY PROGRAMOWANIA Wykład 3

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

3. Wykład Układy równań liniowych.

1 Podstawy c++ w pigułce.

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Próbny egzamin z matematyki dla uczniów klas II LO i III Technikum. w roku szkolnym 2012/2013

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Język C, tablice i funkcje (laboratorium, EE1-DI)

Funkcje wymierne. Jerzy Rutkowski. Teoria. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

Wskaźniki w C. Anna Gogolińska

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

Wykład 3 Składnia języka C# (cz. 2)

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

Układ równań liniowych

Podstawy i języki programowania

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

DB Algebra liniowa semestr zimowy 2018

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

V. WYMAGANIA EGZAMINACYJNE

Zmienne, stałe i operatory

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Wprowadzenie do Scilab: macierze

Część 4 życie programu

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

ROZKŁAD MATERIAŁU DLA KLASY I LICEUM I TECHNIKUM (ZAKRES PODSTAWOWY I ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ

Programowanie Komputerów

Zad. 5: Układ równań liniowych liczb zespolonych

Język C++ zajęcia nr 2

Struktury, unie, formatowanie, wskaźniki

O MACIERZACH I UKŁADACH RÓWNAŃ

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Przeciążanie operatorów

Zadanie 1. Algorytmika ćwiczenia

C++ wprowadzanie zmiennych

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Wprowadzanie danych z klawiatury. Wyjątki związane z wprowadzaniem danych, przekroczeniem rozmiaru tablicy, dzieleniem przez zero itd.

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wstęp do programowania

W dowolnym momencie można zmienić typ wskaźnika.

1 Zbiory i działania na zbiorach.

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Rozkład materiału a wymagania podstawy programowej dla I klasy czteroletniego liceum i pięcioletniego technikum. Zakres rozszerzony

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

5. Rozwiązywanie układów równań liniowych

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

Języki i techniki programowania Ćwiczenia 2

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

1 Podstawy c++ w pigułce.

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Klasy i obiekty. Programowanie zorientowane obiektowo. Case study: Filmoteka Case study: Klasa Akademik

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Wykład 2 Składnia języka C# (cz. 1)

4. Funkcje. Przykłady

Podstawy i języki programowania

Transkrypt:

Zadanie 1. Utworzyć klasę reprezentującą liczby wymierne. Obiekty klasy powinny przechowywać licznik i mianownik rozłożone na czynniki pierwsze. Klasa powinna mieć zdefiniowane operatory czterech podstawowych działań arytmetycznych oraz operator konwersji do typu double, zwracający wartość (być może nieco niedokładną). Ilość czynników zarówno licznika jak i mianownika nie można ograniczać. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 2. Utworzyć klasę Wektor reprezentującą wektor N elementów rzeczywistych oraz klasę Permulatacja reprezentujące permutacje elementów tego wektora. Wartość N jest określana podczas tworzenia i nie może mieć żadnego ograniczenia. Klasy powinny mieć konstruktory umożliwiające określenie N i poszczególnych elementósw, a klasa Permulatacja dodatkowo konstruktor tworzący permutację tożsamą. W klasach powinny być zdefiniowane również operatory przypisania zarówno od innych obiektów tej klasy jak i od tablic parametrów (w tym przypadku nie można określić N powinno być nie zmieniane). Na obiektach tych klas należy zdefiniować następujące operacje: 1. Permulatcja * Permulatcja / Permulatcja składanie permutacji 2. Permulatcja * Wektor / Wektor zastosowanie permutacji do wektora Klasy powinny mieć operatory indeksowania, zwracające podany parametr oraz operatory konwersji na tablicę parametrow. Parametry klasy Wektor mają typ double, a klasy Perm typ int. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 3. Utworzyć klasę Liczba reprezentują dowolnie długie liczby całkowite i operacje na nich. Klasa powinna mieć szereg konstruktorów: 1. bez argumentowy tworzący obiekt reprezentujący liczbę 0 2. o argumencie long tworzący obiekt reprezentujący podaną liczbę 3. o argumencie const *short tworzący object o cyfrach zapisanych w podanej tablicy 4. o argumencie const *char tworzący object o cyfrach zapisanych w podanym tekście Dla obiektow klasy umożliwić wykonanie następujących operacji: Liczba + Liczba / Liczba Liczba + long / Liczba long + Liczba / Liczba Liczba Liczba / Liczba Liczba long / Liczba long Liczba / Liczba Klasa powinna mieć operator indeksowania, zwracający podaną cyfrę oraz operator konwersji na typ long (ignorujący możliwość wystąpienia przepełnienia). Zdefiniować należy rownież operatory wczytywania obiektow ze strumienia i wyprowadzania do strumienia. Ilość cyfr nie może być ograniczona. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 4. Utworzyć klasę Wektor reprezentującą wektory liczb rzeczywistych i realizującą operacje na nich. Długość wektora nie może być ograniczona. W przypadku przekroczenia domyślnej długości należy za alokować dodatkową pamięć. Klasa powinna mieć następujące kostruktory: 1. konstruktor określający ilość elementów wektora, oraz opcjonalny argument typu const double*, określający adres tablicy z elementami inicjującymi. W przypadku pominięcia drugiego argumentu, konstruktor powinien inicjować wektor zerami. 2. konstruktor określający ilość elementów wektora, oraz argument typu double,tworzący wektor o jednakowych elementach. 3. dodatkowe dwa konstruktory, umożliwiające inicjowanie za pomocą elementów typu float. Klasa powinna umożliwiać wykonanie przypisania od wartości: 1. float inicjalizacja wszystkich elementów wektora jednakową wartością 2. double inicjalizacja wszystkich elementów wektora jednakową wartością 3. const float* inicjalizacja elementów wektora na podstawie tablicy (tak jak w konstruktorze, ale bez możliwości zmiany rozmiaru) 4. const double* inicjalizacja elementów wektora na podstawie tablicy (tak jak w konstruktorze, ale bez możliwości zmiany rozmiaru) 5. const Wektor& przypisanie wektora z możliwością zmiany rozmiaru W klasie powinny być zaimplementowanie operacje dodawania, odejmowania wektorow oraz mnożenia przez skalar. Dodatkowo należy zdefiniować operator konwersji do typu double zwracający długość wektora, operator konwersji na typ const double* (zwracający wskazanie na tablicę kolejnych elementów wektora) oraz operator indeksowania, zwracający podany element wektora. Dodatkowo należy zdefiniować operatory porównania == i!=. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 5. Utworzyć klasę Punkt reprezentującą punkty N-wymiarowej przestrzeni (każdy obiekt reprezentuje jeden punkt) i klasę Transformacja reprezentującą liniowe przekształcenia na tych punktach. Ilość wspołrzędnych N nie może być ograniczona. Liniowe przekształcenie punktu N- wymiarowego uzyskuje się przez pomnożenie współrzędnych punktu przez macierz i dodaniu wektora wyrazow wolnych. Macież jak i wyrazy wolne są parametrami przekształcenia. Klasy powinny mieć konstruktory o argumentach określających N i tablice parametrów. Na elementach tych klas można wykonywać następujące operacje: 1. Transformacja * Punkt / Punkt wykonanie przekształcenia 2. Transformacja + Transformacja / Transformacja składanie przekształceń Klasa Punkt powinna mieć operator indeksowania, zwracający podany element, a klasa Transformacja metody publiczne umożliwiające poznanie parametrow przekształcenia. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 6. Utworzyć klasę Liczba reprezentującą stało pozycyjne liczby rzeczywiste o dowolnej długości i operacje na nich. Klasa powinna mieć następujące konstruktory: 1. bez argumentowy, tworzący obiekt reprezentujący 0.0 2. o argumencie double tworzący obiekt reprezentujący podaną liczbę Dla obiektow klasy umożliwić wykonanie następujących operacji: 1. Liczba + Liczba / Liczba 2. Liczba + double / Liczba 3. double + Liczba / Liczba 4. Liczba Liczba / Liczba 5. Liczba double / Liczba 6. double Liczba / Liczba Klasa powinna mieć też operator konwersji na typ double oraz operator wczytywania obiektów ze strumienia i wyprowadzania do strumienia. Ilość cyfr zarówno przed przecinkiem jak i po przecinku nie można ograniczyć. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 7. Utworzyć klasę Macierz reprezentującą macierze liczb rzeczywistych i operacje na nich. Dla obiektów utworzonej klasy umożliwić wykonywanie następujących operacji: 1. Macierz + Macierz! Macierz 2. Macierz - Macierz! Macierz 3. Macierz * Macierz! Macierz 4. Macierz * double! Macierz 5. double * Macierz! Macierz Klasa powinna mieć konstruktor dwu argumentowy typu int, tworzący macierz zerową o podanych rozmiarach. Dodatkowo klasa powinna umożliwić wykonanie wyrażenia M[a][b] (gdzie M jest typu Macierz&, a a i b typu int) zwracającego double&. Klasa powinna mieć też operator wczytywania obiektów ze strumienia i wyprowadzania do strumienia. Rozmiaru macierzy nie można ograniczyć. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 8. Utworzyć klasę Wielomian reprezentującą wielomiany jednej zmiennej i operacje na nich. Klasa powinna mieć konstruktor o argumencie całkowitym, tworzący wielomian podanego stopnia o zerowych współczynnikach oraz drugi konstruktor o argumencie całkowitym (określającym rząd) i cost double* (określającym wspołczynniki). Dla obiektow utworzonej klasy umożliwić wykonywanie następujących operacji: Wielomian + Wielomian! Wielomian Wielomian - Wielomian! Wielomian Wielomian * double! Wielomian double * Wielomian! Wielomian Wielomian(double)! double obliczenie wartości wielomianu dla podanej wartości zmiennej niezależnej Klasa powinna mieć operator indeksowania, zwracający podany współczynnik oraz operatory wczytywania obiektów ze strumienia i wyprowadzania do strumienia. Ilość współczynników wielomianu nie można ograniczać. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 9. Utworzyć klasę Kalkulator, reprezentującą kalkulator z użyciem odwrotnej notacji polskiej. Obiekt klasy reprezentuje stos, na który można dostawiać liczby typy double poprzez wykonanie operacji dodawania. Kalkulator umożliwia wykonanie zdefiniowanych operacji, powodujących pobranie argumentow ze stosu, wykonanie działania i umieszczenie wyniku na stosie. Operacje wykonuje się na obiekcie za pomocą operatora wywołania funkcji z argumentem będącym zdefiniowanym typem wyliczeniowym. Wynik działania mozna poznać na dwa sposoby: odczytując wartość ze szczytu stosu bez zdejmowania jej (operator rzutowania na typ double) lub zdejmując ją ze stosu (operator wywołania funkcji bez argumentowej). Prócz tego klasa powinna mieć operator indeksowania, umożliwiający odczyt dowolnej liczby ze stosu (określając jej pozycję względem stosu) oraz operatory wczytywania obiektów ze strumienia i wyprowadzania do strumienia. Rozmiaru stosu nie można ograniczać. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 10. Utworzyć klasę Modulo reprezentującą liczby całkowite w zakresie 0...N 1 i działania modulo N. Klasa powinna mieć konstruktor umożliwiający utworzenie zadanej liczby i konstruktor kopiujący. Dla obiektów utworzonej klasy umożliwić wykonywanie następujących operacji: 1. Modulo + Modulo! Modulo 2. Modulo - Modulo! Modulo 3. Modulo * Modulo! Modulo Prócz tego należy zdefiniować operator konwersji na typ całkowity oraz operator przypisania od typu int i Modulo. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 11. Utworzyć klasę MultiLin reprezentującą funkcję przedziałami liniową jednej zmiennej. Każda instancja obiektu klasy będzie definiowała szereg rozłącznych przedziałow, a każdym z przedziałów współczynniki liniowej zależności. Obiekty takie można dodawać (o ile mają jednakowe przedziały) odpowiada to dodawaniu funkcji przez nie reprezentowanych lub mnożyć (o ile nie posiadają zachodzących na siebie przedziałów) odpowiada to sklejaniu przedziałów dwu funkcji w jedną funkcję. Klasa powinna mieć konstruktor umożliwiający utworzenie dowolnej przedziałami liniowej funkcji oraz konstruktor kopiujący. Powinna również posiadać operator wywołania funkcji o argumencie typu double odpowiada to obliczeniu wartości funkcji dla danej wartości zmiennej niezależnej. Prócz tego klasa powinna mieć operatory wczytywania obiektów ze strumienia i wyprowadzania do strumienia. Ilość przedziałów nie można ograniczać. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 12. Utworzyć klasę Lineq reprezentującą równanie liniowe N niewiadomych. Dla obiektów utworzonej klasy umożliwić wykonywanie następujących operacji: 1. Lineq + Lineq! Lineq dodawanie stronami równań 2. Lineq - Lineq! Lineq odejmowanie stronami równań 3. Lineq * double! Lineq mnożenie stronami równania przez zadaną liczbę 4. double * Lineq! Lineq mnożenie stronami równania przez zadaną liczbę Klasa powinna mieć konstruktor kopiujący oraz konstruktor umożliwiający utworzenie dowolnego równania o zadanych współczynnikach. Prócz tego klasa powinna mieć operatory wczytywania obiektów ze strumienia i wyprowadzania do strumienia, operator indeksowania, zwracający zadany współczynnik oraz operatory porównania == i!=. Ilość niewiadomych w równaniu nie można ograniczać. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 13. Utworzyć klasę Napis reprezentującą teksty i realizującą operacje na nich. Długość tekstu nie może być ograniczona. Klasa powinna mieć konstruktor domyślny (tworząca pusty tekst), konstruktor kopiujący i konstruktor inicjujący tekstem o podanym adresie. Klasa powinna umożliwiać wykonanie operacji przypisania o postaci a = Napis("abcdef"); jak i o postaci a = "abcdef"; Operacje wykonywane na tekście to operator + (sklejanie tekstów) jak i operator indeksowania (zwracający wybrany znak tekstu). Klasa powinna mieć także zdefiniowany operator konwersji na typ const char* oraz operatory porównania. return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 14. Utworzyć klasę Portfel reprezentującą pieniądze i realizującą operacje na nich. Klasa powinna mieć konstruktor domyślny (tworząca pusty portfel z 0,00 zł), konstruktor kopiujący i konstruktor inicjujący pieniędzmi o podanym adresie. Klasa powinna umożliwiać wykonanie operacji przypisania o postaci a = Portfel(20,30); jak i o postaci a = 20,30; Operacje wykonywane na pieniądzach to: operator + (dodawanie pieniędzy) operator (odejmowanie pieniędzy operator * (mnożenie pieniędzy) operator / (dzielenie pieniędzy return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba

Zadanie 15 Utworzyć klasę Student reprezentującą średnią studenta i realizującą operacje na tej średniej. Klasa powinna mieć konstruktor domyślny (tworzącą Studenta ze średnią 5,00), konstruktor kopiujący i konstruktor inicjujący średnią o podanym adresie. Klasa powinna umożliwiać wykonanie operacji przypisania o postaci a = Student(4,30); jak i o postaci a = 4,30 Operacje wykonywane na pieniądzach to: operator + (dodawanie do średniej) operator (odejmowanie od średniej return Niepoprawny wynik działania funkcji mnoz(a,b) klasy liczba