<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_V-a_lec%C8%9Bia_6_S6</id>
	<title>Clasa a V-a lecția 6 S6 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_V-a_lec%C8%9Bia_6_S6"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_V-a_lec%C8%9Bia_6_S6&amp;action=history"/>
	<updated>2026-04-13T05:06:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=Clasa_a_V-a_lec%C8%9Bia_6_S6&amp;diff=14127&amp;oldid=prev</id>
		<title>Bella: /* Inversul unui numar */</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_V-a_lec%C8%9Bia_6_S6&amp;diff=14127&amp;oldid=prev"/>
		<updated>2017-11-10T09:23:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Inversul unui numar&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Lectie=&lt;br /&gt;
&lt;br /&gt;
== Structura repetitiva &amp;#039;&amp;#039;&amp;#039;while do&amp;#039;&amp;#039;&amp;#039; ==&lt;br /&gt;
Structura repetitivă de tip WHILE-DO (cîtă timp - execută) reprezinta structura de control cu ajutorul careia executam un set de instructiuni, de mai multe ori, in functie de o conditie. Conditia se testeaza imediat la intrarea in structura repetitiva, de aceea, “while-do” se numeste structura repetitiva conditionata anterior.&lt;br /&gt;
&lt;br /&gt;
[[Image:sl-while-do.gif|frame|none|Structura repetitivă de tip WHILE-DO]]&lt;br /&gt;
Pseudocod&lt;br /&gt;
 Cat_timp(cond)executa&lt;br /&gt;
   Prel&lt;br /&gt;
