Documente Academic
Documente Profesional
Documente Cultură
Verificând valoarea variabilei f decidem dacă în vectorul există cel puţin un element cu
proprietatea cerută (f=indicele acestuia) sau nici unul (f =-1).
//se interschimba valorile din vector aflate la distante egale fata de marni, a[i] cu a[n-1-i]
10. Să se mute la sfârşitul unui vector componentele sale nule, păstrându-se ordinea
acestora .
SE mut fiecare element nenul mai in pozitia ++j , unde j va retine pozitia in care deplasez
elemental nenul. La sfarsit completez cu 0 pn la n.
Exemplu:
1023024010
1 2 2 3 0 2 4 01 0
123024010
123224010
12324010
12323110
1232410000
j=0;
for(i=1;i<=n;i++)
if(a[i]) // daca elemental este diferit de 0 se muta
a[++j]=a[i];
for(i=j+1;i<=n;i++) a[i]=0; // completez cu 0 pn la n.
14. Să se insereze între oricare două componente alăturate media aritmetică a celorlalte n-2
componente.
for(i=1;i<=n;i++)
{
Cin>>a[i];
s+=a[i];
}
i=1;
do{
m=(s-a[i]-a[i+1])/(n-2);
for(j=n+1;j>=i+2;j--) a[j]=a[j-1];
a[i+1]=m;
i+=2; n++;
}while(i<n);
p=1;
for(i=1;i<=n;i++)
{
cin>>a[i]);
p*=a[i];
}
c=a[1];
for(i=2;i<=n;i++)
{
d=a[i];
while(c!=d)
if(c>d)
c-=d;
else
d-=c;
}
cout<<"\ncmmdc=\n"<<c;
cout<<”cmmmc=\n"<<p/c;
for(i=2;i<=n;i++)
for(j=1;j<=i-1;j++)
if(a[i]==a[j]) { ok=0; break; }
if(ok)
cout<<"\n este o multime in sens matematic\n";
else
cout<<"\n nu este o multime in sens matematic\n";
18. Să se determine cel mai mare număr negativ şi poziţiile pe care se află el în şirul dat.
max=-1<<15;
for(i=1;i<=n;i++)
if(a[i]<0 || a[i]>max) max=a[i];
cout<<"\ncel mai mare numar negativ este”<< max<< “ si apare in
pozitiile: ";
for(i=1;i<=n;i++)
if(a[i]==max) cout<<i<<’ ‘;
19. Să se verifice dacă cei doi vectori sunt mulţimi în sens matematic şi , în caz afirmativ,
să se calculeze intersecţia şi reuniunea lor.
for(i=2;i<=m;i++)
for(j=1;j<=i-1;j++)
if(a[i]==a[j])
{
Cout<<"A nu este multime in sens matematic\n";
exit(0);
}
for(i=2;i<=n;i++)
for(j=1;j<=i-1;j++)
if(b[i]==b[j])
{
cout<<"B nu este multime in sens matematic\n";
exit(0); }
cout<<"\nA si B sunt multimi in sens matematic\n";
t=m; //numarul elementelor din reuniune
k=0; //numarul elementelor din intersectie
for(i=1;i<=n;i++)
{
ok=1;
for(j=1;j<=m;j++)
if(b[i]==a[j]) { ok=0; break; }
if(ok)
a[++t]=b[i]; //se adauga la reuniune
else
c[++k]=b[i]; //se adauga la intersectie
}
cout<<"\n Reuniunea este:\n";
for(i=1;i<=t;i++) cout<<a[i]<<” ”;
cout<<"\n Intersectia este:\n");
for(i=1;i<=k;i++) cout<<c[i];
20. Să se stabilească dacă o valoare dată y se află printre componentele unui vector de
numere întregi şi, în caz afirmativ, să se tipărească toate poziţiile în care apare printr-o
singură parcurgere a vectorului.
for(i=1;i<=n;i++)
if(a[i]==y) p[++k]=i;
if(!k)
cout<<y<<” nu apare in vector\n";
else
{
cout<<y<” apare in vector in pozitiile: \n";
for(i=1;i<=k;i++) cout<<p[i]<<” ”;
}
21. Să se înlocuiască fiecare element cu media aritmetică a celorlalte n-1
elemente.
for(i=1;i<=n;i++)
{
Cin>>a[i];
s+=a[i];
}
for(i=1;i<=n;i++) a[i]=(s-a[i])/(n-1);
cout<<”\n\t Vectorul obtinut este:\n";
22. Să se determine elementul maxim din şir şi toate poziţiile în care acesta apare printr-o singură
parcurgere a şirului.
max=a[1]; p[1]=1; k=1;
for(i=2;i<=n;i++)
if(max==a[i]) p[++k]=i;
else
if(max<a[i]) { max=a[i]; p[1]=i; k=1; }
cout<<"\nmaximul este “<<max<< “ si apare in pozitiile:\n";
for(i=1;i<=k;i++) cout<<p[i]<<” “;
23. Să se determine printr-o singură parcurgere a sa cea mai lungă secvenţă de elemente consecutive
egale. Se va preciza lungimea şi poziţia de început a primei astfel de secvenţe fără a folosi
memorie suplimentară.
a[n+1]=a[n]+1;
poz=pmax=1; lung=lmax=1;
for(i=2;i<=n+1;i++)
if(a[i]==a[i-1]) lung++;
else
{
if(lung>lmax) { lmax=lung; pmax=poz; }
poz=i; lung=1;
}
cout<<"\n\t cea mai lunga secventa incepe in pozitia “<<pmax<<” si
este:\n";
for(i=pmax;i<=pmax+lmax-1;i++) cout<<a[i]<<” ”;
24. Să se scrie un program care determină ce element se află pe poziţia k dată în şirul ordonat,
fără a face efectiv ordonarea şi fără a folosi memorie suplimentară. (0<=k<=n-1).
//Pe pozitia k in vectorul ordonat se va gasi acel element care are
//exact k-1 elemente mai mici decat el.
cin>>k;
for(i=1;i<=n;i++)
{
nr=0;
for(j=1;j<=n;j++)
if(a[j]<a[i]) nr++;
if(nr==k-1;
)
{
cout<<"\nin pozitia “<< “ se gaseste elementul “<<;
break;
}
25. Să se rearanjeze elementele lui x astfel încât toate numerele mai mici decât a
să fie înaintea tuturor numerelor mai mari sau egale cu a, fără a ordona efectiv
şirul.
Cin>>a;
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(x[i]>=a && x[j]<a)
{
aux=x[i]; x[i]=x[j]; x[j]=aux;
break;
}
cout<<"\n\t Vectorul obtinut este:\n";
for(i=1;i<=n;i++) cout<<x[i]<<” ”;
26. Săse elimine din şir toate elementele mai mici decât a fără a folosi memorie
suplimentară.
Cin>>a;
for(i=1;i<=n;i++)
if(x[i]>=a) x[++k]=x[i];
n=k;
cout<<"\n\t Vectorul obtinut este:\n";
for(i=1;i<=n;i++) cout<<x[i]<<” ”;
27. Să se ordoneze vectorul crescător după distanţa lor faţă de numărul a.
Cin>>a;
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(x[i]-a>x[j]-a)
{
aux=x[i]; x[i]=x[j]; x[j]=aux;
}
cout<<"\n\t Vectorul obtinut este:\n";
for(i=1;i<=n;i++) cout<<x[i]<<” ”;
28. Săse determine cea mai lungă secvenţă de elemente consecutive din şir cu
proprietatea că doi vecini au semne diferite.
a[n+1]=a[n];
poz=1; lung=1; pmax=1; lmax=1;
for(i=2;i<=n+1;i++)
if(a[i]*a[i-1]<0)
lung++;
else
{
if(lung>lmax) { lmax=lung; pmax=poz; }
poz=i; lung=1;
}
if(lmax>1)
{
cout<<"\n cea mai lunga secvnta are “<<lmax<<” elemente si
este:\n";
for(i=pmax;i<=pmax+lmax-1;i++) cout<<a[i]<<” ”;
29. La
o adunare a oamenilor de afaceri s-a propus înfiinţarea de către un grup de
investitori a unei societăţi comerciale cu un capital de pornire c, dat.
Cunoscând suma de care dispune fiecare din cei n oameni de afaceri, să se
aleagă acele persoane care totalizează suficient capital pentru a putea înfiinţa
societatea şi în acelaşi timp să formeze un grup cât mai restrâns (pentru ca
posibilităţile de a interveni neînţelegeri între ei să fie cât mai reduse).
//Pentru a forma un grup cat mai redus, sortam oamenii de
//afaceri in ordinea descrescatoare a sumelor detinute si
ii //alege in aceasta ordine pana cand se obtine capitalul
//necesar.