Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- //FUNCTII RECURSIVE
- //FACTORIAL
- int Fac(int n) {
- if (n == 1)
- return 1;
- else
- return n * Fac(n - 1);
- }
- //CEL MAI MARE DIVIZOR COMUN
- int Cmmdc(int a, int b) {
- if (a == b)
- return a;
- else
- if (a > b)
- return Cmmdc(a - b, b);
- else
- return Cmmdc(a, b - a);
- }
- //CEL MAI MARE DIVIZOR COMUN EUCLID
- int Euclid(int a, int b) {
- if (b == 0)
- return a;
- else
- return Euclid(b, a%b);
- }
- //RIDICARE LA PUTERE
- int Power(int nr, int power) {
- if (power == 1)
- return nr;
- else
- return nr * Power(nr, power - 1);
- }
- //SUMA TUTUROR CIFRELOR UNUI NUMAR
- unsigned long long int SumElem(unsigned long long int nr) {
- if (nr < 10)
- return nr;
- else
- return nr % 10 + SumElem(nr / 10);
- }
- //MINIMUL
- int Min(int vector[], int min, int nrElem) {
- if (nrElem < 1) {
- return min;
- }
- else
- if (min > vector[nrElem - 1])
- return Min(vector, vector[nrElem - 1], nrElem - 1);
- else
- return Min(vector, min, nrElem - 1);
- }
- //Schimba o litera dintr-un string
- void ChangeString(char string[], char victim, char killer, int characters)
- {
- if (characters >= 0) {
- if (string[characters - 1] == victim)
- string[characters - 1] = killer;
- ChangeString(string, victim, killer, characters - 1);
- }
- }
- //Divide et Impera
- int divideEtImpera(int v[], int x, int st, int dr)
- {
- if (st > dr)
- return -1;
- int mij = (st + dr) / 2;
- if (v[mij] == x)
- return mij;
- if (x < v[mij])
- return divideEtImpera(v, x, st, mij - 1);
- if (x > v[mij])
- return divideEtImpera(v, x, mij + 1, dr);
- }
- //Divid et Impera3
- int divideEtImperaAt3(int v[], int x, int st, int dr)
- {
- if (st > dr)
- return -1;
- int firstMid = (st + dr) / 3;
- int secondMid = (st + dr) * 0.66;
- if (v[firstMid] == x)
- return firstMid;
- if (v[secondMid] == x)
- return secondMid;
- if (x < v[firstMid])
- return divideEtImperaAt3(v, x, st, firstMid - 1);
- if (x > v[firstMid] && x < v[secondMid])
- return divideEtImperaAt3(v, x, firstMid + 1, secondMid - 1);
- if (x > v[secondMid])
- return divideEtImperaAt3(v, x, secondMid + 1, dr);
- }
- void main() {
- int a = 980, b = 1080, n = 4;
- int c = 980, d = 1080;
- int nr = 2, power = 3;
- unsigned long long int lung = 11191233;
- int vector[10] = { 11, 15, 98, 37, 43, 56, 3, 7, 21 };
- int min = vector[0];
- int nrElem = 9;
- char string[50] = "Ana are bani de alune si le da pe patru cuie!";
- char victim = 'a';
- char killer = 'k';
- int character = strlen(string);
- printf("%d! = %d\nCmmdc %d & %d = %d\nEuclid = %d\n", n, Fac(n), a, b, Cmmdc(a, b), Euclid(d,c));
- printf("%d ^ %d = %d\n", nr, power, Power(nr,power));
- printf("Suma elementelor numarului %llu este %llu\n", lung,SumElem(lung));
- printf("Minimul vectorului este : %d\n", Min(vector, min, nrElem));
- printf("Prop originala : %s\n", string);
- ChangeString(string, victim, killer, character);
- printf("Prop modificata : %s ", string);
- //DIVIDE ET IMPERA && DIVIDE ET IPERA AT 3
- int v[10] = { 1,2,3,4,5,6,7,8,9 };
- int n = 9;
- int st = 0;
- int dr = n - 1;
- int x = 8;
- int ceva= divideEtImpera(v, x, st, dr); // doar schimbi numele fuctiei cu divideEtImperaAt3
- if (ceva >= 0)
- {
- printf("S-a gasit!");
- }
- else {
- printf("Nu s-a gasit");
- }
- _getch();
- }
Add Comment
Please, Sign In to add comment