Rezolvare BAC Informatica 2009 – Varianta 94 – Subiectul al III-lea problema 4

Mai jos puteti gasi rezolvarea problemei 4 de la subiectul III din varianta 94 pentru examenul de bacalaureat din anul 2009


#include <fstream.h>
ifstream f("numar.in");
void main() {
long n;
int aux, i, c1, c2, a[10], nr = 0;
f >> n;
cout << endl;
while (n / 10 && n % 10 < n / 10 % 10) {
nr++;
a[nr] = n % 10;
n = n / 10;
}
if (n < 10)
cout << "nu exista";
else {
nr++;
a[nr] = n % 10;
n = n / 10;
c1 = n % 10;
n = n / 10;
i = 1;
while (a[i] < c1)
i++;
c2 = i;
aux = c1;
c1 = a[c2];
a[c2] = aux;
n = n * 10 + c1;
for (i = 1; i <= nr; i++)
n = n * 10 + a[i];
cout << n;
}
}

Spor la lucru! Daca aveti intrebari nu ezitati sa le lasati in comentarii, va vom raspunde cat de repede putem 🙂

2 Replies to “Rezolvare BAC Informatica 2009 – Varianta 94 – Subiectul al III-lea problema 4”

  1. poate cineva sa explice codul? Daca mergi pe exemplu, adaugi pana la 6 in vector, dupa de ce mai faci de 2 ori n % 10? N-ar trebui sa iasa 259[restul de cifre] in loc de 257 dupa logica de aici?

    Reply

    1. Salut. Sigur. Dupa primul while vectorul ‘a’ o sa fie a = [1, 3, 4]. Ne oprim la 9 pentru ca a doua conditie din while (n % 10 < n / 10 % 10) este adevarata atata timp cat cifra curenta (n % 10) este mai mica decat urmatoarea cifra (n / 10 % 10). Cifra 9 nu respecta conditia asta pentru ca 9 > 6. Dupa acest while n = 257869 si a = [1, 3, 4]. Mergem pe else si adaugam ultima cifra din variabila n in a (in cazul acesta 9). Acum a = [1, 3, 4, 9], n = 25786. Salvam in c1 ultima cifra din n. Deci, c1 = 6, n = 2578. Parcurgem a pana cand gasim un element mai mare decat 6. Deci ne oprim cand i = 4, a[4] = 9, 9 > 6. In acest moment, punem 6 in loc de 9 in vector si punem in c1 cifra 9. Deci c1 = 9, a = [1, 3, 4, 6]. Adaugam c1 la n, n = 25789. In final scoatem element cu element din a si il bagam in n. Deci, n devine 257891346. Asta e solutia. Spor.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *