Sunteți pe pagina 1din 5

Laborator 1

Soluții
1. Interschimbul valorilor a două variabile a şi b.

start
citește a;
citește b;
aux = a;
a = b;
b = aux;
scrie a;
scrie b;
stop.

2. Rezolvarea ecuaţiei de gradul 2: ax2+bx+c=0.

start
citește a;
citește b;
citește c;
dacă (a != 0) atunci
        scrie "Ecuatia nu este de gradul II";
altfel
        delta = b * b - 4 * a * c;
        dacă (delta < 0 ) atunci
                scrie "Ecuația nu are rădăcini reale."
        altfel
                dacă (delta == 0) atunci
                        scrie "x1 = x2 = ", - b / (2 * a);
                altfel
                        scrie "x1 = ", (- b - sqrt(delta)) / (2 * a);
                        scrie "x2 = ", (- b + sqrt(delta)) / (2 * a);
stop.

3. Să se afişeze în ordine crescătoare valorile a trei variabile: a, b şi c.

start
citește a;
citește b;
citește c;
dacă (a < b și b < c) atunci
        scrie a, " ", b, " ", c;
dacă (a < c și c < b) atunci
        scrie a, " ", c, " ", b;
dacă (b < a și a < c) atunci
        scrie b, " ", a, " ", c;
dacă (b < c și c < a) atunci
        scrie b, " ", c, " ", a;
dacă (c < a și a < b) atunci
        scrie c, " ", a, " ", b;
dacă (c < b și b < a) atunci
        scrie c, " ", b, " ", a;
stop.

4. Să se calculeze şi să se afişeze suma: S= 1 + 1*2 + 1*2*3 + ... n!.

start
citește n;
p = 1;
s = 0;
pentru i de la 1 la n cu pasul 1
        p = p * i;
        s = s + p;
scrie s;
stop.

5. Să se calculeze şi să se afişeze suma cifrelor unui număr natural n.

start
citește n;
s = 0;
cât timp (n != 0)
        s = s + n % 10;
        n = n / 10;
scrie s;
stop.

6. Să se calculeze şi să se afişeze inversul unui număr natural n.

start
citește n;
inv = 0;
cât timp (n != 0)
        inv = inv * 10 + n % 10;
        n = n / 10;
scrie inv;
stop.
7. Să se afişeze dacă un număr natural dat n este prim.

start
citește n;
prim = 1;
pentru d de la 2 la (int)(n / 2) cu pasul 1
        dacă (n % d == 0) atunci
                prim = 0;
dacă (prim == 1) atunci
        scrie "Numărul ", n, " este prim.";
altfel
        scrie "Numărul ", n, " nu este prim.";
stop.

8. Să se afişeze primele n numere naturale prime.

start
citește n;
i = 0;
nr = 2;
cât timp (i < n)
        dacă ( Prim(nr) == 1) atunci
                scrie nr;
                i = i + 1;
        nr = nr + 1;
stop.

9. Să se descompună în factori primi un număr dat n.

start
citește n;
d = 2;
cât timp (n != 1)
        f = 0;
        cât timp (n % d == 0)
                f = f + 1;
                n = n / d;
        dacă (f != 0) atunci
                scrie d, " la puterea ", f;
        d = d + 1;
stop.

10. Să se calculeze valoarea minimă, respectiv maximă, dintr-o secvenţă de n numere


reale.
start
citește n;
citește nr;
max = nr;
min = nr;
pentru i de la 1 la n - 1 cu pasul 1
        citește nr;
        dacă (nr < min) atunci
                min = nr;
        dacă (nr > max) atunci
                max = nr;
scrie "min = ", min, " max = ", max;
stop.

11. Să se afişeze toate numerele naturale mai mici decât 1000 care se pot scrie în două
moduri diferite ca sumă de pătrate.

start
pentru i de la 1 la 1000 cu pasul 1
        nr = 0;
        pentru k de la 1 la i - 1 cu pasul 1
                dacă (sqrt(k) == (int)sqrt(k) și sqrt(i-k) == (int)sqrt(i-k)) atunci
                        nr ++;
        dacă (nr == 4) atunci
                scrie i;
stop.

12. Se dă o secvenţă de n numere întregi pozitive. Să se afişeze cele mai mari numere
de 2 cifre care nu se află în secvenţa respectivă.

start
citește n;
pentru i de la 10 la 99 cu pasul 1
        v[i] = 0;
pentru i de la 1 la n cu pasul 1
        citește nr;
        dacă (nr > 9 și nr < 100)
                v[nr] = 1;
i = 99;
cât timp (v[i] != 0 și i > 0)
        i = i - 1;
dacă (i > 9) atunci
        scrie i, " ";
i = i - 1;
cât timp (v[i] != 0 și i > 0)
        i = i - 1;
dacă (i > 9) atunci
        scrie i, " ";
stop.

13. Se dă o secvenţă de n numere întregi, ale căror valori sunt cuprinse în intervalul
[0,100]. Să se afişeze valorile care apar cel mai des. (se vor foloși vectori)

start
citește n;
pentru i de la 0 la 100 cu pasul 1
        v[i] = 0;
pentru i de la 1 la n cu pasul 1
        citește nr;
        v[nr] = v[nr] + 1;
pentru i de la 0 la 100 cu pasul 1
        dacă (v[i] > max) atunci
                max = v[i];
pentru i de la 0 la 100 cu pasul 1
        dacă (v[i] == max) atunci
                scrie i;
stop.

S-ar putea să vă placă și