tehnica divide et impera

8
TEHNICA DIVIDE ET IMPERA APLICATIE: TEMPERATURA MEDIE A AERULUI IN LUNA IULIE (IN EUROPA) Echipa: • Ceapa Cristina •Manescu Ilinca-Maria

Upload: rares-ioan-manescu

Post on 24-Nov-2015

86 views

Category:

Documents


10 download

TRANSCRIPT

  • TEHNICA DIVIDE ET IMPERAAPLICATIE: TEMPERATURA MEDIE A AERULUI IN LUNA IULIE (IN EUROPA)Echipa: Ceapa CristinaManescu Ilinca-Maria

  • PRINCIPIUL METODEI:Divide et impera (Divide si cucereste) este o tehnica de programare care presupune descompunerea problemei initiale n dou sau mai multe subprobleme de acelasi tip, de dimensiune mai mica (=mai uoare) care se rezolv. Soluia pentru problema iniial se obine combinnd soluiile celor doua subprobleme; pentru fiecare din ele se poate aplica aceeai tactic a descompunerii n (alte) subprobleme, pn cnd (n urma descompunerilor repetate) se ajunge la probleme care admit rezolvare imediat.Nu toate problemele pot fi rezolvate prin utilizarea acestei tehnici. Se poate afirma c numrul celor rezolvabile prin "divide et impera" este relativ mic, tocmai datorit cerinei ca problema s admit o descompunere repetat.Divide et impera este o tehnic ce admite o implementarerecursiv ("ce se ntmpl la un nivel, se ntmpl la orice nivel). Aadar, un algoritm prin divide et impera se elaboreaz astfel- la un anumit nivel avem dou posibiliti:s-a ajuns la o problem care admite o rezolvare imediat, caz n care se rezolv i se revine din apel;nu s-a ajuns la problema cu rezolvare imediata, caz n care problema este descompus n (dou sau mai multe) subprobleme, pentru fiecare din ele se reapeleaza funcia recursiva, dup care se combina rezultatele si se revine de apel.

  • ENUNT ALGORITM DE SORTARE FOLOSIT:/*Se citeste un vector cu n temperaturi inregistrate in luna iulie a anului 2013 in Europa.Sa se sorteze crescator vectorul, utilizand divide et impera,apoi: a)Se citeste o temperatura nr.Sa se determine daca se gaseste in vector.Afisati un mesaj corespunzator. b)Aflati cate temperaturi se gasesc intervalul [x,y];(x si y fiind citite de la tastatura). c)Afisati cate temperaturi impare,mai mari decat o valoare data s-au inregistrat. d)Calculati temperatura medie a aerului in luna data.*/

  • PROGRAM IN C++#includeusing namespace std;

    int temperaturi[50],n,k,nr,x,y,p;void poz(int ls,int ld,int&k,int temperaturi[50]) { int i,j,c,i1,j1; i=ls;j=ld;i1=0;j1=-1; while(itemperaturi[j]) { c=temperaturi[j]; temperaturi[j]=temperaturi[i]; temperaturi[i]=c; c=i1; i1=-j1; j1=-c; } i=i+i1; j=j+j1; } k=i; }

    void quick(int ls,int ld) { if(ls

  • int aparitie(int n,int temperaturi[50]) { if(n==0) return 0; else if(x
  • int main() { int i,r=0; coutn; for(i=1;i
  • RULARE PROGRAM: