Sunteți pe pagina 1din 8

PROF. ING.

EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E


Probleme rezolvate 2

1. Diferenta a doua siruri, multimi.


Se citesc din fişierul “mult.in”, de pe prima linie, 2 numere n şi m (1≤n, m≤50). De pe următoarele
două linii se citesc elementele adouă şiruri de lungime n, respectiv m, numere întregi, de maxim 9
cifre. Elementele şirurilor sunt distincte două cate două. Scrieţi un program, care să construiască în
memorie un şir ce va conţine intersecţia celor două şiruri. Rezultatul se va afişa în fişierul ”mult.out”.
Exemplu:
mult.in
5 4
1 3 4 7 8
1 2 3 6

mult.out
4 7 8

#include<iostream>
#include<fstream>

using namespace std;

long a[51],b[51],c[51];
int n,m,p;

void citire()
{
ifstream f("mult.in");
f>>n>>m;
for(int i=1;i<=n;++i)
f>>a[i];
for(int j=1;j<=m;++j)
fin>>b[j];
}

int caut(long x)
{
for(int i=1;i<=m;++i)
if(b[i]==x)
return 1;
return 0;
}

void solve()

Pagina 1 din 8
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
{
for(int i=1;i<=n;++i)
if(caut(a[i])==0)
c[++p]=a[i];
}

void afisare()
{
ifstream f("mult.out");
for(int i=1;i<=p;++i)
f<<c[i]<<" ";
f.close();
}

void main()
{
citire();
solve();
afisare();
}

2. Reuniunea a doua siruri, multimi.


Se citesc din fişierul “mult.in”, de pe primalinie, 2 numere n şi m (1≤n, m≤50). De pe următoarele
două linii se citesc elementele a două şiruri de lungime n, respectiv m, numere întregi, de maxim 9
cifre. Elementele şirurilor sunt distincte două cate două. Să se scrie un program, care să construiască
în memorie un şir ce va conţine reuniunea celor două şiruri. Rezultatul se va afişa în fişierul
”mult.out”.
Exemplu:
mult.in
5 4
1 3 4 7 8
1 2 3 6

mult.out
1 2 3 4 6 7 8

#include<iostream>
#include<fstream>

using namespace std;

long a[51],b[51],c[51];
int n , m , p;

Pagina 2 din 8
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
void citire()
{
ifstream f("mult.in");
f>>n>>m;
for(int i=1;i<=n;++i)
f>>a[i];
for(int j=1;j<=m;++j)
f>>b[j];
}
int caut(long x)
{
for( int i=1;i<=m;++i)
if(c[i]==x)
return 1;
return 0;
}

void solve()
{
for(int i=1;i<=m;++i)
c[i]=b[i];
p=m;
for(int i=1;i<=n;++i)
if(caut(a[i])==0)
c[++p]=a[i];
}

void afisare()
{
ifstream f("mult.out");
for(int i=1;i<=p;++i)
f<<c[i]<<" ";
f.close();
}

void main()
{
citire();
solve();
afisare();
}

Pagina 3 din 8
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
3. Verifica un sir daca are toate elemente unice.
Se citeşte din fişierul “mult.in”, de pe prima linie, un număr n (1≤n≤50). De pe următoarea
linie se citesc elementele unui şir de lungime n, numere întregi, de maxim 9 cifre. Să se scrie un
program care să verifice dacă şirul citit conţine numai elemente distincte.
Exemplu:
mult.in
5
1 3 4 7 8

mult.out
DA

#include<iostream>
#include< fstream>
using namespace std;

long a[51];
int n;

void citire()
{
ifstream f("mult.in");
f>>n;
for(int i=1;i<=n;++i)
f>>a[i];
}

int solve()
{
for(int i=1;i<=n;++i)
for(int j=i+1;j<=n;++j)
if(a[i]==a[j])
return 0;
return 1;
}

void main()
{
citire();
if(solve())
cout<<"DA";
else
cout<<"NU";
}
Pagina 4 din 8
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E

4. Verifica o lista daca are toate elementele unice.


Se citesc din fişierul “mult.in”, de pe prima linie, elementele unui liste simplu înlănţuite, numere
întregi, de maxim 9 cifre. Să se scrie un program care să verifice dacă lista citită conţine numai
elemente distincte.
Exemplu:
mult.in
1 3 1 7 8

mult.out
NU

#include<fstream>
#include<iostream>

using namespace std;

ifstream f("mult.in");
struct nod
{
long inf;
nod*urm;
};
nod*prim=NULL, *ultim=NULL;

void adaugare_la_sfarsit(long x)
{
nod*aux;
aux=new nod;
aux->inf=x;
aux->urm=NULL;
if(prim==NULL)
prim=aux;
else
ultim->urm=aux;
aux =aux;
}

void citire()
{
long x;
while(fin>>x)
adaugare_la_sfarsit(x);
f.close();
Pagina 5 din 8
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
}

int verific()
{
for(nod*p=p->urm;p;p=p->urm)
for(nod*q=p->urm;q;q=q->urm)
if(p->inf==q->inf)
return 0;
return 1;
}

void main()
{
citire();
if(verif())
cout<<"DA";
else
cout<<"NU";
}

5. Metoda bulelor, sorteaza crescator o lista folosind metoda bulelor.


Se citesc din fişierul “mult.in”, de pe prima linie, elementele unui liste simplu înlănţuite, numere
întregi, de maxim 9 cifre. Să se scrie un program care să verifice dacă lista citită conţine numai
elemente distincte.
Exemplu:
sort.in
3 8 4 1 9 2 4

sort.out
1 2 3 4 4 8 9

#include<fstream>
#include<iostream>

using namespace std;

ifstream f("sort.in");
ifstream f("sort.out");
struct nod
{
long inf;
nod*urm;
};
nod*prim=NULL,*ultim=NULL;
Pagina 6 din 8
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E

void adaugare_la_sfarsit(long x)
{
nod*aux;
aux=new nod;
aux->inf=x;
aux->urm=NULL;
if(prim==NULL)
prim=aux;
else
ultim->urm=aux;
aux=aux;
}

void citire()
{
long x;
while(fin>>x)
adaugare_la_sfarsit(x);
f.close();
}
void sortez()
{
int ok;
do
{
ok=1;
for(nod*q=prim;q->urm;q=q->urm)
if(q->inf>q->urm->inf)
{
long aux=q->inf;
q->inf=q->urm->inf;
q->urm->inf=aux;
ok=0;
}
}
while (!ok);
}

void afisare()
{
for(nod*p=prim;p;p=p->urm)
f<<p->inf<<" ";
f.close();
Pagina 7 din 8
PROF. ING. EUGENU DRĂGOESCU–COLEGIUL NAŢIONAL “VICTOR BABEŞ”–2017-2018–CLASA a-X-a E
}

void main()
{
citire();
sorteaza();
afisare();
}

Pagina 8 din 8

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