Pagina informaticii

Teste de informatică pentru liceu, articole C#, C/C++, PHP

Structura while-do – lista de probleme

1. Fie algoritmul:

integer  n, c
read  n
c ← 0
while (n <> 0) do
            if  (n mod 2 = 1) then
                        c ← c + 1
            endif
            n ← n div 2
endwhile
write  c

a) Ce va afişa algoritmul pentru n = 10 ?
b) Scrieţi două valori pentru n astfel încât valoarea afişată de c să fie 1.
c) Scrieţi un enunţ pentru care rezolvarea este algoritmul de mai sus.

2. Scrieţi un algoritm care citeşte un număr natural n şi determină în variabila p şi afişează oglinditul lui n, adică numărul obţinut din scrierea inversă a cifrelor lui n. De exemplu, pentru n = 4265, se va afişa p = 5624.

3. Scrieţi un algoritm care citeşte un număr natural n şi afişează mesajul „DA” dacă cifrele lui n sunt în ordine strict crescătoare (de la stânga la dreapta) sau mesajul „NU” în caz contrar. De exemplu, pentru n = 2467 se va afişa „DA”, iar pentru n = 2396 se va afişa „NU”.

4. Scrieţi un algoritm care citeşte două numere naturale nenule x şi y şi determină cel mai mare divizor comun al celor două numere. De exemplu, dacă x = 15 şi y = 24 se va afişa 3.

5. Scrieţi un algoritm care citeşte un număr natural n şi o cifră k. Să se verifice dacă cifra k apare sau nu printre cifrele lui n. Algoritmul va afişa mesajele „DA” sau „NU”. De exemplu, pentru n = 6543254 şi k = 3, se va afişa „DA”.

6. Scrieţi un algoritm care citeşte un număr natural nenul n şi determină suma:
S = 1 + 1∙2 + 1∙2∙3 + 1∙2∙3∙4 + ... + 1∙2∙3∙...∙n

7. Se citeşte un număr natural n. Să se calculeze suma pătratelor cifrelor sale. De exemplu, pentru n=125, S=12+22+52 = 30

8. Se citeşte un număr natural n. Să se determine cel mai mare număr natural p cu proprietatea că 2p <=n. De exemplu, pentru n=35 avem k=5 pentru că 25<=35, iar 26>35. Pentru n=16, obţinem k=4 pentru că 24<=16.

9. Se citeşte un număr natural n. Să se determine câte cifre ale lui n sunt pare şi câte impare. De exemplu, numărul n=13721 are o cifră pară şi 4 impare.

10. Se citeşte un număr natural n. Cu câte cifre de zero se termină numărul n? De exemplu, pentru n=1400, rezultatul este 2.

11. Se citeşte un număr natural n şi o cifră k între 0 şi 9. De câte ori apare cifra k în n? De exemplu, pentru n=17217 şi k=7, 7 apare de 2 ori.

12. Se citeşte un număr natural n. Să se determine cea mai mare cifră a unui număr natural n. De exemplu, cea mai mare cifră a lui 38582 este 8.

13. Să se scrie un algoritm care citeşte două numere naturale n1 şi n2 şi care afişează mesajul „da” dacă suma pătratelor cifrelor lui n1 este egală cu suma cifrelor lui n2 sau „nu” în caz contrar. De exemplu, pentru n1=232 şi n2=881 se va afişa „da”, iar pentru n1=45 şi n2=12 se va afişa „nu”.

14*. Să se scrie un algoritm care citeşte un număr natural n şi afişează mesajul „da” dacă toate cifrele lui n sunt distincte, sau „nu” dacă n nu are toate cifrele distincte. De exemplu, pentru n=37645 se va afişa „da”, iar pentru 23414 se va afişa „nu”.

15*. Să se scrie un algoritm care citeşte un număr natural n şi elimină o singură cifră din n astfel încât numărul rămas să fie maxim. De exemplu, pentru n = 53886 se va elimina cifra 3 şi numărul obţinut este 5886. Oricare altă cifră care se elimină va obţine un număr mai mic.

 

OBSERVAŢII
A) Problemele 2–15 vor apărea în test exact în forma în care apar. Ultimele două (14 şi 15) sunt considerate mai dificile si vor fi considerate pentru nota 10.

B) Prima problemă este un model. Testarea va conţine un asemenea tip de subiect, DAR NU ACESTA! Mai jos este prezentată modalitatea corectă de rezolvare a problemei 1.

1) Rezolvare
a)

n = 10
c = 0
I. 10 <> 0 (true)
            10 mod 2 = 1 (false)
            n = 10 div 2 = 5
II. 5 <> 0 (true)
            5 mod 2 = 1 (true)
                        c = 0 + 1 = 1
            n = 5 div 2 = 2
III. 2 <> 0 (true)
            2 mod 2 = 1 (false)
            n = 2 div 2 = 1
IV. 1 <> 0 (true)
            1 mod 2 = 1 (true)
                        c = 1 + 1 = 2
            n = 1 div 2 = 0
V. 0 <> 0 (false)
Scrie 2

Pentru n = 10 algoritmul va afişa valoarea 2

b) 4, 8

c) Scrieţi un algoritm care citeşte un număr natural n şi determină şi afişează numărul de cifre de 1 din reprezentarea lui n în baza 2.

Despre autor
Author

Dan Pracsiu deţinător www.dponline.ro
Profesor, Liceul Teoretic "Emil Racoviță" Vaslui
Membru în Comisia Naţională a Olimpiadelor de Informatică
Pasiuni: istoria, călătoriile, fotografia, muzica clasică

Comentarii (2)
  • Avatar

    Alex 4-12-2013 19:42:59

    Cum se face problema 5?

  • Avatar

    algorel 4-12-2013 21:5:33

    Numeri de cate ori apare cifra k in numarul n. La final daca numarul de aparitii este 0 atunci k nu apare in n, iar daca numarul de aparitii este mai mare ca 0, atunci k apare in n.

Scrie un comentariu
Nume:

Comentariu:

15 + 10 =