Tablouri unidimensionale - Vectori



Problemă rezolvată


Se consideră un vector v cu elemente numere întregi de cel mult patru cifre fiecare, cu lungimea n. Elementele vectorului sunt sortate crescător. Scrieţi un program care afişează poziţia pe care ar trebui inserată valoarea x (diferită de oricare valoare din tabloul v) în vectorul v, astfel încât, vectorul să rămână sortat crescător. Se afişează şi vectorul final. Exemplu: n=6, v={12,21,33,45,47,56}, x=46, se afişează:
5
12 21 33 45 46 47 56.

#include<iostream>
using namespace std;
int main()
{
    
int v[100],n,i,s,d,m,x;
    
cout<<"n=";cin>>n;
    
for(i=1;i<=n;i++)
    
{
        
cout<<"v["<<i<<"]=";
        
cin>>v[i];
    
}
    
cout<<"Vectorul initial:";
    
for(i=1;i<=n;i++)
        
cout<<v[i]<<" ";
    
cout<<endl;
    
cout<<"x=";cin>>x;
    
cout<<endl;
    
s=1;d=n;
    
//cautam pozitia
    
while(s<=d)
    
{
        
m=(s+d)/2;
        
if(x<v[m])
            
d=m-1;
        
else
            
s=m+1;
    
}
    
cout<<"Elementul trebuie ";
    
cout<<"sa-l introducem in pozitia ";
    
cout<<s<<" .";
    
cout<<endl;
    
//inseram elementul
    
for(i=n+1;i>s;i--)
        
v[i]=v[i-1];
    
v[s]=x;
    
//afisam vectorul final
    
cout<<"Vectorul dupa inserarea ";
    
cout<<"elementului:";
    
for(i=1;i<=n+1;i++)
        
cout<<v[i]<<" ";
}