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

1. Програма со која се внесуваат елементите на една еднодимензионална низа од цели броеви и потоа истата се печати.

#include <iostream>
using namespace std;
int main()
{
    int a[50];
    int n,i;
    //sekogas, prvo mora da se vnese brojot na elementi na nizata
    cout << "Vnesi go brojot na elementi na nizata"<<endl;

    cout<<"n="; cin>>n;
    //elementite na nizata se vnesuvaat so naredbata for
    cout << "Vnesete gi elementite na nizata: " << endl;
    for(i=0;i<n;i++)
    {
       cout<<"a["<<i<<"]=";
       cin >> a[i];
    }
    //za pecatenje na nizata povtorno se koristi naredbata for
    cout<<"Ja vnesovte nizata: [";
    for(i=0;i<n;i++)
       cout<<a[i]<<", ";
    cout << "]"<<endl;
getchar();
return 0;
}

2. Програма со која се одредува бројот на промени на знакот (од + во – и од – во +) на елементите во низа со цели броеви. 

#include<iostream>
using namespace std;
int  main()
{
      int a [100]; 
      int n,i,promeni;
      cout<< "Vnesete go brojot na elementi na nizata n=";
      cin>>n;
      cout<<"Vnesete gi elementite na nizata:"<<endl;
      for(i=0; i<n; i++)
      {
          cout<<"a["<<i<<"]=";
          cin>>a[i];
      }
   promeni=0; //brojot na promeni ima pocetna vrednost nula
    
   for(i=1;i<n;i++)
     if((a[i-1]<0 && a[i]>0) || (a[i-1]>0 && a[i]<0))
         promeni++;
  cout<<"Vo nizata ima "<<promeni<<" promeni na znacite."<<endl; 
system("pause");
return 0;
}  

3. Програма со која се пресметува збирот на елементите на две еднодимензионални низи 

#include <iostream>
using namespace std;
int main()
{
    int a[50], b[50], c[50];
    int n,i;
    cout << "Vnesi go brojot na elementi na nizite"<<endl;
    cout<<"n="; cin>>n;
    cout << "Vnesete gi elementite na prvata niza: " << endl;
    for(i=0;i<n;i++)
    {
       cout<<"a["<<i<<"]=";
       cin >> a[i];
    }
      cout << "Vnesete gi elementite na vtorata niza: " << endl;
    for(i=0;i<n;i++)
    {
       cout<<"b["<<i<<"]=";
       cin >> b[i];
    }
     //sobiranje na elementite na nizite
    for(i=0;i<n;i++)
       c[i]=a[i]+b[i];

    //pecatenje na zbirnata niza c
    cout<<"Zbirnata niza c[] gi ima slednite elementi: [";
    for(i=0;i<n;i++)
       cout<<c[i]<<", ";
    cout << "]"<<endl;
return 0;
}


4. Програма со која се внесуваат елементите на една низа и потоа се креираат две нови низи – првата ги содржи парните броеви, а втората непарните броеви.

#include <iostream>
using namespace std;
int main()
{
    int a[100],b[100],c[100];
    int i,p,q,n,k;
    p=0; //p e promenliva za indeksot na nizata so parni broevi
    q=0; //q e promenliva za indeksot na nizata so parni broevi

    //prvo, se vnesuva brojot na elementi na nizite
    cout << "Vnesi go brojot na elementi na nizata"<<endl;
    cout<<"n="; cin>>n;

    //vnesuvanje na elementite nizata
    cout << "Vnesete gi elementite na nizata: " << endl;
    for(i=0;i<n;i++)
    {
       cout<<"a["<<i<<"]=";
       cin >> a[i];
    }

     //kreiranje na dve novi nizi so parni, odnosno neparni broevi
    for(i=0;i<n;i++)
    {
       if(a[i]%2==0)
       {
           b[p]=a[i];
           p++;
       }
       else
       {
           c[q]=a[i];
           q++;
       }
    }  

    //pecatenje na nizata so parni broevi
    cout<<"Ima "<<p<<" parni elementi, i toa:"<<endl;
    for(k=0;k<p;k++)
       cout<<b[k]<<",";
    cout<<endl;     

    //pecatenje na nizata so neparni broevi
    cout<<"Ima "<<q<<" neparni elementi, i toa:"<<endl;
    for(k=0;k<q;k++)
       cout<<c[k]<<",";
    cout<<endl;       
getchar();
return 0;
}

5. Да се најде збирот и производот на елементите на низата броеви a.

#include<iostream>
using namespace std;
int main()
{
int a[50],i,n,zbir,proizvod;
cout<<"Vnesete go brojot na elementi na nizata n=";
cin>>n;
cout<<"Vnesete gi elementite na nizata:"<<endl;
for(i=0;i<n;i++)
{
    cout<<"a["<<i<<"]=";
    cin >> a[i];
}
zbir=0;
proizvod=1;
for(i=0;i<n;i++)
{
    zbir=zbir+a[i];
    proizvod=proizvod*a[i];
}
cout<<"Zbirot na elementite na nizata e: "<<zbir<<endl;
cout<<"Proizvodot na elementite na nizata e: "<<proizvod<<endl;
system("pause");

return 0;
}

6. За низата броеви [ai]n, да се пресмета посебно збирот на позитивните и посебно збирот на негативните елементи.

#include<iostream>
using namespace std;
int main()
{
int a[50],i,n,zbirpozitivni,zbirnegativni;
cout<<"Vnesete go brojot na elementi na nizata n=";
cin>>n;
cout<<"Vnesete gi elementite na nizata:"<<endl;
for(i=0;i<n;i++)
{
    cout<<"a["<<i<<"]=";
    cin >> a[i];
}
zbirpozitivni=0;
zbirnegativni=0;
for(i=0;i<n;i++)
{
    if(a[i]>0)
       zbirpozitivni=zbirpozitivni+a[i];    //zbirpozitivni+=a[i]
    else
       zbirnegativni=zbirnegativni+a[i];   //zbirnegativni+=a[i]
}
cout<<"Zbirot na pozitivnite elementi na nizata iznesuva: "<<zbirpozitivni<<endl;
cout<<"Zbirot na negativnite elementi na nizata iznesuva: "<<zbirnegativni<<endl;
system("pause");
return 0;
}

7. Да се пресмета просечниот успех на ученик

#include<iostream>
using namespace std;
int main()
{
int i,n;
float ocenki[100],zbir,prosek;
cout<<"Kolku predmeti ucite?"<<"\n"; //"\n" e isto kako endl - nov red 
cin>>n;
cout<<"Vnesete gi ocenkite:"<<endl;
for(i=0;i<n;i++)
{            
    cout<<"ocenki["<<i<<"]=";
    cin >> ocenki[i];
}
zbir=0;

for(i=0;i<n;i++)
    zbir=zbir+ocenki[i];  

prosek=zbir/n;
cout<<"Prosekot na ucenikot iznesuva:"<<prosek<<endl;

system("pause");
return 0;
}

8. Да се пресмета просечниот успех на ученик и врз основа на просекот текстуално да се прикаже неговиот успех (одличен, мн.добар, добар, доволен или недоволен).

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int i,n;
float ocenki[100],zbir,prosek,zaokruzen_prosek;

cout<<"Kolku predmeti ucite?"<<"\n"; //"\n" e isto kako endl - nov red 
cin>>n;
cout<<"Vnesete gi ocenkite:"<<endl;
for(i=0;i<n;i++)
{            
    cout<<"ocenki["<<i<<"]=";
    cin >> ocenki[i];
}
zbir=0;

for(i=0;i<n;i++)
    zbir=zbir+ocenki[i];   

prosek=zbir/n;
cout<<"Prosekot na ucenikot iznesuva: "<<prosek<<endl;
zaokruzen_prosek=roundf(prosek); 
//funkcijata roundf go zaokruzuva prosekot na cel broj, 
//no,tipot na podatokot e float
//Zatoa, vo naredbata switch toj se pretvora vo int (switch bara tip na podatok int)
cout<<"Uspehot na ucenikot e: ";
switch(static_cast<int>(zaokruzen_prosek))
{
   case 1: cout<<"Nedovolen"<<endl;break;
   case 2: cout<<"Dovolen"<<endl;break;
   case 3: cout<<"Dobar"<<endl;break;
   case 4: cout<<"Mn.dobar"<<endl;break;
   case 5: cout<<"Odlicen"<<endl;break;
   default:cout<<"Greska. Prosek nadvor od granicite"<<endl;
}
system("pause");
return 0;
}

