Sunteți pe pagina 1din 5

S1

1. c)
2. a)
3. b)
4. d)
5. c)

S2
1. a) 15
b) 10000 98888
c) #include<iostream>
using namespace std;
int main(){
int n, k, p=1, c;
cin>>n>>k;
while(n>0){
c=n%10;
if(k>0)
if(c%2==1)
p*=c;
n/=10;
k--;
}
cout<<p;
return 0;
}
d) citeşte n, k
p<-1
┌dacă n>0 atunci
│┌repetă
││ c<-n%10
││┌dacă k>0 atunci
│││ ┌dacă c%2=1 atunci
│││ │ p<-p*c
│││ └■
││└■
││n<-[n/10]; k<-k-1
│└până când n≤0
└■
scrie p
2. struct ciocolata{
int gramaj;
struct{
int zi, luna, an;
}datae;
char denumire[101];
}c;
3. 9sntTEA

S3
1. int joc(int n){
int k=0;
for(int d=2;d<=n;d++)
if(n%d==0)
k++;
return k;
}
2. #include<iostream>
using namespace std;
int main(){
int m, n, a[101][101], max;
cin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
for(int i=1;i<=m;i++){
max=-1;
for(int j=1;j<=n;j++)
if(a[i][j]>max&&a[i][j]<21)
max=a[i][j];
if(max==-1)
cout<<"nu exista"<<endl;
else
cout<<max<<endl;
}
return 0;
}
3. a) Programul citeste din primul fisier n1 numere si daca sunt divizibile cu 5
sunt marcate cu 1 in vectorul de aparitii, apoi citeste din al 2-lea fisier n2
numere si daca sunt deja marcate cu 1, vor fi marcate cu 2, semnificand ca numarul
apare in ambele fisiere. La final se parcurge vectorul de aparitii pana la valoarea
maxima, din 5 in 5, iar daca v[i]=1 inseamna ca numarul i apare intr-un singur
fisier si va fi afisat. Algoritmul este eficient din punct de vedere al memoriei
utilizate deoarece utilizeaza un numar restrans de variabile simple si un vector de
aparitii cu doar 100000 componente. Este eficient si din punct de vedere al
timpului de executare deoarece fisierele sunt parcurse o singura data, iar datele
sunt prelucrate din citire, rezultand o complexitate liniara O(n).
b) #include<iostream>
#include<fstream>
using namespace std;
int main(){
int v[100001]={0}, n1, n2, x, max=-1;
ifstream f("bac1.txt"), g("bac2.txt");
f>>n1;
for(int i=1;i<=n1;i++){
f>>x;
if(x%5==0){
v[x]=1;
if(x>max)
max=x;
}
}
f.close();
g>>n2;
for(int i=1;i<=n2;i++){
g>>x;
if(x%5==0){
if(v[x]!=0)
v[x]=2;
else
v[x]=1;
if(x>max)
max=x;
}
}
g.close();
for(int i=5;i<=max;i+=5)
if(v[i]==1)
cout<<i<<' ';
return 0;
}

SAU

//urmatoarele 2 metode sunt o interclasare mai tunata

//metoda andrei catalin meditatie - unsafe


#include<iostream>
#include<fstream>
using namespace std;
int main(){
ifstream f("bac1.txt"), g("bac2.txt");
int n1,n2,x1,x2,ok=0,i,j;
f>>n1>>x1;
g>>n2>>x2;
i=1,j=1;
while(i<=n1&&j<=n2){
if(x1==x2){
i++;
j++;
f>>x1;
g>>x2;
}
else
if(x1<x2){
if(x1%5==0){
cout<<x1<<' ';
ok=1;
}
i++;
f>>x1;
}
else{
if(x2%5==0){
cout<<x2<<' ';
ok=1;
}
j++;
g>>x2;
}
}
while(i<=n1){
f>>x1;
i++;
if(x1%5==0){
cout<<x1<<' ';
ok=1;
}
}
while(j<=n2){
g>>x2;
j++;
if(x2%5==0){
cout<<x2<<' ';
ok=1;
}
}
if(ok==0)
cout<<"nu exista";
return 0;
}

SAU

//metoda dirigu manu


#include<iostream>
#include<fstream>
using namespace std;
int main(){
int n1,n2,sem=0,x1,x2,i=1,j=1;
ifstream f("bac1.txt"), g("bac2.txt");
f>>n1;
f>>x1;
g>>n2;
g>>x2;
while(i<=n1||j<=n2){
while(i<=n1&&x1%5!=0){
f>>x1;
i++;
}
while(j<=n2&&x2%5!=0){
g>>x2;
j++;
}
if(x1%5==0&&x2%5==0)
if(x1==x2)
x1=x2=-1;
else
if(x1<x2){
cout<<x2<<' ';
sem=1;
x1=-1;
}
else{
cout<<x2<<' ';
sem=1;
x2=-1;
}
else{
if(x1%5==0){
cout<<x1<<' ';
sem=1;
x1=-1;
}
if(x2%5==0){
cout<<x2<<' ';
sem=1;
x2=-1;
}
}
}
if(sem==0)
cout<<"Nu exista";
return 0;
}

S-ar putea să vă placă și