//Datoteka: n13.cpp
//
//Napisite program za delo s poljem elementov, 10 realnih stevil tipa double,
//in v glavnem programu napisite naslednje korake z uporabo funkcij:
//
// * vnos stevil v polje,
// * izpis polja,
// * urejanje elementov polja, padajoce,
// * izpis polja,
// * zamenjava elementov na sodih in lihih mestih,
// * izpis polja,
// * rotacija elementov za eno mesto v desno,
// * izpis polja.
//
//Funkcije imajo dva parametra: parameter za polje in parameter za velikost polja!
//Pri vseh nadaljnjih nalogah je prepovedana uporaba globalnih spremenljivk!
#include <iostream>
using namespace std;
//Funkcija za vpis vrednosti v polje
void vpis(double polje[], int velikost)
{
for(int i=0; i<velikost; i++)
{
cin >> polje[i];
}
return;
}
//Funkcija za zamenjavo elementov
void zamenjaj1(double& prvi, double& drugi)
{
double zacasno = prvi;
prvi = drugi;
drugi = zacasno;
return;
}
//Funkcija za rotacijo oz. pomik vrednosti za eno v desno stran
void rotacija(double polje[], int velikost)
{
double t = polje[velikost-1];
for(int i=velikost-1; i>=1; i--)
{
polje[i] = polje[i-1];
}
polje[0] = t;
return;
}
//Funkcija za urejanje vrednosti polja padajoce
void padajoce(double polje[], int velikost)
{
for(int i=0; i<velikost-1; i++)
{
if(polje[i]<polje[i+1])
{
zamenjaj1(polje[i],polje[i+1]);
i=-1;
}
}
return;
}
//Funkcija za zamenjavo lihih in sodih mest vrednosti
void liho_sodo(double polje[], int velikost)
{
for(int i=0; i<velikost; i+=2)
{
zamenjaj1(polje[i],polje[i+1]);
}
return;
}
//Funkcija za izpis polja
void izpis(double polje[],int velikost)
{
for (int i=0; i<velikost; i++)
{
cout << polje[i] << " ";
}
cout << endl;
return;
}
int main()
{
//Ustvarjanje polja velikosti 11 (0-10)
double polje[10];
cout << "Vpisi 10 stevil" << endl;
//Klic funkcije vpis(); za vpis vrednosti v polje
vpis(polje,10);
cout << "Vpisana stevila so: " << endl;
//Klic funkcije izpis(); za izpis vrednosti elementov polja
izpis(polje,10);
cout << "Urejeno padajoce: " << endl;
//Klic funkcije padajoce(); za urejanje vrednosti elementov polja padajoce
padajoce(polje,10);
//Klic funkcije izpis(); za izpis vrednosti elementov polja
izpis(polje,10);
cout << "Menjavanje elementov na lihih in sodih mestih: " << endl;
//Klic funkcije liho_sodo(); za zamenjavo elementov na sodih in lihih mestih
liho_sodo(polje,10);
//Klic funkcije izpis(); za izpis vrednosti elementov polja
izpis(polje,10);
cout << "Rotacija elementov za eno v desno: " <<endl;
//Klic funkcije rotacija(); za pomik elementov za ena mesto desno
rotacija(polje,10);
//Klic funkcije izpis(); za izpis vrednosti elementov polja
izpis(polje,10);
return 0;
}