9. Да се изврши циклично поместување на елементите на низата броеви [ai]n за к-места во десно.

#include<iostream>
using namespace std;
int 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;

system("pause");
return 0;
}


10. Во низата броеви [ai]n да се најде елементот со најмала вредност и неговиот реден број.

#include<iostream>
using namespace std;
int main()
{
int a[50];
int n,i,redenbroj,najmal;
cout<<"Vnesete go brojot na elementi na nizata n=";
cin>>n;
cout<<"Vnesete gi elementite na nizata:"<<endl;
for(i=0; i<n; i++)
{
    cout<<"a["<<i<<"]=";
    cin >> a[i];
}
najmal=a[0];
redenbroj=0;
for(i=1; i<n; i++)
{
   if(najmal>a[i])
   {
      najmal=a[i];
      redenbroj=i;
   }
}
cout<<"Najmal e elementot so reden broj "<<redenbroj<<" so vrednost "<<najmal<<endl;
system("pause");
return 0;
}


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

//p-29 N-1D Cel dekaden broj vo binaren
#include<iostream>
using namespace std;
int 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;
}

12. Во дадена низа да се најдат трите најголеми елементи 

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

void three_largest(int arr[], int arr_size)
  {
   int i, first, second, third;
      if (arr_size < 3)
    { cout << "Invalid Input";    }
      third = first = second = INT_MIN;
    for (i = 0; i < arr_size ; i ++)
    {
        if (arr[i] > first)
        {
            third = second;
            second = first;
            first = arr[i];
        }
         else if (arr[i] > second)
        {
            third = second;
            second = arr[i];
        }
          else if (arr[i] > third)
            third = arr[i];
    }
  
      cout << "\nThree largest elements are: " <<first <<", "<< second <<", "<< third;
}
int main()
{
   int nums[] = {7, 12, 9, 15, 19, 32, 56, 70};
   int n = sizeof(nums)/sizeof(nums[0]);
    cout << "Original array: ";
    for (int i=0; i < n; i++) 
    cout << nums[i] <<" ";
   three_largest(nums, n);
    return 0;
}

13. Да се генерира паскалов триаголник од n ред 
#include<iostream>
using namespace std;

int main()
{
int i,j,n;
int a[100],b[100];
cout<<"Vnesete go stepenot za kreiranje na Paskaloviot triagolnik"<<endl;
cout<<"n=";
cin>>n;
cout<<"Paskalov triagolnik do n="<<n<<endl;
a[0]=1;
cout<<a[0]<<endl;
b[0]=1;
b[1]=1;
cout<<b[0]<<"\t"<<b[1]<<endl;
for(i=2;i<=n;i++)
{
   a[0]=1;
   for(j=1;j<=(i-1);j++)
      a[j]=b[j-1]+b[j];
   a[i]=1;
   for(j=0;j<=i;j++)
   {
      cout<<a[j]<<"\t";
      b[j]=a[j];
   }
  cout<<endl;
}
return 0;
}

14. 
Да се одредат различните елементи во низата броеви [ai]n.
#include<iostream>
using namespace std;
int main()
{
int a[100],n,i,j,brojrazlicni;
cout<<"Vnesete go brojot na elementi na nizata n=";
cin>>n;
cout<<"Vnesete gi elementite na nizata:"<<endl;
for(i=0;i<n;i++)
{
    cout<<"a["<<i<<"]=";
    cin >> a[i];
}
cout<<"Razlicni elementi na vnesenata niza se: ";
brojrazlicni=0;

for(i=0;i<n;i++)
{
   j=i-1;
   while((j>=0)&&(a[j]!=a[i]))
      j--;
   if(j==-1)
   {
      cout<<a[i]<<",";
      brojrazlicni++;
   }
}
cout<<endl;
cout<<"Ima "<<brojrazlicni<<" razlicni elementi vo nizata"<<endl;
return 0;
}

15. Да се најде најмалиот број банкноти, со кои може да се исплати некоја сума пари.

Објаснување: Постојат банкноти со вредности 1,2,5,10,50,100 и 5000 денари. За да се исплати сумата со најмал број банкноти, треба да се употребат банкноти со поголеми вредности. Затоа, прво се проверува со колку банкноти од 5000 денари може да се исплати дел од сумата, со колку банкноти од 1000 денари може да се исплати дел од остатокот итн.

#include<iostream> using namespace std; int main() { int suma,v[10],i,nbb,bb; cout<<"vnesete ja sumata: "<<endl; cin>>suma; v[0]=1; v[1]=2; v[2]=5; v[3]=10; i=4; do { v[i]=10*v[i-2]; v[i+1]=10*v[i-1]; i=i+2; } while(i<=8); //cout<<v[4]<<","<<v[5]<<","<<v[6]<<","<<v[7]<<","<<v[8]<<endl; cout<<suma<<"="; nbb=0; for(i=8;i>=0;i--) { bb=suma/v[i]; nbb=nbb+bb; suma=suma%v[i]; if(bb!=0) { cout<<bb<<"*"<<v[i]; if(suma!=0) cout<<"+"; else cout<<" "<<endl; } } cout<<"Najmal broj banknoti za dadenata suma e "<<nbb<<endl; return 0; }

ПРОГРАМИ СО СОРТИРАЊЕ НА ЕДНОДИМЕНЗИОНАЛНИ НИЗИ   

C++ Program to Implement Sorted Array (tutorialspoint.com)


1. Да се сортира низата [ai]n во растечки редослед, со наоѓање на најмалиот елемент.


#include<iostream>
using namespace std;
int main()
{
int a[50];
int n,i,j,pom;
cout << "Vnesete go brojot na elementi na nizata, n="<<endl;
cin>>n;
cout << "Vnesete gi elementite na nizata: " << endl;
for(i=0;i<n;i++)
{
   cout<<"a["<<i<<"]=";
   cin >> a[i];
}
for(i=0;i<n;i++)
{
   for(j=i+1;j<n;j++)
   {
      if(a[j]<a[i])
      {
         pom=a[i];
         a[i]=a[j];
         a[j]=pom;
      }
   }
}
cout<<"Vnesenata niza SORTIRANA RASTECKI e:"<<endl;
for(i=0;i<n;i++)
   cout<<a[i]<<",";
cout<<endl;
cout<<"Najmaliot element vo nizata e a[0]="<<a[0]<<endl;
system("pause");
return 0;
}


2. Да се сортира низата [ai]n во опаѓачки редослед, со наоѓање на најголемиот елемент.

#include<iostream>
using namespace std;
int main()
{
int a[50];
int n,i,j,pom;
cout << "Vnesete go brojot na elementi na nizata, n="<<endl;
cin>>n;
cout << "Vnesete gi elementite na nizata: " << endl;
for(i=0;i<n;i++)
{
   cout<<"a["<<i<<"]=";
   cin >> a[i];
}
for(i=0;i<n;i++)
{
   for(j=i+1;j<n;j++)
   {
      if(a[j]>a[i])
      {
         pom=a[i];
         a[i]=a[j];
         a[j]=pom;
      }
   }
}
cout<<"Vnesenata niza SORTIRANA OPAGJACKI e:"<<endl;
for(i=0;i<n;i++)
   cout<<a[i]<<",";
cout<<endl;
cout<<"Najgolemiot element vo nizata e a[0]="<<a[0]<<endl;
system("pause");
return 0;
}

3. Да се сортира низата [ai]n во растечки редослед, со истовремено наоѓање и на најмалиот и на најголемиот елемент.

Постапка: Најмалиот елемент од а1 до аn го доведуваме на прво место, а најголемиот на n-то место, најмалиот елемент од а2 до аn-1 го доведуваме на второ место, а најголемиот на (n-1)-во место итн.

//p-35 N-1D Sortiranje so naogjanje na max i min
#include<iostream>
using namespace std;
int main()
{
int a[100];
int n,i,j,pom;
cout << "Vnesete go brojot na elementi na nizata, n="<<endl;
cin>>n;
cout << "Vnesete gi elementite na nizata: " << endl;
for(i=0;i<n;i++)
{
   cout<<"a["<<i<<"]=";
   cin >> a[i];
}

for(i=0;i<n/2;i++)
{
   for(j=i; j<=n-i-1;j++)
   {
      if(a[j]<a[i])
      {
         pom=a[j];
         a[j]=a[i];
         a[i]=pom;
      }
      if(a[j]>a[n-i-1])
      {
         pom=a[j];
         a[j]=a[n-i-1];
         a[n-i-1]=pom;
      }
   }
}
cout<<"Podredenata niza e:"<<endl;
for(i=0;i<n;i++)
   cout<<a[i]<<",";
cout<<endl;    
cout<<"Najmaliot element vo nizata e a[0]="<<a[0]<<endl;
cout<<"Najgolemiot element vo nizata e a["<<n-1<<"]="<<a[n-1]<<endl;
system("pause");
return 0;
}


4. Да се најде дали има елемент со вредност v во подредената низа [ai]n со бинарно барање.

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

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

//p-31 N-1D Binarno baranje
#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;
   
system("pause");
return 0;

}


За дома

1. Резервирај меморија за две целобројни низи од 10 елементи. Внеси ја првата низа. Формирај ја втората низа така што секој елемент во втората низа е за еден поголем од елементот од првата низа кој е на истата позиција.

2. Програма која ги одредува елементите во низа кои се корени на друг елемент во низата .

3. Напиши програма со која се пребројуваат и печатат едноцифрените и парни броеви и двоцифрените и непарни броеви во низа а со n елементи

4. Напиши код во C++ со кој првиот и третиот елемент од низата a[5]={1,7,5,3,9} ќе ги заменат местата, а останатите елементи од низата ќе ја зголемат својата вредност за 3. Да се отпечати новoдобиената низа

5. Да се прикажат сите елементи во низа со n елементи чиј збир на цифри е поголем од даден број x

6. Корисникот внесува елементи, се додека аритметичката средина е  <=10 или додека бројот на внесени елементи е 10. Колку броеви си внесол. Подреди ја низата .

7.Внеси низа X од n елементии и најди ги соседните членови на елементот  со најголема вредност во низата

8.Внеси цел број x.  Ако x е позитивен број, внеси x  елементи на низа и одреди колку од нив се деливи со 3. Ако  x  не е позитивен, креирај произволна низа од 6 елементи и пресметај просек

9. Да се напише програма со која се печатат броевите од низа а со n елементи кои се двоцифрени и чија цифра на единици е 4

10. Внеси еднодимензионална низа со n елементи. Пресметувај го  збирот  на елементите се додека истиот е помал од 444.

11.  Внеси еднодимензионална низа со n елементи. Пресметај го збирот и производот на елементите од низата чиј индекс е делив со 3.

12.  Внеси две низи A и B од по n елементи. Формирај низа C од n елементи согласно изразот
13. Дадена е еднодимензионална низа со n елементи. Да се сортира низата во растечки редослед. 

14. Внеси еднодимензионална низа со n елементи.  Прикажи ги соседните елементи чиј збир е парен број. 
Пример

15. Внеси еднодимензионална низа со n елементи.Пресметај аритметичка средина и прикажи ја сумата на елементите со непарен индекс, поголеми од аритметичката средина.  
Пример

16. Напиши програма во C++ која пресметува колку броеви од n внесени во низа се трицифрени броеви. Елементите на низата ги внесува корисникот преку тастатура

17. Напиши програма со која се пресметува збир на броевите од низа а со n елементи чиј индекс е делив со 4. 

18.  Во низата броеви[ai]n да се најде елементот со најмала вредност и неговиот реден број

19. Пресметај ја сумата (збирот) на позитивните елементи на низа со n елементи деливи со 4.

20. Внеси еднодимензионална низа со n елементи. Пресметај ја аритметичката средина и прикажи ги елементите од низата кои се поголеми од аритметичката средина .

21  Внеси еднодимензионална низа со n елементи. Пресметај/преброј колку од нив се  парни , а колку непарни.

22. Maja се подготвува за трка на 100 метри.  Напиши програма со која ќе се испише времето на најмногу 100 тренинзи ( бројот на тренинзи го одредува корисникот). Програмата треба да го пресмета просечното време, најдоброто време и после колку обиди е постигнато најдоброто време.


РЕШЕНИ ЗАДАЧИ 

No comments: