Documente Academic
Documente Profesional
Documente Cultură
INFORMATICA
CUPRINS
I. PROBLEME SUBPROGRAM
PROBLEMA 1
SUBPROGRAMUL CIF CU 2 PARAMETRII PRIMESTE PRIN INTERMEDIUL PARAMETRULUI A
SCRIEREA NUMARULUI A.
ALE SUBPROGRAMULUI CIF CEL MAI MARE NUMAR PALINDROM CE POATE FI OBTINUT
VALOAREA 0.
#INCLUDE<IOSTREAM>
USING NAMESPACE STD;
INT CIF(LONG A,INT B)
{INT K=0;
WHILE(A!=0)
{IF(B==A%10) K++;
A=A/10;}
RETURN K;}
INT N, INV,OK,I,NR,AUX;
INT MAIN()
{DO (CIN>>N);
WHILE(N<10000000 || N>99999999);
OK=1;
FOR(I=9;I>=0 &&OK==1; I--)
{IF (CIF(N,I)%2==0)
FOR(INT K=1;K<=CIF(N,I)/2;K++)
NR=NR*10+I;
ELSE OK=0;}
IF(OK==1){AUX=NR;
WHILE(NR!=0)
{INV=INV*10+NR%10;
NR=NR/10;}
NR=AUX*10000+INV;
COUT<<NR;}
ELSE COUT<<0;
RETURN 0;}
PROBLEMA 2
A. NR CARE SE OBTINE DIN ELIMINAREA TUTUROR CF CU VAL K DIN X(SE VA FOLOSI O FC)
B. CEL MAI MARE NR MAI MIC DECAT N CARE ESTE O PUTERE A LUI K
EX :
DIN:
1231 2
DIESIRE :
131
1024
#INCLUDE <IOSTREAM> int ok=1,k,m=1,aux;
#INCLUDE <FSTREAM>
USING NAMESPACE STD;
long n;
LONG NR(LONG A,INT K) fin>>n>>k;
{ aux=n;
INT X=0,P=1; fout<<nr(n,k)<<endl;
WHILE(A)
{
while(aux)
IF(A%10!=K) if(aux%k==0)
{ aux=aux/k;
X=X+(A%10)*P; else aux=0;
P=P*10;
}
if(aux==1)fout<<n;
A=A/10; else {while(ok)
} {
RETURN X; if(m>n)ok=0;
}
INT MAIN ()
else m=m*k;
{ }
IFSTREAM FIN("TIP1.IN"); m=m/k;
OFSTREAM FOUT("TIP1.OUT"); fout<<m;}
fin.close ();
fout.close ();
return 0;
}
PROBLEMA 3
DIN FIS "CMMDC3.IN" SE AFLA PE PRIMA LINIE UN NR NAT NENUL
N 5<N<30 PE CEA DE A DOUA LINIE SUNT
SCRISE NR NAT SEPARATA PRIN CATE UN SPATIU FORMATE DIN CEL MULT 4 CF , SA
SE REALIZEZE UN PRGR C++
CARE SA SCRIE IN FIS ATESTAT.OUT :
A)PE PRIMA LIN SEPARATE PRINTR-UN SPATIU NR CIF NR IMPARE DIN SIR
B) PE URM LINIE CEL MAI MARE DIV COMUN DINTRE EL MIN SI CEL MAX DIN SIR
EX
CMMDC3.IN :
6
1232 243 98 3 242 27
ATESTAT.OUT :
312
3*/
int cmmdc(int a, int b)
{
#include <iostream> int r=a%b;
#include <fstream> while(r!=0)
using namespace std; {
ifstream fin("cmmdc3.in"); a=b;
ofstream fout("atestat.out"); b=r;
int nc(int a) r=a%b;
{ }
int k=0; return b;
while(a) }
{ int mx(int v[31],int n)
k++; {
a=a/10; int mx=v[1];
} for(int i=1;i<=n;i++)
return k; if(v[i]>mx)mx=v[i];
} return mx;
}
int mn(int v[31],int n)
{
int mn=v[1];
for(int i=1;i<=n;i++)
if(v[i]<mn)mn=v[i];
return mn;
}
int main ()
{
int n,x,i,v[31];
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<=n;i++)
if(v[i]%2!=0)fout<<nc(v[i])<<" ";
fout<<endl;
fout<<cmmdc(mx(v,n),mn(v,n));
fin.close ();
fout.close ();
return 0;
}
PROBLEMA 4
PENTRU EXTRAGEREA PRIMEI CIFRE A UNUI NUMAR NATURAL SE VA FOLOSI O ALTA FUNCTIE,
B) SA SE SCRIE PE A DOUA LINIE CEL MAI MARE NUMAR CARE SE POATE FORMACU PRIMA CIFRA
UNUI VECTOR
#include<iostream> int main()
using namespace std; {int k=1,a[100], b[100], i, j
void citire(int n, int v[100]) ,n,x,p[100];
{for(int i=1;i<=n;i++) cout<<"dati n";
{cout<<"v["<<i<<"]="; cin>>n;
cin>>v[i];}} citire(n,a);
citire(n,b);
void scriere(int v[100], int n) for(i=1;i<=n;i++)
{for(int i=1;i<=n;i++) {x=a[i];
cout<<v[i]<<" ";} if(verificare (x,n,b)==1)
{p[k]=x;
int verificare(int x,int n,int v[100]) k++;}}
{int i; scriere (p,k-1);
for(i=1;i<=n;i++) return 0;}
if(v[i]==x) return 1;
return 0;}
PROBLEMA 7
ZI=->MAX((X1+X2+...+XI)/I,YI) DACA YI>=0
3 FCT :
A. SUMA
B. MAX
C. Z
EX :
34 53 4 12 22
78 2 10 19 21
=> 78 25 25 25 25
void zi(int a[51],int b[51],int i,int z[51])
{
for(int j=1;j<=i;j++)
#include <iostream> if(b[j]>=0)z[j]=mx(suma(i,a)/i,b[j]);
using namespace std; else z[j]=mx(a[1],suma(i,b)/i);
int suma(int i,int a[51]) }
{ int main ()
int s=0; {
for(int j=1;j<=i;j++) int x[51],y[51],i,n,z[51];
s=s+a[j]; cin>>n;
return s; for(i=1;i<=n;i++)
} cin>>x[i];
int mx(int a,int b) for(i=1;i<=n;i++)
{ cin>>y[i];
int nr; zi(x,y,n,z);
if(a>=b)nr=a; for(i=1;i<=n;i++)
else nr=b; cout<<z[i]<<" ";
return nr; return 0;
} }
PROBLEMA 8
SCRIETI UN PROGRAN C++ CARE CITESTE DIN ATESTAT.IN NUMARUL N SI APOI CELE N NUMERE SI
CARE SCRIE
IN ATESTAT8.OUT :
B)PE A DOUA LINIE, IN ORDINE CRESCATOARE ELEM. DISTINCTE ALE SIRULUI(SE VA FOLOSI O
FUNCTIE PT ORDONARE).
void ordonare(int n, int v[10]) {
#include<iostream> { int i,n,v[10],ma;
#include<fstream> int i,j,aux; ifstream fin ("atestat8.in");
using namespace std; for(i=1;i<=n-1;i++) ofstream fout ("atestat8.out");
float medart(int n, int for(j=i+1;j<=n;j++) fin>>n;
v[10]) if(v[i]>v[j]){aux=v[i]; for(i=1;i<=n;i++)
{ v[i]=v[j]; fin>>v[i];
int i,s=0,k=0; v[j]=aux;} fout<<medart(n,v);
for(i=1;i<=n;i=i+2) } fout<<endl;
{ int main() ordonare(n,v);
s=s+v[i]; for(i=1;i<=n-1;i++)
k++; if(v[i]!=v[i+1]) fout<<v[i]<<"
} ";
return 1.*s/k; if(v[n-1]!=v[n]) fout<<v[n]<<" ";
} fin.close();
fout.close();
return 0;
}
#include<iostream>
using namespace std; PROBLEMA 9
void citire(int a[100], int n)
{for(int i=1;i<=n;i++) void reuniune(int a[100],int n, int b[100],int m, int c[100])
{cout<<"v["<<i<<"]="; {int p=m+n,i;
cin>>a[i];} citire (a,n);
} citire (b,m);
for( i=1;i<=n;i++)
void afisare(int a[100], int n) c[i]=a[i];
{for(int i=1;i<=n;i++) for(i=n+1 ;i<=m; i++)
cout<<a[i]<<" ";} c[i]=b[i-n];
for(i=1;i<p;i++)
void ordonare(int a[100], int n) for(int j=i+1;j<=p;j++)
{int aux, i, j; {if(c[i]==c[j])
for(i=1;i<n;i++) {for(int k=j;k<p;k++)
for(j=i+1;j<=n;j++) c[k]=c[k+1];
if(a[i]>a[j]){aux=a[i]; p--;}}
a[i]=a[j]; ordonare(c,p);
a[j]=aux;}} afisare(c,p);}
void diferentaa(int a[100], int b[100], int n, int m,int c[100])
void intersectie(int a[100], int n, int b[100], int m, int c[100]) {int k=1;
{int k=1,i,j; for(int i=1;i<=n;i++)
for( i=1;i<=n;i++) {int ok=1;
for( j=1;i<=m;j++) for(int j=1;j<=m && ok==1;j++)
if(a[i]==b[j]) {c[k]=a[i]; k++;} if(a[i]==b[j]) ok=0;
k--; if(ok==1) {c[k]=a[i];k++;}}
for(i=1;i<k;i++) k--;
for(j=i+1;i<=k;j++) afisare(c,k);}
if(c[i]==c[j])
{for(int x=j;x<k;x++) void diferentab(int a[100], int b[100], int n, int m,int c[100])
c[x]=c[x+1]; {int k=1;
k--;} for(i=1;i<=m;i++)
afisare(c,k);} {int ok=1;
for(int j=1;j<=n;&& ok==1;j++)
if(b[i]==b[j]) ok=0;
if(ok==1) {c[k]=b[i]; k++;}}
k--;
afisar e(c,k);}
int main()
{int a[100], b[100],n,m,i,opt;
cout<<"dati n si m";
cin>>n>>m;
citire(a,n);
citire(b,n);
cin>>opt;
switch(opt)
{case 1: {cout<<"Reuniune"<<endl ; reuniune(a,n,b,m,c);} break;
case 2: {cout<<"Intersectie"<<endl; intersectie(a,n,b,m,c);} break;
case 3:{cout<<"A-B"<<endl; diferentaa(a,b,n,m,c);} break;
case 4:{cout<<"B-A"<<endl;diferentab(a,b,n,m,c);} break;}
return 0;}