Задачи со еднодимензионални низи IV год.

Програма со која се пресметува колку броеви од n  внесени во низа а се едноцифрени
# include <iostream>
using namespace std;
int main()
{
 int a[100];
 int n,i,b;
 cout<<"vnesi dolzina na nizata"<<endl;
 cin>>n;
 cout<<"vnesi gi elementite na nizata"<<endl;
 for (i=0; i<n; i++)
 cin>>a[i];
 b=0;
 for (i=0; i<n; i++)
 if (a[i] < 10) b++;
 cout<<"vo nizata ima "<<b<<" ednocifreni broevi";
 return 0;
}

Програма со која се пресметува збирoт на парни и збирот  на непарни броеви во низа а со n елементи.
# include <iostream>
using namespace std;
int main()
{
 int a[100];
 int n,i,zp,zn;
 cout<<"vnesi dolzina na nizata"<<endl;
 cin>>n;
 cout<<"vnesi gi elementite na nizata"<<endl;
 for (i=0; i<n; i++)
 cin>>a[i];
 zp=0;
 zn=0;
 for (i=0; i<n; i++)
 if (a[i]%2 == 0) zp+=a[i];
 else zn+=a[i];
 cout<<"zbirot na parnite broevi vo nizata e "<<zp<<endl;
 cout<<"zbirot na neparnite broevi vo nizata e "<<zn<<endl;
 return 0;
}

Напиши програма со која се внесува низа а со n елементи, a потоа  формирај нова низа во која ќе бидат сместени елементите помали од елементот што е на втора позиција во низата а.
#include <iostream>
using namespace std;
int main()
{
 int i,j,n;
 int a[100], b[100];
 cout<<"vnesi go n"<<endl;
 cin>>n;
 for(i=0;i<n;i++)
 cin>>a[i];
 j=0;
 for(i=0;i<n;i++)
 {
    if(a[i]<a[1])
    {
     b[j]=a[i];
     j++;
   }
 }
 for(i=0;i<j;i++)
 cout<<b[i]<<" ";
 return 0;
}
Програма со која се внесува низа а со n елементи, а потоа се формираат две нови низи - во едната се сместени парните елементи од низата а, во другата непарните елементи од низата а. Да се испечатат соодветните низи. За внесување на елементите на низата, формирање на новите низи и печатење на низите да се користат функции.

#include <iostream>
using namespace std;
void vnesi_niza (int n,int a[50])
{
 int i;
 for(i=0;i<n;i++)
  cin >> a[i];
}

void novi_nizi (int n,int a[50])
{
 int i,j=0,k=0,b[100],c[100];
 for(i=0;i<n;i++)
 {
 if(a[i]%2==0)
 {
   b[j]=a[i];
     j++;
 }
 else
 {
    c[k]=a[i];
    k++;
 }
 }
 cout<<"Niza so parni elementi e "<<endl;
 for(i=0;i<j;i++)
 cout<<b[i]<<" ";
 cout<<endl;
 cout<<"Niza so neparni elementi e "<<endl;
 for(i=0;i<k;i++)
 cout<<c[i]<<" ";
}
int main()
{
 int niza[50];
 int n;
 cout << "Vnesi go brojot na elementi na nizata"<<endl;
 cin>>n;
 cout << "Vnesi gi elementite na nizata: " << endl;
 vnesi_niza(n,niza);
 novi_nizi(n,niza);
return 0;
}

Програма со која се наоѓа најголем елемент во низа а со n елементи и неговиот индекс. За внесување на елементите на низата и одредување најголем елемент и негов индекс да се користат функции.

#include <iostream>
using namespace std;

void vnesi_niza(int n,int a[50])
{
int i;
for(i=0;i<n;i++)
cin >> a[i];
}

void najgolem(int n,int a[50])
{
int indeks=0,i,max;
max=a[0];
for(i=1;i<n;i++)
{
   if(a[i]>max)
   {
     maks=a[i];
     indeks=i;
   }
}
cout<<"Najgolem element e "<<max<<endl;
cout<<"Se naoga na pozicija "<<indeks<<endl;
}

int main()
{
int niza[50];
int n,s1;
cout << "Vnesi go brojot na elementi na nizata"<<endl;
cin>>n;
cout << "Vnesi gi elementite na nizata: " << endl;
vnesi_niza (n,niza);
najgolem (n,niza);
return 0;
}

Да се изврши циклично поместување на елементите на низата а за k места во десно 

