C, PHP, VB, .NET

Дневникът на Филип Петров


* Задачи от изпит 10.12.2009г.

Публикувано на 13 декември 2009 в раздел ПИК3 Java.

Задача 1. Напишете интерфейс “Геометрична Фигура” (Figure), в който се дефинират действията “сравнение на текущата фигура с друга подадена като параметър” (метод equals, който трябва да връща стойност от тип boolean) и “отпечатване на информацията за фигурата на екрана в конзолата” (print).

Задача 2. Напишете абстрактен клас “равнинна фигура с три определящи параметри” (PlainFigure), който имплементира интерфейс Figure. Член променливи на класа са трите размерности на фигурата (d1, d2 и d3 от тип double) с права за достъп “public” и “final” (тоест те са константи, които ще бъдат инициализирани по-късно по време на изпълнение).

a) Напишете конструктор с подадени параметри, който подрежда входните параметри по големина и така с тях инициализира размерностите на фигурата (тоест d1 трябва да е с най-малка стойност, d2 със средна и d3 с най-голяма).

б) Реализирайте методите print (отпечатва размерностите в конзолата) и еquals (проверява дали размерностите на текущия обект и на подадения са равни).

в) Дефинирайте абстрактни методи “лице” (getArea() с връщана стойност от тип double) и “периметър” (getPerimeter() с връщана стойност от тип double).

Задача 3. Напишете клас “Триъгълник” (Triangle), който наследява класа PlainFigure, като за трите определящи параметъра се приемат страните на триъгълника.

а) Напишете конструктора (с подадени параметри) така, че ако трите подадени параметъра не могат да образуват триъгълник (условието за съществуване на триъгълник е страните да са с положителна дължина и да са изпълнени: d1+d2>d3, d2+d3>d1 и d1+d3>d2), то да бъде върнато изключение с име “TriangleException”.

б) Реализирайте метода getPerimeter() (периметърът на триъгълник е P=d1+d2+d3).

в) Реализирайте метода getArea() (лицето на триъгълник по Хереоновата формула е S = sqrt[p.(p-d1).(p-d2).(p-d3)], където p = P/2 е полупериметърът на триъгълника).

Задача 4. Реализирайте статичен метод в клас Triangle, който показва дали два триъгълника (обекти от клас Triangle подадени като входни параметри) са подобни (тоест коефициентите на пропорционалност на всяка двойка от страните на триъгълниците трябва да са равни).

Задача 5. Реализирайте класа на изключението TriangleException.

Забележка 1: Независимо кои две напълно решени задачи носят оценка среден (3). Всяка допълнително решена задача добавя една единица към оценката.

Забележка 2: Не си губете времето да правите get и set методи – размерностите са константи (т.е. set методи не могат да съществуват) и са с ниво на достъп public (т.е. get методи са безсмислени). Също така не пишете конструктори по подразбиране – в задачите това не се изисква.

 



6 коментара


  1. Малко късно се сетихте за това в деня преди поправителния изпит. Показал съм решение на задачите лично на трима колеги, които дойдоха на консултация.

    Eто задача 1:

    interface Figure{
    public boolean equals(Figure x);
    public void print();
    }

  2. Константин каза:

    А дали може да сложите и решения на някои от задачите? Много би ни помогнало :)

  3. E, предполага се, че ако сте научили всичко до тук, то ще можете да си напишете решението сами. Лошо е да се „зубри“ :)

  4. Predator каза:

    Решенията,няма ли ги или са сложени на друго място.Действително ако има още такива примери + решенията им ще бъде страхотно.:-)))

  5. Константин каза:

    А по какъв начин ни препоръчвате да сортираме по големина страните на триъгълника? Аз ползвах if, обаче падна доста писане понеже за 3 страни има 6 случая :)

  6. Ако swap е функция, която разменя стойностите на две променливи, то сортиране на три променливи може да се направи така:

    if(a>b) swap(a,b);
    if(b>c) swap(b,c);
    if(a>b) swap(a,b);

    Писането няма да е по-малко, защото самата функция swap също е от няколко реда :)

Добави коментар

Адресът на електронната поща няма да се публикува


*