&lt;br /&gt;
C/C++&lt;br /&gt;
 while(cond){&lt;br /&gt;
   Prel;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Mecanism:&lt;br /&gt;
* Pas1. Se testeaza conditia. Daca conditia este adevarata atunci trecem la pasul 2. Daca conditia este falsa se trece la pasul 3&lt;br /&gt;
* Pasul 2: Se executa pachetul de instructiuni “Prel” si se revine la pasul 1.&lt;br /&gt;
* Pasul 3. Stop&lt;br /&gt;
&lt;br /&gt;
==Aplicatii cu while do ==&lt;br /&gt;
=== Afisare cifre in ordine inversa ===&lt;br /&gt;
Se citește n. Să se afișeze cifrele lui n în ordine inversă.&lt;br /&gt;
[[Image:sl-cifre-număr-invers.gif|frame|none|Afișare cifre număr în ordine inversă]]&lt;br /&gt;
&lt;br /&gt;
Acest algoritm de &amp;#039;&amp;#039;&amp;#039;PARCURGERE&amp;#039;&amp;#039;&amp;#039; a cifrelor unui numar, se va aplica problemelor care prelucreaza intr-un fel sau altul cifrele numarului respectiv.&lt;br /&gt;
Pentru a putea parcurge cifrele unui numar, accesam mai intai cifra care se poate extrage cel mai usor din numar, si anume ultima cifra (stim ca ultima cifra a oricarui numar este restul impartirii numarului respectiv la 10). Dupa ce am extras aceasta cifra si am afisat-o , eliminam aceasta cifra din numar, astfel incat, penultima cifra a numarul va deveni ultima cifra, si deci o vom putea extrage usor si pe aceasta, la pasul urmator.&lt;br /&gt;
==== Pseudocod ====&lt;br /&gt;
 intreg n&lt;br /&gt;
 Citeste n&lt;br /&gt;
 Cat_timp(n&amp;gt;0)executa&lt;br /&gt;
   scrie n mod 10&lt;br /&gt;
   n = n div 10&lt;br /&gt;
&lt;br /&gt;
====C:====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main(){&lt;br /&gt;
  int n;&lt;br /&gt;
  printf( &amp;quot;Dati un numar: &amp;quot; );&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
  printf( &amp;quot;Cifrele in ordine inversa: &amp;quot; );&lt;br /&gt;
  while(n &amp;gt; 0){         &lt;br /&gt;
    printf( &amp;quot;%d&amp;quot;, n % 10 );&lt;br /&gt;
    n = n / 10;&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====C++:====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main(){&lt;br /&gt;
  int n;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Dati un numar:&amp;quot;;&lt;br /&gt;
  cin &amp;gt;&amp;gt; n;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Cifrele in ordine inversa:&amp;quot;;&lt;br /&gt;
  while( n &amp;gt; 0 ){&lt;br /&gt;
    cout &amp;lt;&amp;lt; n % 10;&lt;br /&gt;
    n = n / 10;&lt;br /&gt;
  }&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suma cifrelor unui numar ===&lt;br /&gt;
[[Image:sl-suma-cifre-n.gif|frame|none|Schemă logică]]&lt;br /&gt;
&lt;br /&gt;
Acest algoritm, se bazeaza pe algoritmul de parcurgere a cifrelor unui numar, descris anterior. Vom avea nevoie in plus, de o variabila ACUMULATOR (o vom denumi s, de la suma), variabila in care vom aduna pe rand valorile cifrelor accesate. Pe masura ce accesam o cifra a unui numar, adunam valoarea cifrei la valoarea anterioara a acumulatorului, care valoare, este initial 0. &lt;br /&gt;
Daca am fi dorit sa calculam produsul cifrelor unui numar, cat ar fi trebuit sa fie initial variabila acumulator?&lt;br /&gt;
&lt;br /&gt;
==== Pseudocod ====&lt;br /&gt;
 intreg n, s&lt;br /&gt;
 citeste n&lt;br /&gt;
 s = 0&lt;br /&gt;
 cat_timp( n &amp;gt; 0 )executa&lt;br /&gt;
   s &amp;lt;- s + n mod 10&lt;br /&gt;
   n &amp;lt;- n / 10&lt;br /&gt;
 scrie s&lt;br /&gt;
&lt;br /&gt;
==== C ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main(){&lt;br /&gt;
  int n,s;&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;,&amp;amp;n);&lt;br /&gt;
  s=0;&lt;br /&gt;
  while(n&amp;gt;0){&lt;br /&gt;
    s= s + n % 10;&lt;br /&gt;
    n=n/10;&lt;br /&gt;
  }&lt;br /&gt;
  printf(&amp;quot;%d&amp;quot;,s);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cate cifre are un numar ===&lt;br /&gt;
Acest algoritm, se bazeaza pe algoritmul de parcurgere a cifrelor unui numar, descris anterior. Vom avea nevoie in plus, de o variabila CONTOR , cu ajutorul caruia vom numara cifrele pe masura ce le vom parcurge. Vom parcurge cifrele numarului incepand cu ultima cifra , si pentru fiecare cifra accesata, vom mari valoarea contorului cu 1.&lt;br /&gt;
&lt;br /&gt;
==== Pseudocod ====&lt;br /&gt;
 contor = 0&lt;br /&gt;
 cat_timp( n &amp;gt; 0 )executa&lt;br /&gt;
   contor &amp;lt;- contor + 1&lt;br /&gt;
     n = n / 10&lt;br /&gt;
 scrie contor&lt;br /&gt;
&lt;br /&gt;
==== C ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
cnt=0;&lt;br /&gt;
while(n&amp;gt;0){&lt;br /&gt;
   cnt++; //cnt=cnt+1; cnt+=1&lt;br /&gt;
   n=n/10;&lt;br /&gt;
}&lt;br /&gt;
printf(&amp;quot;%d&amp;quot;,contor);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cate cifre sunt egale cu o cifra k ===&lt;br /&gt;
Acest algoritm, se bazeaza pe algoritmul de parcurgere a cifrelor unui numar, descris anterior. De asemenea, vom avea nevoie sa numaram cifrele care indeplinesc conditia data, folosind o variabila contor. In plus, vom avea nevoie sa testam daca o anumita cifra indeplineste conditia ceruta, si numai daca conditia este adevarata sa marim valoarea contorului.&lt;br /&gt;
&lt;br /&gt;
==== Pseudocod ====&lt;br /&gt;
 contor=0;&lt;br /&gt;
 cat_timp(n&amp;gt;0)executa&lt;br /&gt;
   daca( n mod 10 == k)&lt;br /&gt;
     contor &amp;lt;- contor+1&lt;br /&gt;
       n = n / 10&lt;br /&gt;
 scrie contor&lt;br /&gt;
&lt;br /&gt;
==== C ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
contor=0;&lt;br /&gt;
while(n&amp;gt;0){&lt;br /&gt;
   if( n % 10 == k)&lt;br /&gt;
      contor++;&lt;br /&gt;
   n=n/10;&lt;br /&gt;
}&lt;br /&gt;
printf(“%d”,contor);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sunt toate cifrele lui n pare? ===&lt;br /&gt;
Acest algoritm, se bazeaza pe algoritmul de parcurgere a cifrelor unui numar, descris anterior. Vom avea nevoie in plus, de o variabila STEAG (SEMN) , cu ajutorul caruia vom identifica daca numarul are o cifra care nu respecta conditia data. Vom parcurge toate cifrele numarului si de fiecare data cand vom gasi o cifra care nu respecta conditia( nu este para) vom seta valoarea steguletului pe 0 (codificare a raspunsului NU, nu este ok numarul). Initial valoarea steguletului va fi setata pe 1 (codificare a raspunsului DA; presupunem ca numarul are numai cifre pare, adica este ok)&lt;br /&gt;
Variabila cu rol de steag este gasit. &lt;br /&gt;
&lt;br /&gt;
==== Pseudocod ====&lt;br /&gt;
 gasit=1;&lt;br /&gt;
 cat_timp(n&amp;gt;0)executa&lt;br /&gt;
   daca( n mod 2 == 1)&lt;br /&gt;
     gasit=1&lt;br /&gt;
     n&amp;lt;-n div 10;&lt;br /&gt;
 daca (gasit==0)&lt;br /&gt;
   scrie “nu sunt toate pare”&lt;br /&gt;
 altfel&lt;br /&gt;
   scrie “sunt toate pare”&lt;br /&gt;
&lt;br /&gt;
==== C ====&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
gasit = 1; &lt;br /&gt;
while( n &amp;gt; 0 ){&lt;br /&gt;
   if( n % 2 == 1 )&lt;br /&gt;
    gasit = 0;&lt;br /&gt;
   n=n/10;&lt;br /&gt;
}&lt;br /&gt;
if( gasit == 0 )&lt;br /&gt;
  printf(“nu sunt toate pare”);&lt;br /&gt;
else&lt;br /&gt;
   printf(“sunt toate pare”);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Varianta condensata:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
while( n &amp;gt; 0 &amp;amp;&amp;amp; n % 2 == 0 ){   &lt;br /&gt;
    n=n/10;&lt;br /&gt;
}&lt;br /&gt;
if( n &amp;gt; 0 )&lt;br /&gt;
  printf(&amp;quot;nu sunt toate pare&amp;quot;);&lt;br /&gt;
else&lt;br /&gt;
  printf(&amp;quot;sunt toate pare&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inversul unui numar ===&lt;br /&gt;
[[Image:sl-rasturnat-n.gif|frame|none|Schemă logică]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  int n, r;&lt;br /&gt;
&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
  r = 0;&lt;br /&gt;
  while ( n &amp;gt; 0 ) {&lt;br /&gt;
    r = r * 10 + n % 10;&lt;br /&gt;
    n = n / 10;&lt;br /&gt;
  }&lt;br /&gt;
  printf( &amp;quot;%d\n&amp;quot;, r );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Palindrom ===&lt;br /&gt;
Definiție: un număr palindrom (sau simetric) este un număr care este identic cu răsturnatul lui. Cu alte cuvinte el arată la fel dacă îi scriem cifrele de la stînga la dreapta sau de la dreapta la stînga. Exemple de numere palindrom sînt 1221, 5229225, 27272, 44, 1. Problemă: să se determine dacă un număr n este palindrom.&lt;br /&gt;
Rezolvare: vom calcula răsturnatul lui n în variabila r. Dacă cele două numere sînt egale înseamnă ca numărul este palindrom. Trebuie să acordăm atenție faptului că n va fi distrus în timpul calculului, drept pentru care îi vom face o copie în nc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  int n, nc, r;&lt;br /&gt;
&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
  nc = n;&lt;br /&gt;
  r = 0;&lt;br /&gt;
  while ( n &amp;gt; 0 ) {&lt;br /&gt;
    r = r * 10 + n % 10;&lt;br /&gt;
    n = n / 10;&lt;br /&gt;
  }&lt;br /&gt;
  if ( nc == r )&lt;br /&gt;
    printf( &amp;quot;%d este palindrom\n&amp;quot;, nc );&lt;br /&gt;
  else&lt;br /&gt;
    printf( &amp;quot;%d nu este palindrom\n&amp;quot;, nc );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= TEMA6 =&lt;br /&gt;
* (usoara) Sa se calculeze 2 la puterea n.&lt;br /&gt;
* (medie)  Se citeste un numar n, de maxim 9 cifre dintr-un fisier &amp;quot;date.in&amp;quot;. Afisati numarul care contine, in aceeasi ordine doar cifrele pare ale lui n, intr-un fisier &amp;quot;date.out&amp;quot;. Ex: n= 12345, Se va afisa 24;&lt;br /&gt;
* (usoara) Se citeste un numar n. Afisati numarul rezultat prin eliminarea primei cifre a lui n.&lt;br /&gt;
* (medie)  Se citeste un numar n. Afisati cifra de control a numarul n. Cifra de control se obtine prin adunarea repetata a cifrelor numarului pana cand se obtine o singura cifra.&lt;br /&gt;
Ex: n=193, s=1+9+3=13, s=1+3=4&lt;br /&gt;
* (dificila) Se citeste un numar n. Sa se afiseze cel mai apropiat fata de n numar palindrom.&lt;br /&gt;
Ex1: 122 , afisam 121; nr 122 e cuprins intre 121 si 131, iar 121 este mai apropiat fata de 122&lt;br /&gt;
Ex2: 452 , afisam 454; nr 452 este cuprins intre 444 si 454.&lt;br /&gt;
&lt;br /&gt;
== Optional ==&lt;br /&gt;
* [http://varena.ro/problema/cangur Cangur] &lt;br /&gt;
* [http://varena.ro/problema/economii Economii]&lt;br /&gt;
&lt;br /&gt;
== Util ==&lt;br /&gt;
* Citire/ scriere in C/c++ [http://lbi.ro//~bella/9/03%20Elemente%20de%20baza/1_Citire_scriere.pdf Citire/Scriere]&lt;br /&gt;
&lt;br /&gt;
* Instalare codeblocks  [http://sourceforge.net/projects/codeblocks/files/Binaries/16.01/Windows/codeblocks-16.01mingw-setup.exe Code::Blocks].&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>