0% found this document useful (0 votes)
45 views4 pages

Divetimpera

Algoritmi -programare

Uploaded by

hoolap
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views4 pages

Divetimpera

Algoritmi -programare

Uploaded by

hoolap
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

1.//2+4+...

+2n-divide et impera
#include<iostream.h>
int v[102],n;
void divizeaza(int s,int d,int &m)
{ m=(s+d)/2;}
void combina(int x,int y,int &z)
{ z=x+y;}
void dei(int s,int d, int &z)
{ int m,x,y;
if(d==s) z=2*v[s];
else
{ divizeaza(s,d,m);
dei(s,m,x) ;
dei(m+1,d,y);
combina(x,y,z); }
}
void main()
{
int i,z;cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"v["<<i<<"]="; cin>>v[i]; }
dei(1,n,z);
cout<<"suma="<<z;
}
------------------------------------------------------2.//suma primelor n nr naturale
#include<iostream.h>
int n,pr; int sum;
void suma(int s,int d, int&sum)
{
int sum1,sum2;
if(s==d) sum=s;
else {suma(s,(s+d)/2,sum1);
suma((s+d)/2+1,d,sum2);
sum=sum1+sum2; }
}
void main()
{
cout<<"n=";cin>>n;
suma(1,n,sum);
cout<<"suma="<<sum;}
--------------------------------------------3.//prod 1*2*3*...*n
#include<iostream.h>
int n,pr;
void produs(int s,int d, int&pr)
{
int pr1,pr2;
if(s==d) pr=s;
else {produs(s,(s+d)/2,pr1);
produs((s+d)/2+1,d,pr2);
pr=pr1*pr2;
}

}
void main()
{
cout<<"n=";cin>>n;
produs(1,n,pr);
cout<<"produs="<<pr;}
-------------------------------------------------4.//prod nr pare din sir
#include<iostream.h>
int n,pr,v[100],i;
void produs(int s,int d, int&pr)
{
int pr1,pr2;
if(s==d) if(v[s]%2==0) pr=v[s];
else pr=1;
else {produs(s,(s+d)/2,pr1);
produs((s+d)/2+1,d,pr2);
pr=pr1*pr2;
}
}
void main()
{
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"v["<<i<<"]=";
cin>>v[i];
}
produs(1,n,pr);
cout<<"produs="<<pr;}
----------------------------------------5.//maximul elementelor din matrice div et impera
#include<iostream.h>
int n,max,v[10][10],i,j;
void maxim( int v[10][10],int s,int d, int&max)
{
int max1,max2;
if(s==d){ max1=v[s][1];
for(j=1;j<=n;j++)
if (max1<v[s][j])max1=v[s][j];
max=max1; }
else {maxim(v,s,(s+d)/2,max1);
maxim(v,(s+d)/2+1,d,max2);
if(max1>max2)max=max1;
else max=max2; }
}
void main()
{
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cout<<"mat["<<i<<','<<j<<"]="; cin>>v[i][j]; }
1