#include<iostream>
using namespace std;
main()
{
int a[100], n, i, j, k, pom;
cout<<"Vnesete go brojot na elementi na nizata n=";
cin>>n;
cout<<"Vnesete go brojot na pomestuvanja k=";
cin>>k;
cout<<"Vnesete gi elementite na nizata:"<<endl; 
for(i=0; i<n; i++)
{
    cout<<"a["<<i<<"]=";
    cin >> a[i];
}

cout<<"Pocetnata niza e:"<<endl;
for(i=0; i<n-1; i++)
   cout<<a[i]<<",";
cout<<a[n-1]<<endl;

//pomestuvanjeto na elementite na nizata za k-mesta vo desno 
for(j=1; j<=k; j++)
{
   pom=a[n-1];                //vo promenlivata pom se zacuvuva posledniot
   for(i=n-1; i>=1; i--)    //so ovoj for - pomestuvanje na site elementi za edna pozicija vo desno
      a[i]=a[i-1];               //pretposledniot stavi go na mestoto na posledniot .....
   a[0]=pom;                  //na mestoto na prviot stavi ja vrednosta na pom, odnosno posledniot
}

cout<<"Pomestenata niza za "<<k<<" mesta vo desno e:"<<endl;
for(i=0;i<n-1;i++)
   cout<<a[i]<<",";
cout<<a[n-1]<<endl;

return 0;
}

Да се изврши конверзија на цел декаден број во бинарен 

#include<iostream>

using namespace std;
main()
{
int n,a[10000],i,vrednostN;
cout<<"Vnesete priroden broj n=";
cin>>n;
vrednostN=n;
i=1;
while(n!=0)
{
    a[i]=n%2;
    n=n/2;
    i++;
}
i--;
cout<<endl;
cout<<"Brojot "<<vrednostN<<" vo binaren broen sistem e:"<<endl<<endl;;
for(i;i>0;i--)
   cout<<a[i]<<" ";
cout<<endl<<endl; 
system("pause");
return 0;
}


Задачи за дома 

1.  Да се напише програма со која се печатат броевите од низа а со n елементи кои се двоцифрени и чија цифра на единици е 4.
2. Да се напише програма со која се печатат броевите од низа а со n елементи кои се едноцифрени и кои при делење со 5 имаат остаток 2.
3. Да се напише програма со која се брои и печати колку од броевите од низа а со n елементи се парни и едноцифрени, а колку се непарни и двоцифрени.

Реалирирај ги следниве програми !!!!

Да се сортира низата а со н елементи во растечки редослед, со наоѓање на најмалиот елемент

Да се провери дали има елеменит со вреност v во подредена низа a со n елементи со бинарно пребарување 

ОбјаснувањеБинарното пребаруваање се користи како најбрз метод на барање елемент со одредена вредност во некоја низа, при што низата мора да е подредена во неопаднувачки или нерастечки редослед. На пример, 1,2,5,5,9 или 7,4,2,2,1.

Методот се состои во следното:  Вредноста што се бара се споредува со средниот елемент во низата и ако таа е поголема од вредноста на елементот, барањето продолжува во половината на низата со поголеми вредности, инаку, барањето продолжува во половината на низата со помали вредности. Потоа, вредноста што се бара, се споредува со средниот елемент од соодветната половина на низата и, зависно од споредувањето, барањето продолжува во левата или десната четвртина од таа половина. Постапката продолжува до наоѓање на елемент со иста вредност, или до утврдување дека во низата нема елемент со таква вредност.  

#include<iostream>
using namespace std;
int main()
{
int a[100],n,i,v,levo,desno,sredina;
cout<<"vnesete go brojot na elementi na nizata n=";
cin>>n;
cout<<"Vnesete gi elementite na nizata vo rastecki redosled"<<endl;
for(i=1;i<=n;i++)
{
   cout<<"a["<<i<<"]=";
   cin>>a[i];
}
cout<<"Vnesete ja vrednosta na elementot sto se bara, v=";
cin>>v;

levo=1;
desno=n;
do
{
   sredina=(levo+desno)/2;
   {
      if(v>a[sredina])
         levo=sredina+1;
      else
         desno=sredina-1;
   }
}

while(v!=a[sredina]&&levo<=desno);
if(a[sredina]==v)
   cout<<"Element so takva vrednost e a["<<sredina<<"]"<<endl;
else
   cout<<"Nema element so takva vrednost"<<endl;
return 0;
}

No comments: