Informatică, întrebare adresată de fly9, 8 ani în urmă

Am nevoie de algoritm si explicatie

Anexe:

Răspunsuri la întrebare

Răspuns de ElenaSF
2

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

int main() {

ifstream f("bac.txt");

int a, varf = 0, varf_precedent=-1;

while (f >> a)

{

 if ((a >= varf) && (varf_precedent != a))

 {

  varf = a;

  cout << varf<<" ";

 }

 if (a < varf)

  varf_precedent = varf;

}

}

Explicație:

Algoritmul citeste pe rand elementele din fisier;

Verifica daca numarul numarul citit este mai mare decat toate numerele anterioare anterioare daca da, acesta este considerat varf si se afiseaza;

Daca un numar este considerat varf si cel de pe pozitia urmatoare este egal cu el, atunci si numarul de pe pozitia urmatoare este varf;

Primul if compara numarul citit din fisier cu varful anterior, daca a>varf, atunci a este la randul lui varf; cea de-a doua conditie varf_precedent!=a asigura ca nu se va afisa a in caz de este egal cu varful, adica, in exemplu avem 10 10 10 8 10 10, conditia asigura ca ultimii 2 de 10 nu vor fi considerati varf;

al doilea if asigura ca varful precedent nu va lua valoarea varfului in cazul unui sir de varfuri, pana cand sirul nu se termina, adica avem secventa 10 10 10 8, toti cei 3 de 10 trebuie afisati, deci varf_precedent nu va lua valoarea 10 pana cand nu se ajunge la 8, altfel nu se va intra in primul if si din cei 3 10 se va afisa doar unul;

Nu prea ma pricep la explicatii dar sper ca te ajuta.


fly9: multumesc muult!
Alte întrebări interesante