Universitatea Tehnică a Moldovei Catedra Automatică și Tehnologii Informaționale
Disciplina: Structuri de date si algoritmi Varianta 20
Raport Tema :
“Analiza algoritmilor ale TEHNICII PROGRAMĂRII” Lucrarea de laborator nr.6
A efectuat:
Sahaidac Maria,TI-173
Moțpan Serghei
A verificat:
Chisinău 2018
1
Cuprins:
1. Scopul si obiectivele lucrarii………………………..3 2. Sarcina……………………………………………. ...4 3. Anexa A……………………………………………..5 4. Anexa B……………………………………………..6 5. Concluzii……………………………………………. 10 6. Bibliografie………………………………………….11
2
Scopul şi obiectivele : 1. De studiat şi însuşit materialul teoretic pentru evidenţierea esenţialului tehnicilor de programare în elaborarea modelelor soluţiei problemelor: esenţa m etodelor (strategiilor tehnicilor de programare) şi specificul realizării; 2. Să se analizeze şi să se descrie tehnica modelăr ii şi scenariile programării eficiente pentru diverse compartimente ale diferitor situaţii cu argumentări şi modele de structuri abstracte; 3. S ă se preia varianta problemei din compartimentul “3.Problemele cu exempl e pentru însuşire, modificare şi rulare”, pentru analiză, aprofundare şi rularea programelor în limbajul C 4. Să se elaboreze scenariile succinte de modificare, incluzând pointeri, subprograme şi fişiere cu teste de verificare şi vizualizări şi explicaţii la principalele subprograme prin schemele logice. În raport de descris concis esenţa fiecărei m etode ( ca strategie sau tehnică de programare).
3
Sarcina: Sa se dea la executie un program in C prin metoda backtracking si sa explice specificul acestei tehnici de programare.
4
Anexa A:
5
Anexa B: // C program to print all permutations with duplicates allowed
#include #include
/* Function to swap values at two pointers */
void swap(char *x, char *y) { char temp; temp = *x; *x = *y; *y = temp; } /* Function to print permutations of string This function takes three parameters: 1. String 2. Starting index of the string 3. Ending index of the string. */
void permute(char *a, int l, int r) { int i; if (l == r) printf("%s\n", a); else { for (i = l; i <= r; i++) { swap((a+l), (a+i)); permute(a, l+1, r);
6
swap((a+l), (a+i)); //backtrack } } }
/* Driver program to test above functions */
int main() { char str[] = "ABC"; int n = strlen(str); permute(str, 0, n-1); return 0; }
7
Concluzii:
În urma efectuării lucrării de laborator nr.6,am însușit un lucru extrem de important, tipuri de algoritmi și utilizarea lor corespunzătoare.Algoritmii sunt foarte puternici în rezolvarea problemelor complicate, în optimizare, sau găsirea multitudinilor de soluții. Laboratorul dat conține un set de probleme de o complexitatea mult mai mare decît cele întîlnite pînă acum, iar asta m-a provocat într-o măsură. În sarcinile oferite am utilizat algoritmul “backtracking” pentru a găsi toate permutarile unui sir de character, ceea ce era destul de complicat fara acest algoritm.
8
Bibliografie: . 1."Limbajul de programare C". Brian W.Kernighan. Dennis M.Ritchie. 2."C. Tehnici de programare". Florin Munteanu, Gheroghe Musca, Florin Moraru. 3."Arta programarii calculatoarelor". Donald Cnut. 4. Tudor Sorin, Tehnici de programare, 1997.
9