maxim(v,1,n,max);
cout<<"maxim="<<max;}
-----------------------------------------6.//nr elem pare -in mod standard
#include<iostream.h>
int v[100],n;
void divizeaza(int s,int d,int &m)
{ m=(s+d)/2;}
void combina(int x,int y,int &z)
{ z=x+y;}
void dei(int s,int d, int &z)
{ int m,x,y;
if(d==s)
if(v[s]%2==0) z=1;
else z=0;
else
{
divizeaza(s,d,m);
dei(s,m,x) ;
dei(m+1,d,y);
combina(x,y,z);
}
}
void main()
{
int i,z;cout<<"n=";cin>>n;
for(i=5;i<=12;i++)
{
cout<<"v["<<i<<"]=";
cin>>v[i];
}
dei(5,12,z);
cout<<"nr elem pare="<<z;
}
------------------------------------------------7.//max elem pare
#include<iostream.h>
int n,max,v[100],i;
void maxim(int s,int d, int&max)
{
int max1,max2;
if(s==d) if(v[s]%2==0) max=v[s];
else max=0;
else {maxim(s,(s+d)/2,max1);
maxim((s+d)/2+1,d,max2);
if (max1>max2) max=max1;
else max=max2; }
}
void main()
{
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{

cout<<"v["<<i<<"]="; cin>>v[i];
}
maxim(1,n,max);
cout<<"maximul="<<max;}
---------------------------------------------8.//sortare rapida(QUIksort) prin div et impera
#include<iostream.h>
int x[100],n;
void schimb(int &a,int &b)
{ int aux=a;a=b;b=aux;}
/* sau
void divizeaza(int s,int d,int &m)
{ int i,pi,pj,j;
i=s;j=d;pi=0;pj=1 ;
while(i<j)
{
if(x[i]>x[j]) {schimb(x[i],x[j]);
schimb(pi,pj);}
i=i+pi;j=j-pj;}
m=i;} */
void divizeaza(int s,int d,int &m)
{
int pivot=x[s],i=s,j=d;
while(i<j)
{ while(x[i]<pivot)i++;
while(x[j]>pivot)j--;
if(i<j) schimb(x[i],x[j]);}
m=i;}
void quiksort(int s,int d)
{
int m;
if(s<d) {divizeaza(s,d,m);
quiksort(s,m-1);
quiksort(m+1,d);}
}
void main()
{
int i;cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"x["<<i<<"]=";cin>>x[i];}
quiksort(1,n);
cout<<"vect sort e="<<endl;
for(i=1;i<=n;i++)
cout<<x[i]<<" ";
}
-------------------------------------9.//sum el poz din matrice
#include<iostream.h>
int n,v[10][10]; int sum,i,j;
void suma(int v[10][10],int s,int d, int&sum)
{
int sum1,sum2;
2

if(s==d){ sum=0;
for(j=1;j<=n;j++)if(v[s][j]>0)
sum=sum+v[s][j];
}
else {suma(v,s,(s+d)/2,sum1);
suma(v,(s+d)/2+1,d,sum2);
sum=sum1+sum2; }
}
void main()
{
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cout<<"mat["<<i<<','<<j<<"]=";
cin>>v[i][j];
}
suma(v,1,n,sum);
cout<<"suma="<<sum;
}
-----------------------------------------------10.//afisare elem de sub dg pp , div et imp
#include<iostream.h>
int n,nr,v[10][10],i,j;
void cit_mat(int v[10][10],int s,int d)
{int j;
if(s==d) for(j=1;j<=n;j++) cin>>v[s][j];
else {cit_mat(v,s,(s+d)/2);
cit_mat(v,(s+d)/2+1,d); }
}
void afis_mat(int v[10][10],int s,int d)
{
int j;
if(s==d) { for(j=1;j<=s-1;j++)
cout<<v[s][j]<<" "; cout<<endl;}
else {afis_mat(v,s,(s+d)/2);
afis_mat(v,(s+d)/2+1,d);}
}
void main()
{ cout<<"n=";cin>>n;
cout<<"mat ciy="<<endl;
cit_mat(v,1,n);
afis_mat(v,1,n); }
----------------------------------11.//prod elem din matr
#include<iostream.h>
int n,pr,v[10][10],i,j;
void produs( int v[10][10],int s,int d, int&pr)
{
int pr1,pr2;
if(s==d){ pr1=1;
for(j=1;j<=n;j++)
pr1=pr1*v[s][j];

pr=pr1; }
else {produs(v,s,(s+d)/2,pr1);
produs(v,(s+d)/2+1,d,pr2);
pr=pr1*pr2;}
}
void main()
{
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cout<<"mat["<<i<<','<<j<<"]=";
cin>>v[i][j];
}
produs(v,1,n,pr);
cout<<"produs="<<pr;}
-----------------------------------12.//algoritmul de interclasare a 2 vectori deja sortati
#include<iostream.h>
int a[10],n;
void sort(int s, int d, int a[10])
{int m;
if(a[s]>a[d]){m=a[s];a[s]=a[d];a[d]=m;}}
void interclasare(int s,int d,int m, int a[10])
{
int b[10],i,j,k;
i=s;j=m+1;k=1;
while(i<m && j<d) if(a[i]<=a[j]) b[k++]=a[i++];
else b[k++]=a[j++];
if(i<=m)for(j=i;j<=m;j++)b[k++]=a[j];
else for(i=j;j<=d;j++)b[k++]=a[i];
for(i=s;i<=d;i++)
a[i]=b[k++];}
void divimpera(int s, int d, int a[10])
{int m;
if(s==d)sort(s,d,a);
else {m=(s+d)/2;
divimpera(s,m,a);
divimpera(m+1,d,a);}}
void main()
{
int i;cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";cin>>a[i];}
divimpera(1,n,a);
cout<<"vect sort e="<<endl;
for(i=1;i<=n;i++)
cout<<a[i]<<" "; }
--------------------------------------------------13.// citeste si afiseaza numai elem div cu 3 din mat
prin div et impera
#include<iostream.h>
3

int n,nr,v[10][10],i,j;
void cit_mat(int v[10][10],int s,int d)
{int j;
if(s==d) for(j=1;j<=n;j++) cin>>v[s][j];
else {cit_mat(v,s,(s+d)/2);
cit_mat(v,(s+d)/2+1,d); } }
void afis_mat(int v[10][10],int s,int d)
{ int j;
if(s==d) { for(j=1;j<=n;j++) if(v[s][j]%3==0)
cout<<v[s][j]<<" ";
cout<<endl;}
else {afis_mat(v,s,(s+d)/2);
afis_mat(v,(s+d)/2+1,d); }
}
void main()
{ cout<<"n=";cin>>n;
cout<<"mat ciy="<<endl;
cit_mat(v,1,n);
afis_mat(v,1,n);
}
---------------------------------------------14.// citeste mat afiseaza suma elem div cu 3 din mat
prin div et impera
#include<iostream.h>
int n,nr,v[10][10],i,j,sum;
void cit_mat(int v[10][10],int s,int d)
{int j;
if(s==d) for(j=1;j<=n;j++) cin>>v[s][j];
else {cit_mat(v,s,(s+d)/2);
cit_mat(v,(s+d)/2+1,d); }
}
void afis_mat(int v[10][10],int s,int d)
{ int j;
if(s==d) { for(j=1;j<=n;j++) cout<<v[s][j]<<" ";
cout<<endl;}
else {afis_mat(v,s,(s+d)/2);
afis_mat(v,(s+d)/2+1,d);}
}
void suma(int v[10][10],int s,int d, int&sum)
{ int sum1,sum2;
if(s==d){ sum=0;
for(j=1;j<=n;j++)if(v[s][j]%3==0)
sum=sum+v[s][j];
}
else {suma(v,s,(s+d)/2,sum1);
suma(v,(s+d)/2+1,d,sum2);
sum=sum1+sum2; }
}
void main()
{
cout<<"n=";cin>>n;
cout<<"mat ciy="<<endl;
cit_mat(v,1,n);
afis_mat(v,1,n);
suma(v,1,n,sum);
cout<<"suma="<<sum;}

-------------------------------------------------15.//schimba diagonala ppala cu dgonala secundara


#include<iostream.h>
#include<iomanip.h>
int a[50][50],n,m,i,j,x;
void scrie()
{ for(int i=1;i<=n;i++)
{ cout<<"\n";
for(int j=1;j<=n;j++)
cout<<setw(4)<<a[i][j]; }}
void schimba(int ls,int ld)
{
if(ls<=ld)
{int m,aux,k;m=(ls+ld)/2 ;k=n+1-m;
x=a[m][m];a[m][m]=a[m][k];a[m][k]=x;
schimba(ls,m-1);
schimba(m+1,ld);}}
void main()
{cout<<"dati nr de elem=";cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) cin>>a[i][j];
schimba(1,n);
scrie(); }
---------------------------------------------------------16.//cauta binara-algoritm prin divide et impera
//nu tine cont de ordinea elem din vector
//cautare binara
//nu vede primul si ultimul
#include<iostream.h>
int v[100],n,x;
void divizeaza(int s,int d,int &m)
{ m=(s+d)/2;}
void cauta(int s,int d,int &z)
{
int m;
if(d>s){divizeaza(s,d,m);
if (v[m]==x)z=m;
else if (x>v[m]) cauta(m+1,d,z);
else cauta (s,m,z);}}
void main()
{
int i,z=0;
cout<<"n=";cin>>n;
cout<<"x=";cin>>x;
for(i=1;i<=n;i++)
{
cout<<"v["<<i<<"]=";cin>>v[i];}
cauta(1,n,z);
if(z==0) cout<<"nu exista elem "<<x<<"in vect";
else cout<<"exista pe poz"<<z;}

You might also like