Programarea Calculatoarelor, seria CC

Laborator 1

Soluții

  1. Interschimbul valorilor a două variabile a şi b.
  2. start
    citește a;
    citește b;
    aux = a;
    a = b;
    b = aux;
    scrie a;
    scrie b;
    stop.

  3. Rezolvarea ecuaţiei de gradul 2: ax2+bx+c=0.
  4. 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.

  5. Să se afişeze în ordine crescătoare valorile a trei variabile: a, b şi c.
  6. 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.

  7. Să se calculeze şi să se afişeze suma: S= 1 + 1*2 + 1*2*3 + ... n!.
  8. 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.

  9. Să se calculeze şi să se afişeze suma cifrelor unui număr natural n.
  10. start
    citește n;
    s = 0;
    cât timp (n != 0)
            s = s + n % 10;
            n = n / 10;
    scrie s;
    stop.

  11. Să se calculeze şi să se afişeze inversul unui număr natural n.
  12. start
    citește n;
    inv = 0;
    cât timp (n != 0)
            inv = inv * 10 + n % 10;
            n = n / 10;
    scrie inv;
    stop.

  13. Să se afişeze dacă un număr natural dat n este prim.
  14. 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.

  15. Să se afişeze primele n numere naturale prime.
  16. 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.

  17. Să se descompună în factori primi un număr dat n.
  18. 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.

  19. Să se calculeze valoarea minimă, respectiv maximă, dintr-o secvenţă de n numere reale.
  20. 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.

  21. 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.
  22. 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.

  23. 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ă.
  24. 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.

  25. 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)
  26. 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.