а) проверка четността на дадено число.
б) пресмятане факториела на цяло неотрицателно число.
Задача 2. За дървото
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;
а) Да се състави функция, която намира елемент от свързания списък по даден ключ и връщаща указател сочещ намерения елемент.
б) Да се състави функция, която премахва (изтрива) елемент от свързания списък по даден ключ. Функцията да връща истина или лъжа според това дали е премахнала елемента или не.