RSS

L8. Algoritmi fundamentali. Prelucrarea cifrelor unui numar natural

05 Mar

Fie N un numar natural. Avem nevoie sa prelucram pe rand cifrele unui numar natural.

In prelucrarea cifrelor numarului, cel mai usor ajungem la ultima cifra (N%10) . Dupa prelucrarea ei, ultima cifra va trebui inlaturata (N=N/10). Si totul trebuie repetat cat timp N mai are cifre (N!=0).

De vreme ca nu stim cate cifre are N, nu putem folosi intructiunea FOR/PENTRU. Raman instructiunile repetitive cu un numar necunoscut de pasi : CAT TIMP EXECUTA/WHILE si EXECUTA CAT TIMP/ DO WHILE.

Pentru CAT TIMP EXECUTA/WHILE am un contraargmuent. Algoritmul ar trebui sa fie

cat timp (N!=0) executa { //prel ultima cifra a lui N
                             .......N%10;
                //stergem ultima cifra
                   N=N/10;
                     }

Daca utilizatorul doreste sa aplice algoritmul pentru valoarea zero, nu se va efectua nimic si secventa noastra nu se va executa.Evident, situatia se poate evita prin plasarea unui test inainte de CAT TIMP , care sa verifice daca N este nul.

Nu ramane decat varianta cu EXECUTA CAT TIMP/DO WHILE.

executa{ //prel ultima cifra a lui N
                             .......N%10;
                //stergem ultima cifra
                   N=N/10;
                     } cat timp (N!=0);

Cateva probleme clasice pentru acest algoritm:

  1. Sa se numere cate cifre are numarul N
  2. Sa se stabileasca cate cifre pare/impare are numarul N.
  3. Sa se stabileasca daca N contine o cifra data, CIF.
  4. Sa se numere de cate ori apare cifra CIF in numarul N.
  5. Sa se determine cifra maxima/minima din numarul N
  6. Sa se construiasca “oglinditul” numarului N. Pentru N=3648 se va afisa 8463.
  7. Sa se stabilesca daca N este palindrom (egal cu oglinditul sau).
  8. Pentru un numar N dat, sa se construiasca cel mai mare numar natural care se poate forma cu cifrele lui N.
cat timp (N!=0) executa { //prel ultima cifra a lui N
                             .......N%10;
                //stergem ultima cifra
                   N=N/10;
                     }
 
Leave a comment

Posted by on 05/03/2012 in C2_1. Algoritmica

 

Tags:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: