WordPress.com



Lucr?rile de laborator la disciplina ?Structuri de date ?i algoritmi ?n C++” pentru anul de studii 2019-20!Ultima actualizare: 01.10.2019Not?: pentru grupele TI-21, IA-23, TIR-26 ?i IAR-27 sunt obligatorii primele 7 lucr?ri de laborator, a 8-a ?i a 9-a sunt op?ionale (lucrarea de laborator nr. 8 poate fi efectuat? ?n loc de una din primele 7, iar efectuarea lucr?rii de laborator nr. 9 scute?te de efectuarea p?r?ii practice la examen, nota fiind cea de la lucrarea de laborator). Num?rul variantei a fost stabilit la prima lec?ie de laborator. Dac? este efectuat? o alt? variant?, lucrarea de laborator nu este acceptat?. Dac? este indicat numele sau prenumele altui student sau dac? sunt dovezi clare c? lucrarea este luat? de la alt coleg, atunci aceasta va fi apreciat? cel mult cu nota cinci (dac? studentul va explica am?nun?it procesul efectu?rii ei se poate pune, ca excep?ie, nota ?ase). La fiecare pereche se accept? nu mai mult de dou? lucr?ri de laborator, ca excep?ie (pentru lucr?rile de laborator nr. 7-9) pot fi trei. Lucr?rile de laborator nr. 8-9 pot fi prezentate ?i ?n ziua examenului, celelalte trebuie prezentate obligatoriu pe parcursul semestrului la lec?iile de laborator. Lucr?rile de laborator nr. 7-9 pot fi prezentate ?i la ultima pereche de prelegeri.Lucrarea de laborator trebuie s? con?in? un volum de circa 6-10 pagini, dintre care prima pagin? trebuie s? reprezinte foia de titlu (denumirile ministerului, universit??ii, ?i facult??ii, denumirea disciplinei, num?rul lucr?rii de laborator, tema, numele ?i prenumele studentului ?i a profesorului, loc pentru data prezent?rii, pentru not? ?i pentru semn?tura profesorului). Pagina a doua ?ncepe cu scopul ?i ?ns?rcinarea lucr?rii, apoi trebuie s? urmeze un scurt material teoretic la tem? (circa o pagin?), iar celelalte pagini trebuie s? con?in? codul programului (?n ?ntregime), precum ?i screen-shot-urile (minim trei, cu diverse valori ini?iale, ?ndeosebi cele ce pot genera erori sau situa?ii imprevizibile) care confirm? efectuarea lucr?rii de laborator respective ?i varianta electronic?. Ultima pagin? trebuie s? con?in? concluziile (minim trei) f?cute pe baza ?ndeplinirii lucr?rii de laborator respective. Pentru a ob?ine nota maxim? studentul trebuie s? prezinte lucrarea de laborator ?n timp rezonabil ?i trebuie s? poat? demonstra c? lucrarea a fost ?ndeplinit? de el (s? r?spund? la ?ntreb?rile suplimentare referitor la lucrare). La sf?r?it verifica?i obligatoriu ortografia ?i gramatica. Lucr?rile f?r? diacritice sau cu gre?eli numeroase nu se accept?. Lucrarea de Laborator nr. 1Tema: Instruc?iuni repetitive (cicluri)Scopul: utilizarea instruc?iunilor repetitive (for, while ?i do- while) pentru scrierea programelor ?n limbajul de programare C++.SarciniScrie?i un program care efectueaz? ceea ce este indicat ?n variant?, apoi afi?eaz? pe ecran rezultatul (se recomand? ca variantele 1-7 s? fie efectuate cu instruc?iunea ?for”, variantele 8-13 – cu ?while”, iar variantele 14-20 – cu ?do- while”):calculeaz? suma numerelor pare de la 2 la ncalculeaz? n! (n factorial)calculeaz? suma ?irului: 1+1/2+1/3+1/4+...+1/ncalculeaz? produsul numerelor impare de la 1 la ncalculeaz? suma ?irului: 1-1/2+1/4-1/8+...+(-1)n/2ndetermin? dac? un num?r este perfect (este egal cu suma divizorilor s?i)determin? dac? dou? numere sunt prietene (dac? fiecare din ele este egal cu suma divizorilor celuilalt num?r)calculeaz? suma cifrelor unui num?rcalculeaz? c?te cifre are un num?rdetermin? dac? un num?r este prim (se divide numai la 1 ?i la el ?nsu?i)determin? dac? 2 numere sunt prime ?ntre ele (cel mai mare divizor comun al lor este 1)determin? al n-lea num?r Fibonaccidetermin? cel mai mare divizor comun al dou? numerecite?te de la tastatur? numere p?n? c?nd introducem un num?r negativ ?i determin? suma ?i produsul numerelor introdusecite?te de la tastatur? numere p?n? c?nd introducem 0 ?i determin? suma numerelor introdusecite?te de la tastatur? numere p?n? c?nd introducem un num?r pozitiv ?i determin? c?te numere am introdus (num?rul de numere)cite?te de la tastatur? numere p?n? c?nd introducem 0 ?i determin? media aritmetic? a numerelor introdusecite?te de la tastatur? numere p?n? c?nd introducem un num?r pozitiv ?i determin? c?te numere am introdus (num?rul de numere)cite?te de la tastatur? numere p?n? c?nd introducem 0 ?i determin? c?te numere pozitive ?i c?te negative au fost introdusecite?te de la tastatur? numere p?n? c?nd introducem un num?r negativ ?i determin? media aritmetic? a numerelor introduseLucrarea de Laborator nr. 2Tema: Tablouri (uni ?i bidimensionale) ?i ?iruri de caractereScopul: utilizarea tablourilor uni ?i bidimensionale ?i a ?irurilor de caractere pentru scrierea programelor ?n limbajul de programare C++.SarciniScrie?i un program care prelucreaz? tablourile a?a cum este indicat ?n variant?, apoi afi?eaz? pe ecran rezultatul (la variantele ?n care este vorba despre diagonala principal? sau secundar? matricele sunt p?tratice, ?n celelalte cazuri – obi?nuite):calculeaz? media aritmetic? a elementelor unui vectorcalculeaz? media aritmetic? a elementelor unei matricecalculeaz? suma elementelor pare ale unui vectorcalculeaz? suma elementelor impare ale unei matricecalculeaz? produsul elementelor impare ale unui vectorcalculeaz? produsul elementelor pare ale unei matricecalculeaz? suma elementelor diagonalei principale ale unei matricecalculeaz? produsul elementelor diagonalei secundare ale unei matricecalculeaz? suma elementelor de pe pozi?ii pare ?ntr-un vectorcalculeaz? produsul elementelor de pe pozi?ii impare ?ntr-un vectordetermin? dac? litera ?a” se con?ine ?ntr-un ?ir de caracteredetermin? de c?te ori litera ?e” se con?ine ?ntr-un ?ir de caractereinverseaz? un ?ir de caractere?nlocuie?te litera ?a” cu litera ?o” ?ntr-un ?ir de caracteredetermin? dac? cuv?ntul ?info” se con?ine ?ntr-un ?ir de caractere?nlocuie?te cuv?ntul ?ori” cu cuv?ntul ?sau” ?ntr-un ?ir de caracterenum?r? c?te cuvinte sunt ?ntr-un ?ir de caracteredetermin? dac? cuv?ntul ?programare” se con?ine ?ntr-un ?ir de caractere?nlocuie?te cuv?ntul ?sa” cu cuv?ntul ?s-a” ?ntr-un ?ir de caracteredetermin? de c?te ori cuv?ntul ?ULIM” se con?ine ?ntr-un ?ir de caractereLucrarea de Laborator nr. 3Tema: Structuri ?i Tablouri de la StructuriScopul: utilizarea structurilor ?i vectorilor de la structuri pentru scrierea programelor ?n limbajul de programare C++.SarciniScrie?i un program care permite utilizatorului s? selecteze unul din punctele meniului (crearea vectorului din structuri; afi?area con?inutului vectorului; ad?ugarea datelor; modificarea datelor; eliminarea datelor; c?utarea datelor conform c?ruiva criteriu; sortarea datelor; ie?irea din program ?.a.). Tema, pe baza c?reia trebuie s? crea?i structura, precum ?i c?mpurile obligatorii, sunt indicate ?n variant?Studen?i (nr, nume, prenume, telefon, specialitate, an de studiu, not?)C?ntece (denumire, gen, interpret, durat?, autor versuri, autor muzic?, an)Angaja?i (nr, nume, prenume, func?ie, adres?, telefon, salariu)Salon de automobile (nr, marc?, model, culoare, ?ar?, pre?)Salon de telefoane mobile (IMEI, marc?, model, culoare, ?ar?, pre?)Produse alimentare (nr, denumire, dat? producere, termen de valabilitate, pre?)Filme (nr, denumire, gen, regizor, durat?, ?ar?)Sta?ie auto (nr. rut?, firm?, or? sosire, or? plecare, destina?ie, tip transport (autocar, microbuz), pre?)User (nr. de ordine, e-mail, nume, prenume, parol?, tip cont)Elevi (nr, nume, prenume, adres?, telefon, profil, clas?, not?)Magazin Internet (nr, denumire produs, unitate de m?sur?, pre?, dat? primire)Uzin? de conserve (nr, denumire, tip, mas?, pre?, dat? fabricare)Tehnic? de calcul (nr, denumire, model, pre?, an editare, ?ar?)Caracter de joc (nr, nume, nick, ras?, clas?, gen, v?rst?, nr. arme, nivel)B?nci (denumire, adres?, director, pagin?- web, curs Euro, curs Dolar)Actori (nume, prenume, nr. filme, filme celebre, gen preferat, ?ar?)Sisteme de operare (denumire, subtipuri, pre?, companie produc?toare, procent utilizare ?n lume, an apari?ie)??ri (abreviere din trei litere, popula?ie (se poate ?n milioane), capital?, continent, form? de guvernare, conduc?tor (rege, pre?edinte, prim- ministru))Genuri de sport (denumire, puncte pentru victorie, pentru remiz? ?i pentru ?nfr?ngere, periodicitate desf??urare campionat mondial)Ceasuri (firm?, model, tip (inteligent, electronic, mecanic), pre?, ?ar?, an)Lucrarea de Laborator nr. 4Tema: Fi?iereScopul: utilizarea fi?ierelor pentru scrierea programelor ?n limbajul de programare C++.SarciniScrie?i un program care permite utilizatorului s? selecteze unul din punctele meniului (crearea fi?ierului din structuri; afi?area con?inutului fi?ierului; ad?ugarea datelor ?n fi?ier; modificarea datelor din fi?ier; eliminarea datelor din fi?ier; c?utarea datelor ?n fi?ier conform c?ruiva criteriu; sortarea datelor din fi?ier; ie?irea din program ?.a.). Tema, pe baza c?reia trebuie s? crea?i fi?ierul este aceia?i ca ?i la lucrarea de laborator nr. 3. Se recomand? s? utiliza?i fi?iere binare.Lucrarea de Laborator nr. 5Tema: Liste liniareScopul: utilizarea listelor liniare simplu ?nl?n?uite (create manual) pentru scrierea programelor ?n limbajul de programare C++.SarciniScrie?i un program care permite utilizatorului s? selecteze unul din punctele meniului (crearea listei liniare din structuri; afi?area con?inutului listei; ad?ugarea datelor ?n list?; modificarea datelor din list?; eliminarea datelor din list?; c?utarea datelor ?n list? conform c?ruiva criteriu; sortarea datelor din list?; ie?irea din program ?.a.). Tema, pe baza c?reia trebuie s? crea?i lista liniar? este aceia?i ca ?i la lucrarea de laborator nr. 3.Lucrarea de Laborator nr. 6Tema: ClaseScopul: crearea claselor ?n limbajul de programare C++.SarciniScrie?i un program care permite crearea unei clase simple la tema indicat? mai jos, av?nd ca func?ii (metode) citirea ?i afi?area fiec?rui c?mp, precum ?i o func?ie care calculeaz? valoarea unui c?mp (ca exemplu, de convertit pre?ul din EURO ?n lei). Clasa trebuie s? con?in? cel pu?in trei tipuri de constructori (unul trebuie s? fie f?r? parametri, altul- cu to?i parametrii indica?i, iar al treilea- cu doar c??iva parametri indica?i, ?n dependen?? de tem?). Tema, pe baza c?reia trebuie s? crea?i clasa este aceia?i ca ?i la lucrarea de laborator nr. 3. Supra?nc?rca?i cel pu?in doi operatori (de exemplu ?==” pentru verificarea egalit??ii ?i ?+” pentru adunarea a dou? obiecte ale clasei sau a unui obiect al clasei cu un num?r).Lucrarea de Laborator nr. 7Tema: Mo?tenireScopul: utilizarea mo?tenirii la lucrul cu clasele ?n limbajul de programare С++.SarciniScrie?i un program care permite crearea unei clase care mo?tene?te c?mpurile ?i metodele clasei create la lucrarea de laborator precedent?, dar mai adaug? ?i careva propriet??i proprii, cre?nd ?i constructorii respectivi (care s? corespund? constructorilor clasei de baz?), apoi mai crea?i o clas? care mo?tene?te caracteristicile clasei a doua, av?nd ?i constructorii necesari. Tema, pe baza c?reia trebuie s? crea?i clasele derivate, precum ?i c?mpurile noi obligatorii, sunt indicate ?n variant?, dar se permite de creat ?i alte clase derivate, care s? fie logic legate cu cea de baz?, ?n dependen?? de imagina?ia studen?ilor.Masteranzi (denumire specializare, tem? a tezei de master), respectiv Doctoranzi (cod specializare, conduc?tor al tezei de doctor)C?ntece pentru Show-Business (popularitate interpret), Rap (nr. desc?rc?ri)Administra?ie (categorie de manager, nr. persoane aflate ?n conducere), respectiv Proprietari (tip proprietar, procent de ac?iuni de care dispune)Automobile care au Cutie Automat? de Viteze (num?r viteze, num?r viteze reverse), respectiv Automobile cu GPS ?i cutie automat? (tip GPS)Telefoane Mobile cu 4G (vitez? Internet, prezen?? wi- fi), respectiv Telefoane Mobile cu 4G cu Viteze de Internet Maxime (tehnologie utilizat?)Lactate (firm? produc?toare), respectiv Br?nzeturi (procent gr?sime, tip)Filme Documentare (domeniu, prezen?? elemente artistice), respectiv Filme (show- uri) Real- Time (tema, actori)Rute Interna?ionale (?ar? destinatar?, valut? a ??rii destinatare), respectiv Rute cu Pornire ?i Destina?ie Interna?ionale (?ar? pornire, valut? a ??rii de pornire)Grupuri de Utilizatori (denumire grup, drepturi), respectiv Administrator (valabilitate parol?)Elevi din ?coli Profesionale (specialitate, burs?), respectiv Elevi din Colegii (cod specialitate, denumire specialitate)Magazin Internet de Electrocasnice (domeniu, subdomeniu), respectiv Magazin Internet de Calculatoare (frecven?? procesor, memorie operativ?)Uzin? de Conserve Destinate Export?rii peste Hotare (?ar? destinatar?, valut? a ??rii destinatare), respectiv Uzin? de Conserve din Produse Naturale Destinate Export?rii peste Hotare (denumire produs natural, termen p?strare)Laptopuri (firm? produc?toare, diagonal? ecran), respectiv Tablete (sistem de operare, rezolu?ie camer? Web)Caracter de Joc 1 ?i, respectiv, 2 (dou? clase la alegerea studentului)B?nci de Creditare (manager sector creditare), respectiv B?nci de Acordare Credite pentru Agricultur? (procent credit, termen acordare)Actori de la Hollywood (onorariu mediu pentru filmare), respectiv Actori Comici de la Hollywood (regizorul preferat)Microsoft Windows (versunile cele mai cunoscute), respectiv Windows NT (periodicitate apari?ie versiuni noi sau actualiz?ri)??ri din Europa (suprafa??, valut?), respectiv ??ri din Uniunea European? (an aderare la UE)Sporturi ?n echip? (nr. juc?tori echip?), respectiv Sporturi cu Mingea (tipul mingii, masa)Ceasuri Inteligente (tehnologie utilizat?, sisteme de operare cu care este compatibil), respectiv Smartwatch de la Samsung (perioada garan?iei (?n luni), prezen?? Allways on Display)Lucrarea de Laborator nr. 8Tema: Clase AbstracteScopul: utilizarea claselor abstracte ?n limbajul de programare С++.SarciniScrie?i un program care creeaz? o clas? abstract?, apoi utilizeaz? aceast? clas? ?n procesul de mo?tenire ?i o realizeaz? pe deplin. Prezenta?i ?i un exemplu de polimorfism.Arie figuri geometrice (lungime, l??ime, metoda abstract? aria()) ?i clasele derivate Arie Dreptunghi ?i Arie P?trat.Cutie (lungime, l??ime, ?n?l?ime ?i metoda abstract? volum()) ?i clasele derivate Cutie ?n Form? de Paralelipiped Drept ?i Cutie ?n Form? de Cub.Lungime Figuri Geometrice (lungime, l??ime, metoda abstract? lungimea()) ?i clasele derivate Lungime Dreptunghi ?i Lungime Triunghi Isoscel.Schimb Valutar (sum?, curs, metoda abstract? conversie()) ?i clasele derivate Schimb Lei ?n Euro ?i Schimb Euro ?n Lei (?n primul caz suma se consider? a fi ?n lei, iar ?n al doilea caz- ?n Euro).Convertire Lungime (lungime, metoda abstract? convertire()) ?i clasele derivate Convertire Centimetri ?n Inch ?i Convertire Inch ?n Centimetri (?n primul caz lungimea se consider? a fi ?n cm, iar ?n al doilea caz- ?n inch).Credit (sum? ini?ial?, plat? lunar? ?i metoda abstract? sum?Total?()) ?i clasele derivate Credit pentru 12 Luni ?i Credit pentru 24 de Luni. Metoda abstract? trebuie s? afi?eze suma total? a produsului, ?tiind suma achitat? ini?ial, plata lunar? ?i termenul de achitare.Depozit (sum? ini?ial?, rat?, metoda abstract? sum?Final?()) ?i clasele derivate Depozit pentru 12 Luni ?i Depozit pentru 6 Luni. Metoda abstract? trebuie s? calculeze suma final? a clientului pentru banii depu?i ?n perioada indicat? cu procentul indicat. Rata dob?nzii se consider? fix? pe toat? perioada.Tipografie (num?r pagini, pre? tip?rire pagin? monocrom?, metoda abstract? cost()) ?i clasele derivate Ziar Color ?i Ziar Monocrom. Costul tip?ririi unei pagini color se consider? de patru ori mai mare dec?t a unei pagini alb- negru.Pre? Apartament (suprafa?? odaie, pre? m2, metoda abstract? cost()) ?i clasele derivate Apartament cu O Odaie ?i Apartament cu Dou? Od?i. Metoda abstract? trebuie s? calculeze pre?ul apartamentului, dac? consider?m c? el are una sau dou? od?i (se consider? c? buc?t?ria ?mpreun? cu coridorul ?i blocul sanitar au aceia?i m?rime ca ?i od?ile), ?tiind pre?ul unui metru p?trat ?i suprafa?a od?ii.Volum Corpuri Geometrice Conice (raz?, ?n?l?ime, metoda abstract? volum()) ?i clasele derivate Volum Con ?i Volum Cilindru.Lucrarea de Laborator nr. 9Tema: ?abloane (Templates)Scopul: utilizarea func?iilor- ?ablon ?i a claselor parametrizate ?n limbajul de programare С++.SarciniScrie?i un program care creeaz? o func?ie- ?ablon ?i o clas? parametrizat?, apoi prezenta?i exemple de utilizare a lor. Not?: traducerea sarcinilor va ap?rea un pic mai t?rziu.1. а) Создать шаблонную функцию, меняющую порядок элементов следующим образом: первая половина списка смещается в конец, а вторая в начало. Например: 1 2 3 4 5 6 - 4 5 6 1 2 3. Функция должна работать с массивом любой длины. Если количество элементов нечетное, то средний элемент обрабатывать не надо.b) Создать параметризированный класс Stack. Класс должен содержать конструкторы, деструктор, а также функции push, pop, empty, full и операторы ввода/вывода. Для выделения памяти использовать оператор new.2. а) Создать шаблонную функцию, меняющую порядок элементов попарно. Например: 1 2 3 4 5 6 - 2 1 4 3 6 5. Функция должна работать с массивом любой длины. Если количество элементов нечетное, то последний элемент обрабатывать не надо.b) Создать параметризированный класс Vector. Класс должен содержать конструкторы, деструктор, функции getLength, операторы [], +, - и операторы ввода/вывода. Для выделения памяти использовать оператор new.3. а) Создать шаблонную функцию, подсчитывающую количество повторений заданного параметра в списке. Например: список - 0 2 3 4 3 6, параметр - 3, результат - 2. Функция должна работать с массивом любой длины.b) Создать параметризированные классы List и ListItem. Классы должны содержать конструкторы, деструкторы, функции add, in, remove, getLength, операторы [] и ввода/вывода.4. а) Создать шаблонную функцию поиска по заданному ключу. Функция возвращает позицию первого подходящего элемента. На пример: список - 0 2 3 4 3 6, параметр - 2, результат - 1. В случае отсутствия подходящего элемента вернуть код ошибки. Функция должна работать с массивом любой длины.b) Создать параметризированный класс Queue - очередь. Класс должен содержать конструкторы, деструктор, функции add, in, get, getLength, операторы [] и ввода/вывода.5. а) Создать шаблонную функцию поиска второго по величине элемента списка. Например: список - 0 2 3 4 3 6, результат - 4. Функция должна работать с массивом любой длины.b) Создать параметризированный класс Set - множество. Класс должны содержать конструкторы, деструктор, функции add, in, remove, getLength, операторы “+” - объединение, “*” - пересечение, “-” - разность и операторы ввода/вывода.6. а) Создать шаблонную функцию сортировки по возрастанию пузырьковым методом. Функция должна работать с массивом любой длины.b) Создать параметризированный класс Map – ассоциативный список, который содержит поля ключ и значение. Одному ключу соответствует одно значение. Класс должен содержать конструкторы, деструктор, функции add, removeByKey, getLength, getByKey, getByValue, операторы [] и ввода/вывода.7. а) Создать шаблонную функцию, изменяющую попарно элементы массива следующим образом: первый элемент будет равняться сумме пары, а второй разности пары. Например: список - 0 2 3 4 3 6, результат 2 –2 7 –1 9 –3.b) Создать параметризированный класс Matrix – матрица. Класс должен содержать конструкторы, деструктор, функции getRows, getCols, операторы [], +, -, * и ввода/вывода.8. а) Создать шаблонную функцию, меняющую порядок элементов на обратный. Например: 1 2 3 4 5 6 - 6 5 4 3 2 1. Функция должна работать с массивом любой длины.b) Создать параметризированный класс Tree – бинарное дерево. Класс должен содержать конструкторы, деструктор, функции add, in, функции обхода дерева и операторы ввода/вывода.9. а) Создать шаблонную функцию, подсчитывающую количество элементов, значение которых больше заданного параметра. Например: список - 0 2 3 4 3 6, параметр - 5, результат - 1. Функция должна работать с массивом любой длины.b) Создать параметризированный класс Stack. Класс должен содержать конструкторы, деструктор, а также функции push, pop, empty и операторы ввода/вывода. Для выделения памяти использовать оператор new, по n элементов.10. а) Создать шаблонную функцию сортировки элементов массива по убыванию методом вставки. Функция должна работать с массивом любой длины.b) Создать параметризированный класс MultiMap – мульти-ассоциативный список, который содержит поля ключ и список значений. То есть, одному ключу может соответствовать несколько значений. Класс должен содержать конструкторы, деструктор, функции add, removeByKey, getLength, getByKey, getByValue, операторы [] и ввода/вывода.11. а) Создать шаблонную функцию, подсчитывающую количество элементов, значение которых меньше заданного параметра. На пример: список - 0 2 6 4 3 3, параметр - 3, результат - 2. Функция должна работать с массивом любой длины.b) Создать параметризированный класс PriorityQueue – приоритетная очередь. Каждый элемент очереди имеет определенный приоритет и при извлечении выбирается элемент с наибольшим приоритетом, а элементы с одинаковыми приоритетами - по времени добавления. Класс должен содержать конструкторы, деструктор, функции add, in, get, getLength, операторы [] и ввода/вывода.12. а) Создать шаблонную функцию поиска второго минимального по величине элемента списка. На пример: список - 0 2 3 4 3 6, результат - 2. Функция должна работать с массивом любой длины.b) Создать параметризированный класс Matrix – матрица. Класс должен содержать конструкторы, деструктор, функции getRows, getCols, операторы [], +=, -=, *= и ввода/вывода. ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download