Задача Да се напишат програми на Prolog за: а проверка четността на дадено число



Дата22.04.2017
Размер42.85 Kb.
#19729
ТипЗадача







Задачи (примерни) за държавен изпит
Задача 1. Да се напишат програми на Prolog за:

а) проверка четността на дадено число.

б) пресмятане факториела на цяло неотрицателно число.
Задача 2. За дървото



a








b c d










e f g h i j

k l m n o p q r s


t


да се напише програма

а) отпечатваща пътя от корена на дървото до даден възел

б) обхождаща дървото в дълбочина
Задача 3 Дадена е база от данни със следната релационна схема:
Students (FacN, FirstName, LastName, Semester, SpecialityID)

Specialities (SpecialityID, SpecialityName)

Subjects (SubjectID, SubjectName)

Ratings (FacN, SubjectID, Rating, DateRating)


Базата данни съхранява данни за

Студенти (Students):

  • факултетен номер,

  • име,

  • фамилия,

  • семестър,

  • идентификатор на специалност.

Специалности (Specialities):



  • идентификатор на специалност,

  • наименование на специалност;

Учебни предмети (Subjects):


Оценки (Ratings):



  • факултетен номер,

  • идентификатор на учебен предмет,

  • оценка,

  • дата на провеждане на изпита.




1. Да се напишат команди на SQL, които да създават описаните таблици (като се изберат подходящи типове за съответните колони) и релационните връзки между тях.

1.1. При предположение, че студента няма право да се явява повече от веднъж на изпит по даден предмет на една и съща дата, да се определят първичните ключове за всяка от посочените релации.

2. Да се напише команда на SQL, която:

2.1. Да извежда наименованията на специалностите и броя на студентите от съответните специалности;

2.2. Да извежда факултетните номера, имената и средния успех на студентите със среден успех не по-малък от 4.00, подредени по среден успех в низходящ ред;

2.3. Да извежда учебните предмети, за които студент с факултетен номер 17123 има оценка, равна на максималната оценка измежду оценките на този студент.

Задача 4. Кой алгоритъм за работа с графи (автор и предназначение) се описва от следния код на C++:

#include const N=9; const M=14; typedef struct {int i,j,f;} arc; arc S[M]={ { 1,2, 1 }, { 5,8, 1 }, { 6,7, 1 }, { 6,9, 1 }, { 1,4, 2 }, { 2,3, 3 }, { 3,6, 3 }, { 3,4, 4 }, { 5,6,12 }, { 5,9,13 }, { 2,5,13 }, { 4,7,14 }, { 4,6,16 } }; int prev[N+1]; int getRoot(int i){ int root, savei; root=i; while (prev[root]) root=prev[root]; while (i!=root) { savei = i; i = prev[i]; prev[savei] = root; } return root; } void algorithm() { int MST=0; cout<<"MST:\n"; for (int i=0; i

След изпълнението на програмата променливата MST ще има стойност: ........
Задача 5. Да се възстанови таблично булевата функция на 3 променливи, зададена със следната СДНФ:

f(x, y, z)=(x ٨ not y ٨ z) ٧ (not x ٨ y ٨ not z) ٧ (x ٨ not y ٨ not z)


Задача 6. В група от 15 студенти 6-ма знаят да програмират на Java, 7 на C++ и 7-ма на Pascal.

3-ма знаят Java и C++, 3- ма Java и Pascal и 3-ма C++ и Pascal. Eдин студент ползва и трите езика. Колко студенти не знаят нито един език.



Упътване: Да се използва принципа на „включването и изключването” на изброителната комбинаторика
Задача 7. Дадени са 3 точки в равнината, с координати (x1, y1), (x2, y2), (x3,y3). Съставете логическа функция, която приема стойност True, ако триъгълникът с тези върхове е правоъгълен

Задача 8. Даден е списък data, съдържащ координатите на n точки в равнината {{x1,y1},{x2,y2},….,{xn,yn}}. Искаме тази съвкупност от точки да се апроксимира с функция от вида: a+bcosx+csinx+dcos2x+fsin2x. Какво трябва да добавим в долните процедури на Mathematica, че апроксимацията да се извърши успешно, да се изчертаят точките и функцията в червен цвят.
Fit[data,{………….},x];

Plot[%,{x,………},PlotStyle->…….]

ListPlot[data]

Show[……..,……..]

Задача 9. Какъв ще бъде крайният резултат от изпълнението на по- долната програма в среда Mathematica:
a={a, b, c, d}; b={x, a, d};

c=Union[a,b];

p=Intersection[c, Complement[b,a]];

Length[p]
Задача 10. Да се възстанови графа, зададен със следния вектор от степени на върховете {3, 2 ,3, 4, 2, 2 , 2}
Задача 11: Даден е клас „точка”
class point {

public:


double x, y;

point(double a, double b) {

x = a; y = b;

}

voud out() {



cout <<’(“<

}

};


а) Да се създаде клас „правоъгълник” зададен чрез точките на долен ляв ъгъл и десен горен ъгъл. Класът да има конструктор и член-функции за лице и периметър на правоъгълника и за извеждане на екрана на неговите координати.

б) Да се създаде клас „квадрат” наследник на „правоъгълник”, който има конструктор и пренаписани член-функции за лице и периметър на квадрата и за извеждане на екрана на неговите координати.



Задача 12: Даден е клас „точка”
class point {

private:


double x, y;

public:


point(double a, double b) {

x = a; y = b;

}

voud out() {



cout <<’(“<

}

};


а) Да се създаде клас „множество”, който да се състои от точки и да има конструктор по подразбиране създаващ празно множество, деструктор, ако е необходимо, член-функции за добавяне на точка към множеството, за изключване на точка от множеството и за извеждане на екрана точките от множеството.

б) Да се дефинират операциите: принадлежност на точка към множеството, присвояване на едно множество друго множество, сечение, обединение и изваждане на две множества.


Задача 13. Даден и записът
struct node {

int key;

char info[100];

node *next;

};
Чрез този запис е направен свързан списък. Главата на списъка се сочи от указателя
node *head;
а) Да се състави функция, която намира елемент от свързания списък по даден ключ и връщаща указател сочещ намерения елемент.

б) Да се състави функция, която премахва (изтрива) елемент от свързания списък по даден ключ. Функцията да връща истина или лъжа според това дали е премахнала елемента или не.







Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница