sâmbătă, 8 septembrie 2018
Combinari n,k - programare dinamica
# include <conio.h>;
# include <iostream.h>;
# define MAX 50
int a,b;
int c[MAX][MAX];
int i,j;
int comb(int n,int k)
{
if(c[n][k]>=1) return c[n][k];
else
{
c[n][k]=comb(n-1,k)+comb(n-1,k-1);
c[n][n-k]=c[n][k];
return c[n][k];
}
}
void main(void)
{
clrscr();
cout<<"Intr n,k :\n";
cin>>a>>b;
for(i=0;i<a;i++)
for(j=0;j<b;j++)
c[i][j]=-1;
for(i=0;i<a;i++)
{
c[i][0]=1;
c[i][i]=1;
if(i>=1)
{
c[i][1]=i;
c[i][i-1]=i;
}
}
cout<<"\ncomb("<<a<<","<<b<<")= "<<comb(a,b);
getche();
}
# include <iostream.h>;
# define MAX 50
int a,b;
int c[MAX][MAX];
int i,j;
int comb(int n,int k)
{
if(c[n][k]>=1) return c[n][k];
else
{
c[n][k]=comb(n-1,k)+comb(n-1,k-1);
c[n][n-k]=c[n][k];
return c[n][k];
}
}
void main(void)
{
clrscr();
cout<<"Intr n,k :\n";
cin>>a>>b;
for(i=0;i<a;i++)
for(j=0;j<b;j++)
c[i][j]=-1;
for(i=0;i<a;i++)
{
c[i][0]=1;
c[i][i]=1;
if(i>=1)
{
c[i][1]=i;
c[i][i-1]=i;
}
}
cout<<"\ncomb("<<a<<","<<b<<")= "<<comb(a,b);
getche();
}
Combinari n,k - recursiv
# include <conio.h>;
# include <iostream.h>;
int a,b;
int comb(int n,int k)
{
if(k==n) return 1;
else if(k<=1) return n;
else return (comb(n-1,k)+comb(n-1,k-1));
}
void main(void)
{
clrscr();
cout<<"Intr n,k :\n";
cin>>a>>b;
cout<<"\ncomb("<<a<<","<<b<<")= "<<comb(a,b);
getche();
}
# include <iostream.h>;
int a,b;
int comb(int n,int k)
{
if(k==n) return 1;
else if(k<=1) return n;
else return (comb(n-1,k)+comb(n-1,k-1));
}
void main(void)
{
clrscr();
cout<<"Intr n,k :\n";
cin>>a>>b;
cout<<"\ncomb("<<a<<","<<b<<")= "<<comb(a,b);
getche();
}
Sortare Selectie
# include <iostream.h>;
# include <conio.h>;
# define MAX 10
int n,i,j,k;
int sch;
typedef int sir[MAX];
sir s;
void main(void)
{
clrscr();
cout<<"Intr nr de elemente: ";
cin>>n;
for(i=0;i<n;i++)
cin>>s[i];
for(k=0;k<n-1;k++)
{
sch=0;
i=k;
for(j=k+1;j<n;j++)
if(s[j]<s[i])
{
i=j;
sch=1;
}
if(sch)
{
s[i]=s[i]^s[k];
s[k]=s[i]^s[k];
s[i]=s[i]^s[k];
}
}
cout<<"\nSirul sortat este:\n";
for(i=0;i<n;i++)
cout<<s[i]<<" ";
getche();
}
# include <conio.h>;
# define MAX 10
int n,i,j,k;
int sch;
typedef int sir[MAX];
sir s;
void main(void)
{
clrscr();
cout<<"Intr nr de elemente: ";
cin>>n;
for(i=0;i<n;i++)
cin>>s[i];
for(k=0;k<n-1;k++)
{
sch=0;
i=k;
for(j=k+1;j<n;j++)
if(s[j]<s[i])
{
i=j;
sch=1;
}
if(sch)
{
s[i]=s[i]^s[k];
s[k]=s[i]^s[k];
s[i]=s[i]^s[k];
}
}
cout<<"\nSirul sortat este:\n";
for(i=0;i<n;i++)
cout<<s[i]<<" ";
getche();
}
Fib - programare dinamica
//fib(75) = OK
# include <conio.h>;
# include <iostream.h>;
# define MAX 5000
int n;
long int f[MAX];
long int i;
long int fib(long int n)
{
if(f[n]!=-1) return f[n];
else
{
f[n]=fib(n-1)+fib(n-2);
return f[n];
}
}
void main(void)
{
clrscr();
for(i=0;i<MAX;i++)
f[i]=-1;
f[0]=f[1]=1;
cout<<"Intr n :\n";
cin>>n;
cout<<"\nfib("<<n<<")= "<<fib(n);
getche();
}
# include <conio.h>;
# include <iostream.h>;
# define MAX 5000
int n;
long int f[MAX];
long int i;
long int fib(long int n)
{
if(f[n]!=-1) return f[n];
else
{
f[n]=fib(n-1)+fib(n-2);
return f[n];
}
}
void main(void)
{
clrscr();
for(i=0;i<MAX;i++)
f[i]=-1;
f[0]=f[1]=1;
cout<<"Intr n :\n";
cin>>n;
cout<<"\nfib("<<n<<")= "<<fib(n);
getche();
}
Interclasare Fisiere
# include <stdio.h>;
# include <conio.h>;
FILE *pf1, *pf2, *pf3;
int n1,n2,n3;
void main(void)
{
clrscr();
pf1=fopen("fis1.txt","r");
pf2=fopen("fis2.txt","r");
pf3=fopen("fis3.txt","w+");
fscanf(pf1,"%d",&n1);
fscanf(pf2,"%d",&n2);
int f=0;
while(!feof(pf1)&&(!feof(pf2)))
{
if(f==1)
fscanf(pf1,"%d",&n1);
if(f==2)
fscanf(pf2,"%d",&n2);
if(n1<n2)
{
fprintf(pf3,"%d\n",n1);
f=1;
}
else
{
fprintf(pf3,"%d\n",n2);
f=2;
}
}
FILE * aux;
int n=0;
if(feof(pf1) && (!feof(pf2)))
{
aux=pf2;
while(n2<=n1)
{
fprintf(pf3,"%d\n",n2);
fscanf(pf2,"%d",&n2);
}
fprintf(pf3,"%d\n",n2);
}
else if((!feof(pf1)) && feof(pf2))
{
aux=pf1;
while(n1<=n2)
{
fprintf(pf3,"%d\n",n1);
fscanf(pf1,"%d",&n1);
}
fprintf(pf3,"%d\n",n1);
}
while(!feof(aux))
{
fscanf(aux,"%d",&n);
fprintf(pf3,"%d\n",n);
}
fclose(pf1);
fclose(pf2);
fclose(pf3);
getche();
}
# include <conio.h>;
FILE *pf1, *pf2, *pf3;
int n1,n2,n3;
void main(void)
{
clrscr();
pf1=fopen("fis1.txt","r");
pf2=fopen("fis2.txt","r");
pf3=fopen("fis3.txt","w+");
fscanf(pf1,"%d",&n1);
fscanf(pf2,"%d",&n2);
int f=0;
while(!feof(pf1)&&(!feof(pf2)))
{
if(f==1)
fscanf(pf1,"%d",&n1);
if(f==2)
fscanf(pf2,"%d",&n2);
if(n1<n2)
{
fprintf(pf3,"%d\n",n1);
f=1;
}
else
{
fprintf(pf3,"%d\n",n2);
f=2;
}
}
FILE * aux;
int n=0;
if(feof(pf1) && (!feof(pf2)))
{
aux=pf2;
while(n2<=n1)
{
fprintf(pf3,"%d\n",n2);
fscanf(pf2,"%d",&n2);
}
fprintf(pf3,"%d\n",n2);
}
else if((!feof(pf1)) && feof(pf2))
{
aux=pf1;
while(n1<=n2)
{
fprintf(pf3,"%d\n",n1);
fscanf(pf1,"%d",&n1);
}
fprintf(pf3,"%d\n",n1);
}
while(!feof(aux))
{
fscanf(aux,"%d",&n);
fprintf(pf3,"%d\n",n);
}
fclose(pf1);
fclose(pf2);
fclose(pf3);
getche();
}
2 la N - vectori
# include<stdio.h>
# include<conio.h>
# define MAX 100
int i,k,j,n,r[MAX],fr[MAX];
int nrcif=1;
int main(void)
{
//clrscr();
printf("Intr n: ");
scanf("%d",&n);
r[0]=1;
fr[0]=1;
for(k=0;k<n;k++)
{
r[0]=(2*r[0])%10;
i=1;
while(i<=nrcif)
{
r[i]=(2*r[i])%10+(2*fr[i-1])/10;
i++;
}
if(2*r[nrcif-1]>=10) nrcif++;
for(j=0;j<i;j++) fr[j]=r[j];
}
printf("\n");
for(j=0;j<nrcif;j++)
printf("%d ",r[j]);
getche();
return 0;
}
# include<conio.h>
# define MAX 100
int i,k,j,n,r[MAX],fr[MAX];
int nrcif=1;
int main(void)
{
//clrscr();
printf("Intr n: ");
scanf("%d",&n);
r[0]=1;
fr[0]=1;
for(k=0;k<n;k++)
{
r[0]=(2*r[0])%10;
i=1;
while(i<=nrcif)
{
r[i]=(2*r[i])%10+(2*fr[i-1])/10;
i++;
}
if(2*r[nrcif-1]>=10) nrcif++;
for(j=0;j<i;j++) fr[j]=r[j];
}
printf("\n");
for(j=0;j<nrcif;j++)
printf("%d ",r[j]);
getche();
return 0;
}
Functie MAIN cu argumente
//Pt executia prg. trebuie sa fie setata optiunea:
// Options->Compiler->Source->Borland C++ (in ANSI mai intervine un parametru)
//
//Programul se ruleaza din File->Dos Shell cu comanda, ex: par_main 2 13 41
// nu cu Ctrl+F9
# include <stdio.h>;
# include <conio.h>;
# include <stdlib.h>;
void main(int argc,char ** argv)
{
clrscr();
//Variabilele de apel sunt depuse pe stiva de la dreapta spre stanga
//argv==matrice, tablou de pointeri la siruri
++argv;//*argv=="c:\....\pra_main.exe"
++argv;//*argv==argc (de tip char*=string=char[])
//arrgc=nr. de parametri inclusiv numele prg. de apel plus nr de
// parametri(2 - vezi ex.)
--argc;
--argc;
while(argc--)
{
printf("%s",*argv);
printf(" %d\n",atoi(*argv));
argv++;
}
getche();
}
// Options->Compiler->Source->Borland C++ (in ANSI mai intervine un parametru)
//
//Programul se ruleaza din File->Dos Shell cu comanda, ex: par_main 2 13 41
// nu cu Ctrl+F9
# include <stdio.h>;
# include <conio.h>;
# include <stdlib.h>;
void main(int argc,char ** argv)
{
clrscr();
//Variabilele de apel sunt depuse pe stiva de la dreapta spre stanga
//argv==matrice, tablou de pointeri la siruri
++argv;//*argv=="c:\....\pra_main.exe"
++argv;//*argv==argc (de tip char*=string=char[])
//arrgc=nr. de parametri inclusiv numele prg. de apel plus nr de
// parametri(2 - vezi ex.)
--argc;
--argc;
while(argc--)
{
printf("%s",*argv);
printf(" %d\n",atoi(*argv));
argv++;
}
getche();
}
Sortare prin insertie - iterativ
# include <iostream.h>;
# include <conio.h>;
# define MAX 10
int n,i,j,aux;
typedef int sir[MAX];
sir s;
void main(void)
{
clrscr();
cout<<"Intr nr de elemente: ";
cin>>n;
cin>>s[0];
for(i=1;i<n;i++)
{
j=i;
cin>>s[i];
aux=s[i];
while((aux<s[j-1])&&(j>=0))
{
s[j]=s[j-1];
j--;
}
s[j]=aux;
}
cout<<"\nSirul sortat este:\n";
for(i=0;i<n;i++)
cout<<s[i]<<" ";
getche();
}
# include <conio.h>;
# define MAX 10
int n,i,j,aux;
typedef int sir[MAX];
sir s;
void main(void)
{
clrscr();
cout<<"Intr nr de elemente: ";
cin>>n;
cin>>s[0];
for(i=1;i<n;i++)
{
j=i;
cin>>s[i];
aux=s[i];
while((aux<s[j-1])&&(j>=0))
{
s[j]=s[j-1];
j--;
}
s[j]=aux;
}
cout<<"\nSirul sortat este:\n";
for(i=0;i<n;i++)
cout<<s[i]<<" ";
getche();
}
Inmultire matrici
# include <iostream.h>;
# include <conio.h>;
# define MAX 50
int i,j,m,n,p;
float a[MAX][MAX],b[MAX][MAX],c[MAX][MAX];
void inm(int xs_A,int ys_A,int xd_A,int yd_A,int xs_B,int ys_B,int xd_B,int yd_B)
{
if( ((xd_A-xs_A<=1)&&(yd_A-ys_A<=1))
&& ((xd_B-xs_B<=1)&&(yd_B-ys_B<=1)) )
{
if((xs_A==xd_A)||(xs_B==xd_B))
c[xs_A][ys_A]=a[xs_A][ys_A]*b[xs_B][ys_B]+a[xs_A][yd_A]*b[xs_B][yd_B];
if((xs_A==yd_A)||(xs_B==yd_B))
c[xs_A][yd_A]=a[xs_A][ys_A]*b[xs_B][yd_B]+a[xs_A][yd_A]*b[xd_B][yd_B];
if((xd_A==ys_A)||(xd_B==ys_B))
c[xd_A][ys_A]=a[xd_A][ys_A]*b[xs_B][ys_B]+a[xd_A][yd_A]*b[xd_B][ys_B];
if((ys_A==yd_A)||(ys_B==yd_B))
c[xd_A][yd_A]=a[xd_A][ys_A]*b[xs_B][yd_B]+a[xd_A][yd_A]*b[xd_B][yd_B];
}
/* else if() //64 cazuri
{
...
}*/
else
{
int xm_A,ym_A,xm_B,ym_B;
xm_A=(xs_A+xd_A)/2;
ym_A=(ys_A+yd_A)/2;
xm_B=(xs_B+xd_B)/2;
ym_B=(ys_B+yd_B)/2;
inm(xs_A,ys_A,xm_A,ym_A,xs_B,ys_B,xm_B,ym_B);
inm(xs_A,ym_A,xm_A,yd_A,xs_B,ym_B,xm_B,yd_B);
inm(xm_A,ys_A,xd_A,ym_A,xm_B,ys_B,xd_B,ym_B);
inm(xm_A,ym_A,xd_A,yd_A,xm_B,ym_B,xd_B,yd_B);
}
}
void main(void)
{
clrscr();
//Citire matici
cout<<"Intr dimensiunile primei matrici:\n";
cin>>m>>n;
cout<<"\nIntr dimensiunile celei de a doua matrici:\n";
cin>>n>>p;
cout<<"\nIntr elementele din prima matrice:\n";
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
cout<<"\nIntr elementele din a doua matrice:\n";
for(i=0;i<n;i++)
for(j=0;j<p;j++)
cin>>b[i][j];
//
inm(0,0,m-1,n-1,0,0,n-1,p-1);
//
//Afisare rezultat
cout<<"\nMatricea produs este:\n";
for(i=0;i<m;i++)
{
for(j=0;j<p;j++)
cout<<c[i][j]<<" ";
cout<<"\n";
}
getche();
}
# include <conio.h>;
# define MAX 50
int i,j,m,n,p;
float a[MAX][MAX],b[MAX][MAX],c[MAX][MAX];
void inm(int xs_A,int ys_A,int xd_A,int yd_A,int xs_B,int ys_B,int xd_B,int yd_B)
{
if( ((xd_A-xs_A<=1)&&(yd_A-ys_A<=1))
&& ((xd_B-xs_B<=1)&&(yd_B-ys_B<=1)) )
{
if((xs_A==xd_A)||(xs_B==xd_B))
c[xs_A][ys_A]=a[xs_A][ys_A]*b[xs_B][ys_B]+a[xs_A][yd_A]*b[xs_B][yd_B];
if((xs_A==yd_A)||(xs_B==yd_B))
c[xs_A][yd_A]=a[xs_A][ys_A]*b[xs_B][yd_B]+a[xs_A][yd_A]*b[xd_B][yd_B];
if((xd_A==ys_A)||(xd_B==ys_B))
c[xd_A][ys_A]=a[xd_A][ys_A]*b[xs_B][ys_B]+a[xd_A][yd_A]*b[xd_B][ys_B];
if((ys_A==yd_A)||(ys_B==yd_B))
c[xd_A][yd_A]=a[xd_A][ys_A]*b[xs_B][yd_B]+a[xd_A][yd_A]*b[xd_B][yd_B];
}
/* else if() //64 cazuri
{
...
}*/
else
{
int xm_A,ym_A,xm_B,ym_B;
xm_A=(xs_A+xd_A)/2;
ym_A=(ys_A+yd_A)/2;
xm_B=(xs_B+xd_B)/2;
ym_B=(ys_B+yd_B)/2;
inm(xs_A,ys_A,xm_A,ym_A,xs_B,ys_B,xm_B,ym_B);
inm(xs_A,ym_A,xm_A,yd_A,xs_B,ym_B,xm_B,yd_B);
inm(xm_A,ys_A,xd_A,ym_A,xm_B,ys_B,xd_B,ym_B);
inm(xm_A,ym_A,xd_A,yd_A,xm_B,ym_B,xd_B,yd_B);
}
}
void main(void)
{
clrscr();
//Citire matici
cout<<"Intr dimensiunile primei matrici:\n";
cin>>m>>n;
cout<<"\nIntr dimensiunile celei de a doua matrici:\n";
cin>>n>>p;
cout<<"\nIntr elementele din prima matrice:\n";
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
cout<<"\nIntr elementele din a doua matrice:\n";
for(i=0;i<n;i++)
for(j=0;j<p;j++)
cin>>b[i][j];
//
inm(0,0,m-1,n-1,0,0,n-1,p-1);
//
//Afisare rezultat
cout<<"\nMatricea produs este:\n";
for(i=0;i<m;i++)
{
for(j=0;j<p;j++)
cout<<c[i][j]<<" ";
cout<<"\n";
}
getche();
}
FOR - recursiv
# include <iostream.h>;
# include <conio.h>;
int n;
void forr(int i)
{
if(i>n) return;
forr(i+1);
cout<<i<<" ";
}
void forr2(int j)
{
if(j<=0) return;
forr2(j-1);
forr(j);
cout<<"\n";
}
void main(void)
{
clrscr();
cout<<"Intr n= ";
cin>>n;
forr2(n);
getche();
}
# include <conio.h>;
int n;
void forr(int i)
{
if(i>n) return;
forr(i+1);
cout<<i<<" ";
}
void forr2(int j)
{
if(j<=0) return;
forr2(j-1);
forr(j);
cout<<"\n";
}
void main(void)
{
clrscr();
cout<<"Intr n= ";
cin>>n;
forr2(n);
getche();
}
Turnurile din HANOI - recursiv
//TURNURILE DIN HANOI
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int n;
char a,b,c;
void hanoi(int n,char a,char b,char c)
{ if(n==1)
cout<<"\n"<<a<<b;
else
{ hanoi(n-1,a,c,b);
cout<<"\n"<<a<<b;
hanoi(n-1,c,b,a);
}
}
void main()
{ cout<<"Numarul de discuri n="; cin>>n;
a='A';
b='B';
c='C';
hanoi(n,a,b,c);
getch();
}
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int n;
char a,b,c;
void hanoi(int n,char a,char b,char c)
{ if(n==1)
cout<<"\n"<<a<<b;
else
{ hanoi(n-1,a,c,b);
cout<<"\n"<<a<<b;
hanoi(n-1,c,b,a);
}
}
void main()
{ cout<<"Numarul de discuri n="; cin>>n;
a='A';
b='B';
c='C';
hanoi(n,a,b,c);
getch();
}
Determinare puncte SA dintr-o matrice
//Program care determina punctele SA intr-o matrice
# include <iostream.h>;
# include <conio.h>;
# include <values.h>;
# define MAX 10
int i,j,n;
int m[MAX][MAX];
int minmax,max;
int min,poz;
void main(void)
{
clrscr();
//Citire date
cout<<"\nIntr dimensiunea matr. :\n";
cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
cout<<"m["<<i<<","<<j<<"]= ";
cin>>m[i][j];
}
//Cautam cel mai mic maxim pe coloane
minmax=MAXINT;
for(i=0;i<n;i++)
{
max=-MAXINT;
for(j=0;j<n;j++)
if(m[j][i]>max) max=m[j][i];
if(minmax>max) minmax=max;
}
//Cautam un minim pe linie egal cu cel mai mic maxim pe coloane
for(i=0;i<n;i++)
{
min=MAXINT;
for(j=0;j<n;j++)
if(min>m[i][j]) {min=m[i][j];poz=j;}
if(min==minmax) cout<<"\nPunct SA pe poazitia ("<<i<<","<<poz<<")\n";
}
cout<<"\nGATA...";
getche();
}
# include <iostream.h>;
# include <conio.h>;
# include <values.h>;
# define MAX 10
int i,j,n;
int m[MAX][MAX];
int minmax,max;
int min,poz;
void main(void)
{
clrscr();
//Citire date
cout<<"\nIntr dimensiunea matr. :\n";
cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
cout<<"m["<<i<<","<<j<<"]= ";
cin>>m[i][j];
}
//Cautam cel mai mic maxim pe coloane
minmax=MAXINT;
for(i=0;i<n;i++)
{
max=-MAXINT;
for(j=0;j<n;j++)
if(m[j][i]>max) max=m[j][i];
if(minmax>max) minmax=max;
}
//Cautam un minim pe linie egal cu cel mai mic maxim pe coloane
for(i=0;i<n;i++)
{
min=MAXINT;
for(j=0;j<n;j++)
if(min>m[i][j]) {min=m[i][j];poz=j;}
if(min==minmax) cout<<"\nPunct SA pe poazitia ("<<i<<","<<poz<<")\n";
}
cout<<"\nGATA...";
getche();
}
Parcurgere circulara matrice
#include<iostream.h>
#include<conio.h>
void main()
{ int i,j,a[100][100],n;
cout<<"se citeste matricea:";
cout<<"n="; cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{cout <<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
//k=14;
for(i=0;i<=n/2;i++)
{for(j=i;j<=n-i-1;j++) cout<<a[i][j]; //a[i][j]=k+5;
for(j=i+1;j<=n-i-1;j++) cout<<a[j][n-i-1]; //k+4
for(j=n-i-2;j>=i+1;j--) cout<<a[n-i-1][j]; //k+5
for(j=n-i-1;j>=i+1;j--) cout<<a[j][i]; //k+4
}
getch();
}
#include<conio.h>
void main()
{ int i,j,a[100][100],n;
cout<<"se citeste matricea:";
cout<<"n="; cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{cout <<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
//k=14;
for(i=0;i<=n/2;i++)
{for(j=i;j<=n-i-1;j++) cout<<a[i][j]; //a[i][j]=k+5;
for(j=i+1;j<=n-i-1;j++) cout<<a[j][n-i-1]; //k+4
for(j=n-i-2;j>=i+1;j--) cout<<a[n-i-1][j]; //k+5
for(j=n-i-1;j>=i+1;j--) cout<<a[j][i]; //k+4
}
getch();
}
Maxim sir - Divide et Impera - Iterativ
# include <stdio.h>;
# include <conio.h>;
# include <values.h>;
# define MAX 100 //maxim 100 de elemente in sir
int i,n,val,a[MAX];
void main(void)
{
clrscr();
printf("Intr nr de elemente din sir: ");
scanf("%d",&n);
printf("\nIntr elementele sirului:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
int s,d,mij;
int max,max1,max2;
s=0;
d=n;
mij=(s+d)/2;
max=max1=max2=-MAXINT;
int gasit=1;
while((s<=d)&&(gasit==1))
{
gasit=0;
s=0;
d=n;
mij=(s+d)/2;
while(a[mij+1]>max) {max1=a[mij+1]; s=mij+1;gasit=1;}
while(a[mij-1]>max) {max2=a[mij-1]; d=mij-1;gasit=1;}
if(max1>max2) max=max1;
else max=max2;
}
printf("\nMAX din sir este: %d",max);
getche();
}
# include <conio.h>;
# include <values.h>;
# define MAX 100 //maxim 100 de elemente in sir
int i,n,val,a[MAX];
void main(void)
{
clrscr();
printf("Intr nr de elemente din sir: ");
scanf("%d",&n);
printf("\nIntr elementele sirului:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
int s,d,mij;
int max,max1,max2;
s=0;
d=n;
mij=(s+d)/2;
max=max1=max2=-MAXINT;
int gasit=1;
while((s<=d)&&(gasit==1))
{
gasit=0;
s=0;
d=n;
mij=(s+d)/2;
while(a[mij+1]>max) {max1=a[mij+1]; s=mij+1;gasit=1;}
while(a[mij-1]>max) {max2=a[mij-1]; d=mij-1;gasit=1;}
if(max1>max2) max=max1;
else max=max2;
}
printf("\nMAX din sir este: %d",max);
getche();
}
Parcurgere matrice in spirala
//parcurgerea matricei in spirala
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
FILE*f;
int g(int &k)
{
int i,gata=0,s=0,aux=0;
i=k;
while(gata==0)
{
gata=0;
s=0;
aux=i;
while(aux!=0){
s=s+aux%10;
aux=aux/10;
}
if(s%5==0)
gata=1;
i++;
}
k=i-1;
return k;
}
void main()
{
int a[20][20],n,i,j,k;
clrscr();
f=fopen("matrice.txt","r");
/*fscanf(f,"%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
fscanf(f,"%d",&a[i][j]);*/
cout<<"Dati n=";
cin>>n;
k=13;
for(i=0;i<n;i++)
{
for(j=i;j<n-i;j++)
a[i][j]=g(++k);
for(j=i+1;j<n-i;j++)
a[j][n-1-i]=g(++k);
for(j=n-i-2;j>i;j--)
a[n-1-i][j]=g(++k);
for(j=n-i-1;j>i;j--)
a[j][i]=g(++k);
}
for(i=0;i<n;i++) {
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
fclose(f);
getch();
}
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
FILE*f;
int g(int &k)
{
int i,gata=0,s=0,aux=0;
i=k;
while(gata==0)
{
gata=0;
s=0;
aux=i;
while(aux!=0){
s=s+aux%10;
aux=aux/10;
}
if(s%5==0)
gata=1;
i++;
}
k=i-1;
return k;
}
void main()
{
int a[20][20],n,i,j,k;
clrscr();
f=fopen("matrice.txt","r");
/*fscanf(f,"%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
fscanf(f,"%d",&a[i][j]);*/
cout<<"Dati n=";
cin>>n;
k=13;
for(i=0;i<n;i++)
{
for(j=i;j<n-i;j++)
a[i][j]=g(++k);
for(j=i+1;j<n-i;j++)
a[j][n-1-i]=g(++k);
for(j=n-i-2;j>i;j--)
a[n-1-i][j]=g(++k);
for(j=n-i-1;j>i;j--)
a[j][i]=g(++k);
}
for(i=0;i<n;i++) {
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
fclose(f);
getch();
}
Operatii cu multimi, vectori caracteristici
//
//Operatii cu vectori caracteristici
//
# include <stdio.h>;
# include <conio.h>;
int a[100],b[100],c[100],d[100];
int i,j,k,n,m,val;
void main(void)
{
clrscr();
printf("Introduceti nr de elemente din prima multime: ");
scanf("%d",&m);
printf("\nIntroduceti nr de elemente din a doua multime: ");
scanf("%d",&n);
//Citirea primei multimi / sir
int aux1=m;
printf("\nIntroduceti prima multime:\n");
for(i=0;i<aux1;i++)
{
scanf("%d",&val);
a[val]=1;
if(val>m) m=val;
}
//Citirea celei de a doua multimi
int aux2=n;
printf("\nIntroduceti a doua multime:\n");
for(i=0;i<aux2;i++)
{
scanf("%d",&val);
b[val]=1;
if(val>n) n=val;
}
//Determinare intersectie
for(k=0;k<n;k++)
if((a[k]==1)&&(b[k]==1))
c[k]=1;
//Afisare intersectie
printf("\nIntersectia celor doua multimi este:\n");
for(k=0;k<n;k++)
if(c[k]==1)
printf("%d ",k);
getche();
}
//Reuniune, Diferenta TEMA
//Operatii cu vectori caracteristici
//
# include <stdio.h>;
# include <conio.h>;
int a[100],b[100],c[100],d[100];
int i,j,k,n,m,val;
void main(void)
{
clrscr();
printf("Introduceti nr de elemente din prima multime: ");
scanf("%d",&m);
printf("\nIntroduceti nr de elemente din a doua multime: ");
scanf("%d",&n);
//Citirea primei multimi / sir
int aux1=m;
printf("\nIntroduceti prima multime:\n");
for(i=0;i<aux1;i++)
{
scanf("%d",&val);
a[val]=1;
if(val>m) m=val;
}
//Citirea celei de a doua multimi
int aux2=n;
printf("\nIntroduceti a doua multime:\n");
for(i=0;i<aux2;i++)
{
scanf("%d",&val);
b[val]=1;
if(val>n) n=val;
}
//Determinare intersectie
for(k=0;k<n;k++)
if((a[k]==1)&&(b[k]==1))
c[k]=1;
//Afisare intersectie
printf("\nIntersectia celor doua multimi este:\n");
for(k=0;k<n;k++)
if(c[k]==1)
printf("%d ",k);
getche();
}
//Reuniune, Diferenta TEMA
Verificare numar prim
//Prg care verifica daca un nr e prim
# include <stdio.h>;
# include <conio.h>;
# include <math.h>;
int n,i,ep; //i= variabila de contor, ep= este prim
void main(void)
{
clrscr();//curata ecranul
printf("Intr n: ");
scanf("%d",&n);
ep=1;//presupunem ca este prim
for(i=2;i<= floor( sqrt(n) );i++)
if((n%i) == 0) //daca am gasit un divizor atunci
ep=0; //n nu mai este prim
//Afisez rezultatul
if(ep) printf("\nNumarul este prim");
else printf("\nNumarul NU este prim");
getche();//mentine ecranul de executie pana la apasarea unei taste
}`
# include <stdio.h>;
# include <conio.h>;
# include <math.h>;
int n,i,ep; //i= variabila de contor, ep= este prim
void main(void)
{
clrscr();//curata ecranul
printf("Intr n: ");
scanf("%d",&n);
ep=1;//presupunem ca este prim
for(i=2;i<= floor( sqrt(n) );i++)
if((n%i) == 0) //daca am gasit un divizor atunci
ep=0; //n nu mai este prim
//Afisez rezultatul
if(ep) printf("\nNumarul este prim");
else printf("\nNumarul NU este prim");
getche();//mentine ecranul de executie pana la apasarea unei taste
}`
Interclasare siruri sortate
# include <stdio.h>;
# include <conio.h>;
int n,m,a[100],b[100],c[200];
int i,j,k;
void main(void)
{
clrscr();
//Citire vectori
printf("Intr nr de elem din primul sir: ");
scanf("%d",&n);
printf("Intr nr de elem din al doilea sir: ");
scanf("%d",&m);
printf("\nIntr elementele primului sir:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("\nIntr elementele din al doilea sir:\n");
for(j=0;j<m;j++)
scanf("%d",&b[j]);
//Interclasare
i=0;
j=0;
k=0;
while((i<n)&&(j<m))
{
if(a[i]<b[j])
c[k++]=a[i++];
else
c[k++]=b[j++];
}
//Copierea elementelor ramase
if(i>=n)
for(i=j;i<m;i++)
c[k++]=b[i];
if(j>=m)
for(j=i;j<n;j++)
c[k++]=a[j];
//Afisare rezultat
printf("\nVectorii interclasati :\n");
for(k=0;k<m+n;k++)
printf("%d ",c[k]);
getche();
}
# include <conio.h>;
int n,m,a[100],b[100],c[200];
int i,j,k;
void main(void)
{
clrscr();
//Citire vectori
printf("Intr nr de elem din primul sir: ");
scanf("%d",&n);
printf("Intr nr de elem din al doilea sir: ");
scanf("%d",&m);
printf("\nIntr elementele primului sir:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("\nIntr elementele din al doilea sir:\n");
for(j=0;j<m;j++)
scanf("%d",&b[j]);
//Interclasare
i=0;
j=0;
k=0;
while((i<n)&&(j<m))
{
if(a[i]<b[j])
c[k++]=a[i++];
else
c[k++]=b[j++];
}
//Copierea elementelor ramase
if(i>=n)
for(i=j;i<m;i++)
c[k++]=b[i];
if(j>=m)
for(j=i;j<n;j++)
c[k++]=a[j];
//Afisare rezultat
printf("\nVectorii interclasati :\n");
for(k=0;k<m+n;k++)
printf("%d ",c[k]);
getche();
}
Cautare binara clasica
# include <stdio.h>;
# include <conio.h>;
# define MAX 100 //maxim 100 de elemente in sir
int i,n,val,a[MAX];
void main(void)
{
clrscr();
printf("Intr nr de elemente din sir: "); //pp sirul sortat
scanf("%d",&n);
printf("\nIntr elementele sirului:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("\nIntr valoarea cautata: ");
scanf("%d",&val);
int s,d,mij;
int gasit;
s=0;
d=n;
mij=(s+d)/2;
gasit=0; //pp ca valoarea nu se afla in sir
while((s<=d)&&(gasit==0))
{
mij=(s+d)/2;
if(val==a[mij]) {gasit=1; printf("\Val gasita pe poz %d",mij);}
else if(a[mij]<val) s=mij+1;
else if(a[mij]>val) d=mij-1;
}
if(gasit==0) printf("\nValoarea nu se afla in sir !!!");
getche();
}
# include <conio.h>;
# define MAX 100 //maxim 100 de elemente in sir
int i,n,val,a[MAX];
void main(void)
{
clrscr();
printf("Intr nr de elemente din sir: "); //pp sirul sortat
scanf("%d",&n);
printf("\nIntr elementele sirului:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("\nIntr valoarea cautata: ");
scanf("%d",&val);
int s,d,mij;
int gasit;
s=0;
d=n;
mij=(s+d)/2;
gasit=0; //pp ca valoarea nu se afla in sir
while((s<=d)&&(gasit==0))
{
mij=(s+d)/2;
if(val==a[mij]) {gasit=1; printf("\Val gasita pe poz %d",mij);}
else if(a[mij]<val) s=mij+1;
else if(a[mij]>val) d=mij-1;
}
if(gasit==0) printf("\nValoarea nu se afla in sir !!!");
getche();
}
Cautare secventiala
//Cautare secventiala
# include <iostream.h>;
# include <conio.h>;
# include <stdlib.h>; //pt functia random(...)
# define N 100
//dimensiunea - nr de elemente din sir
int i,n,val,poz,v[N];
void main(void)
{
clrscr();
cout<<"Intr nr de elemente din sir: ";
cin>>n;
//Generez elemente aleatoare
for(i=0;i<n;i++)
v[i]=random(n);
//genereaza numere aleatoare intre 0 si n-1
//Afisez elementele
for(i=0;i<n;i++)
cout<<v[i]<<" ";
cout<<"\nIntroduceti valoarea cautata: ";
cin>>val;
poz=-1;//pp ca nu exista in sir
//Parcurg secvential tot sirul si compar
for(i=0;i<n;i++)
if(v[i]==val) poz=i;
//se retine ultima aparitie
cout<<"\nValoarea cautata se afla pe pozitia "<<poz+1;
getche();
}
# include <iostream.h>;
# include <conio.h>;
# include <stdlib.h>; //pt functia random(...)
# define N 100
//dimensiunea - nr de elemente din sir
int i,n,val,poz,v[N];
void main(void)
{
clrscr();
cout<<"Intr nr de elemente din sir: ";
cin>>n;
//Generez elemente aleatoare
for(i=0;i<n;i++)
v[i]=random(n);
//genereaza numere aleatoare intre 0 si n-1
//Afisez elementele
for(i=0;i<n;i++)
cout<<v[i]<<" ";
cout<<"\nIntroduceti valoarea cautata: ";
cin>>val;
poz=-1;//pp ca nu exista in sir
//Parcurg secvential tot sirul si compar
for(i=0;i<n;i++)
if(v[i]==val) poz=i;
//se retine ultima aparitie
cout<<"\nValoarea cautata se afla pe pozitia "<<poz+1;
getche();
}
Abonați-vă la:
Postări (Atom)