Cerința
Scrieți o funcție operand cu doi parametri care returnează poziția maximului dintr-un șir dat de numere întregi. Se presupune că elementele șirului sunt distincte și memorate începând cu poziția 1
. Parametrii funcției sunt: tabloul în care este memorat șirul și numărul de elemente ale acestuia.
Scrieți o funcție procedurală cu trei parametri care oferă poziția minimului dintr-un șir dat de numere întregi. Se presupune că elementele șirului sunt distincte și memorate începând cu poziția 1
. Parametrii funcției sunt: tabloul în care este memorat șirul, numărul de elemente ale acestuia precum și rezultatul.
Scrieți o funcție procedurală care interschimbă două valori întregi.
Scrieți o funcție procedurală care are trei parametri, în ordine: v
(tablou unidimensional cu elemente int), pozInit
(de tip int), pozFin
(de tip int), și care afișează în ordine descrescătoare a indicilor (separate prin spații) elementele secvenței delimitate de pozInit
și pozFin
, inclusiv. Se garantează că primul parametrul pozInit
se transmite funcției mai mic strict decât pozFin
. Se garantează că tabloul are cel puțin pozFin
elemente și că ambii indici se transmit funcției mai mari sau egali cu 1
.
Scrieți un program care, apelând util TOATE funcțiile de mai sus, preia dintr-un fișier dimensiunea (notată de noi mai departe n
) și elementele unui vector și le stochează în acesta începând cu poziția 1
. Programul va scrie într-un fișier, în ordine descrescătoate a indicilor, elementele cuprinse între valoarea minimă și valoarea maximă. Se garantează că elementele șirului se dau distincte.
Date de intrare
Programul citește din fișierul calcfunct.in
mai întâi un număr n
, iar apoi n
numere naturale, separate prin spații.
Date de ieșire
Programul va scrie în fișierul calcfunct.out
, pe un singur rând separate prin spații, elementele secvenței specificate, în ordinea cerută.
Restricții și precizări
1 ≤ n ≤ 100
- cele
n
numere citite vor fi distincte, naturale, și mai mici decât1.000.000.000
Exemplu
calcfunct.in
5 4 1 3 2 5
calcfunct.out
5 2 3 1
#include <bits/stdc++.h> using namespace std; ifstream cin("calcfunct.in"); ofstream cout("calcfunct.out"); int pmax(int a[], int n){ int maxi = 0, pmaxi = 1; for(int i = 1; i <= n; ++i) if(a[i] > maxi) maxi = a[i], pmaxi = i; return pmaxi; } void pmin(int a[], int n, int& pmini){ int pozz = 0; for(int i = 1; i <= n; ++i) if(a[i] < pmini) pmini = a[i], pozz = i; pmini = pozz; } void inter(int& pmini, int& pmaxi){ swap(pmini, pmaxi); } void solve(int a[], int a1, int b1){ for(int i = b1; i >= a1; --i) cout << a[i] << " "; } int main() { int n, a[101], pozmin, pozmax; cin >> n; for(int i = 1; i <= n; ++i) cin >> a[i]; pozmax = pmax(a, n); pozmin = 1000000000; pmin(a, n, pozmin); if(pozmin > pozmax) inter(pozmin, pozmax); solve(a, pozmin, pozmax); return 0; }