Rezolvare completă PbInfo #3205 calcfunct

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ât 1.000.000.000

Exemplu

calcfunct.in

5
4 1 3 2 5

calcfunct.out

5 2 3 1

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema calcfunct:

#include <fstream>

using namespace std;
int v[1002];
int n, p1, p2;

ifstream fin ("calcfunct.in");
ofstream fout("calcfunct.out");

int maxim(int v[], int n) {
    int r = v[1];
    int p = 1;
    for (int i=2;i<=n;i++) {
        if (v[i] > r) {
            r = v[i];
            p = i;
        }
    }
    return p;
}

void minim(int v[], int n, int &p) {
    int r = v[1];
    p = 1;
    for (int i=2;i<=n;i++) {
        if (v[i] < r) {
            r = v[i];
            p = i;
        }
    }
}

void schimba(int &a, int &b) {
    int aux = a;
    a = b;
    b = aux;
}

void afiseaza(int v[], int pozInit, int pozFin) {
    for (int i=pozFin;i>=pozInit;i--)
        fout<<v[i]<<" ";
    fout<<"\n";
}

int main () {

    fin>>n;
    for (int i=1;i<=n;i++)
        fin>>v[i];
    p1 = maxim(v, n);
    minim(v, n, p2);

    if (p1 > p2)
        schimba(p1, p2);

    afiseaza(v, p1, p2);

}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #3205 calcfunct

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3205 calcfunct de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!