<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog despre resurse educaţionale din IT &#187; teza</title>
	<atom:link href="http://resurse-educationale.uv.ro/?feed=rss2&#038;tag=teza" rel="self" type="application/rss+xml" />
	<link>http://resurse-educationale.uv.ro</link>
	<description>Cu informatii pentru dezvoltare personala, dar şi pentru studentţi, elevi, profesori, webmasteri, programatori</description>
	<lastBuildDate>Fri, 27 Jan 2012 01:12:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Probleme rezolvate in Pascal</title>
		<link>http://resurse-educationale.uv.ro/?p=181</link>
		<comments>http://resurse-educationale.uv.ro/?p=181#comments</comments>
		<pubDate>Thu, 04 Aug 2011 14:15:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[algoritmi]]></category>
		<category><![CDATA[Biblioteci]]></category>
		<category><![CDATA[cozi]]></category>
		<category><![CDATA[informatică]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[programe rezolvate]]></category>
		<category><![CDATA[sisteme de numereaţie]]></category>
		<category><![CDATA[teza]]></category>
		<category><![CDATA[tipuri de date]]></category>
		<category><![CDATA[units]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=181</guid>
		<description><![CDATA[Probelma 1. Creaţi un program care afişează următoarea funcţie. Program P2.1; uses crt; var i,n,s : integer; f : boolean; begin clrscr; repeat write(&#8216;Introduceţi un număr natural n=&#8217;); readln(n); until n&#62;2; if n mod 2=0 then f:=false else f:=true; write(&#8216;s=&#8217;); &#8230; <a href="http://resurse-educationale.uv.ro/?p=181">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong> </strong></p>
<p><strong>Probelma 1</strong>. Creaţi un program care afişează următoarea funcţie.</p>
<p><strong> </strong></p>
<p>Program P2.1;</p>
<p>uses crt;</p>
<p>var i,n,s : integer;</p>
<p>f : boolean;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi un număr natural n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;2;</p>
<p>if n mod 2=0 then f:=false else f:=true;</p>
<p>write(&#8216;s=&#8217;);</p>
<p>for i:=1 to n-2 do</p>
<p>if(not f) and (i mod 2 =0)then write(&#8216;*&#8217;,i)</p>
<p>else</p>
<p>if f and (i mod 2&lt;&gt;0)then write(&#8216;*&#8217;,i);</p>
<p>writeln(&#8216;*&#8217;,n);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>Se dă un număr natural n. Verificaţi daca acest număr este prim sau nu.</strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p>Program P2.2;</p>
<p>uses crt;</p>
<p>var i,n,f : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi un număr natural n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;2;</p>
<p>f:=0;</p>
<p>for i:=2 to n div 2 do</p>
<p>if n mod i=0 then f:=1;</p>
<p>if f=0 then</p>
<p>writeln(&#8216;Numărul&#8217;,n:6,&#8217; este prim&#8217;)</p>
<p>else</p>
<p>writeln(&#8216;Numărul&#8217;,n:6,&#8217; nu este prim&#8217;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Este dat intervalul numerelor naturale de la n pina la m. Determinati toate numerele naturale din acest interval.</strong><strong> </strong></p>
<p><strong> </strong></p>
<p>Program P2.3;</p>
<p>uses crt;</p>
<p>var i,n,f,j,r,m : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi limita de jos a intervalului n=&#8217;);</p>
<p>read(n);</p>
<p>write(&#8216;Introduceţi limita de sus a intervalului m=&#8217;);</p>
<p>readln(m);</p>
<p>until (n&gt;0) and(m&gt;0) and(n&lt;m);</p>
<p>writeln(&#8216;Introduceţi intervalul de la&#8217;,n:6,&#8217;pina la&#8217;,m:6&#8242;);</p>
<p>r:=0;</p>
<p>for j:=n to m do</p>
<p>begin</p>
<p>f:=0;</p>
<p>for i:=2 to j div 2 do</p>
<p>if j mod i=0 then f:=1;</p>
<p>if f=0 then</p>
<p>begin r:=1;</p>
<p>writeln(&#8216;Numărul&#8217;,j:6,&#8217; este prim&#8217;)</p>
<p>end;</p>
<p>end;</p>
<p>if r=0 then writeln(&#8216;Numărul nu este prim&#8217;);</p>
<p>readkey;</p>
<p>end.<span id="more-181"></span></p>
<p><strong> </strong></p>
<p><strong>Se da un număr natural n. Determinaţi toate numerele prime, inclusiv n.</strong></p>
<p><strong> </strong></p>
<p>Program P2.4;</p>
<p>uses crt;</p>
<p>var i,n,f,j,r,m : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi un număr natural n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;0;</p>
<p>writeln(&#8216;Introduceţi intervalul de la 1 pînă la&#8217;,n:6&#8242;);</p>
<p>r:=0;</p>
<p>for j:=1 to n do</p>
<p>begin</p>
<p>f:=0;</p>
<p>for i:=2 to j div 2 do</p>
<p>if j mod i=0 then f:=1;</p>
<p>if f=0 then</p>
<p>begin r:=1;</p>
<p>writeln(&#8216;Numarul&#8217;,j:6,&#8217; este prim&#8217;)</p>
<p>end;</p>
<p>end;</p>
<p>if r=0 then writeln(&#8216;Numărul nu este prim&#8217;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Introduceţi doua numere naturale m si n. Determinaţi împărţitorul lor comun NOD.</strong></p>
<p><strong> </strong></p>
<p>Program p2_5;</p>
<p>uses crt;</p>
<p>var i,m,n,k,nod:integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi numărul natural n=&#8217;);</p>
<p>readln(n);</p>
<p>write(&#8216;Introduceţi numărul natural m=&#8217;);</p>
<p>readln(m);</p>
<p>until (n&gt;0) and (m&gt;0);</p>
<p>if n&gt;m then k:=m else k:=n;</p>
<p>for i:=1 to k do</p>
<p>if (n mod i=0) and (m mod i=0) then nod:=i;</p>
<p>writeln(&#8216;Împărţitorul numărului comun &#8216;,n, &#8216;şi&#8217;, m,</p>
<p>&#8216;nod=&#8217;,nod);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Tema 3:</strong></p>
<p><strong> </strong></p>
<p><strong>Sunt date următoarele n numerele naturale. Găsiţi suma tuturor numerelor naturale negative.</strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p>Program P3.1;</p>
<p>uses crt;</p>
<p>var n,x,sum,i : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi lungimea următoarelor numere n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;0;</p>
<p>sum:=0;</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>writeln(&#8216;introdu x=&#8217;);</p>
<p>readln(x);</p>
<p>if x&lt;0 then sum:=sum+x;</p>
<p>end;</p>
<p>if sum=0 then writeln(&#8216;Numărul negativ nu exisţă&#8217;)</p>
<p>else</p>
<p>writeln(&#8216;Suma numerelor negative este sum=&#8217;,sum);</p>
<p>end.</p>
<p><strong>Sunt date următoarele n numere naturale. Găsiţi numărul maximal.</strong></p>
<p>Program P3.2;</p>
<p>uses crt;</p>
<p>var n,x,max,i : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi lungimea următoarelor numere n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;0;</p>
<p>writeln(&#8216;introdu x=&#8217;);</p>
<p>readln(x);</p>
<p>max:=x;</p>
<p>for i:=2 to n do</p>
<p>begin</p>
<p>writeln(&#8216;introdu x=&#8217;);</p>
<p>readln(x);</p>
<p>if (x&gt;max) then max:=x;</p>
<p>end;</p>
<p>writeln(&#8216;Numărul maximal este max=&#8217;,max);</p>
<p>end.</p>
<p><strong>Sunt date următoarele n numere naturale. Găsiţi numărul maximal din numerele negative.</strong></p>
<p><strong> </strong></p>
<p>Program p3_3;</p>
<p>uses crt;</p>
<p>var n,x,max,i:integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi lungimea numărul natural n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;0;</p>
<p>max:=0;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi x=&#8217;);</p>
<p>readln(x);</p>
<p>n:=n-1;</p>
<p>until (x&lt;0) o</p>
<p>r (n&lt;=1);</p>
<p>if x&lt;0 then max:=x;</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>write(&#8216;Introduceţi x=&#8217;);</p>
<p>readln(x);</p>
<p>if (x&lt;0) and (x&gt;max) then max:=x;</p>
<p>end;</p>
<p>if max=0 then write(&#8216;Numărul negativ nu există&#8217;)</p>
<p>else</p>
<p>writeln(&#8216;Numărul maximal din numerele negative max:=&#8217;,max);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Întroduceţi următoarele n numere naturale. Determinaţi de cîte ori alternează şirul din numărul dat.</strong></p>
<p><strong> </strong></p>
<p>Program P3_4;</p>
<p>uses crt;</p>
<p>var old,new,f:real;</p>
<p>k,i,n:integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>repeat</p>
<p>write(&#8216;Introduceţi lungimea numărul natural n=&#8217;);</p>
<p>readln(n);</p>
<p>until n&gt;0;</p>
<p>write(&#8216;Introduceţi x=&#8217;);</p>
<p>readln(old);</p>
<p>f:=old;</p>
<p>k:=0;</p>
<p>for i:=2 to n do</p>
<p>begin</p>
<p>write(&#8216;Introduceţi x=&#8217;);</p>
<p>readln(new);</p>
<p>if (new&lt;&gt;0) and (f=0) then f:=new;</p>
<p>if new*f&lt;0 then</p>
<p>begin</p>
<p>f:=new;</p>
<p>k:=k+1;</p>
<p>end;</p>
<p>old:=new;</p>
<p>end;</p>
<p>if k&gt;0 then</p>
<p>writeln(&#8216;Următorul îsi schimba semnul’, k, &#8216;odată&#8217;)</p>
<p>else</p>
<p>writeln(&#8216;Urmatorul nu-si schimba semnul&#8217;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Întroduceţi următoarele numere nenule, 0-sfirsitul enumerării. Determinaţi este oare enumerarea schimbătoare de semn sau nu.</strong></p>
<p>Program P3_5;</p>
<p>uses crt;</p>
<p>var old,new,x:real;</p>
<p>f :boolean;</p>
<p>begin</p>
<p>clrscr;</p>
<p>write(&#8216;Introduceţi x=&#8217;);</p>
<p>readln(old);</p>
<p>write(&#8216;Introduceti x=&#8217;);</p>
<p>read(new);</p>
<p>f:=true;</p>
<p>repeat</p>
<p>if new*old&gt;0 then f:=false;</p>
<p>old:=new;</p>
<p>write(&#8216;Introduceti x=&#8217;);</p>
<p>readln(new);</p>
<p>until new=0;</p>
<p>if f then</p>
<p>writeln(&#8216;Este enumerare schimbătoare de semn&#8217;)</p>
<p>else</p>
<p>writeln(&#8216;Nu este enumerare de semn&#8217;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Tema 4</strong></p>
<p><strong> </strong></p>
<p><strong>Extrageţi intr-un rînd abbccc … zz … z.</strong></p>
<p><strong> </strong></p>
<p>Program P4_1;</p>
<p>uses crt;</p>
<p>var i : char;</p>
<p>k,j : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>k:=1;</p>
<p>for i:= &#8216;a&#8217; to &#8216;z&#8217; do</p>
<p>begin</p>
<p>for j:=1 to k do</p>
<p>write(i);</p>
<p>k:=k+1;</p>
<p>end;</p>
<p>writeln;</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Extrageţi triunghiul  abc…  z</strong></p>
<p><strong> bc…  z</strong></p>
<p><strong> ……   z</strong></p>
<p><strong> </strong></p>
<p>Program P4_2;</p>
<p>uses crt;</p>
<p>var i,l : char;</p>
<p>j : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>l:=&#8217;a';</p>
<p>for j:=1 to 26 do</p>
<p>begin</p>
<p>for i:=&#8217;a&#8217; to l do</p>
<p>write(&#8221;);</p>
<p>for i:=l to &#8216;z&#8217; do</p>
<p>write(i);</p>
<p>write;</p>
<p>l:=succ(l);</p>
<p>end;</p>
<p>writeln;</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Este dat un şir de simboluri. De înlocuit din ’a’ prin ‘aaa’.</strong></p>
<p><strong> </strong></p>
<p>Program P4_3;</p>
<p>uses crt;</p>
<p>var str : string;</p>
<p>l,i : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>writeln(&#8216;Introduceţi text&#8217;);</p>
<p>readln(str);</p>
<p>l:=length(str);</p>
<p>writeln(&#8216;Textul transformat este&#8217;);</p>
<p>for i:=1 to l do</p>
<p>if (str[i]=&#8217;a') then write(&#8216;aaa&#8217;)</p>
<p>else write(str[i]);</p>
<p>writeln;</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Este dat un şir de simboluri. Ştergeţi din ia toate semnele de punctuaţie.</strong></p>
<p>Program P4_4;</p>
<p>uses crt;</p>
<p>var str : string;</p>
<p>l,i : integer;</p>
<p>m : set of char;</p>
<p>begin</p>
<p>clrscr;</p>
<p>m:=['.',',','!',':',';','?','-'];</p>
<p>writeln(&#8216;Introduceţi text&#8217;);</p>
<p>readln(str);</p>
<p>l:=length(str);</p>
<p>writeln(&#8216;Textul transformat este&#8217;);</p>
<p>for i:=1 to l do</p>
<p>if not(str[i] in m) then write(str[i]);</p>
<p>writeln;</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Este dat un şir de simboluri. De schimbat pe toate semnele exclamării pe puncte.</strong></p>
<p>Program P4_5;</p>
<p>uses crt;</p>
<p>var str : string;</p>
<p>l,i : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>writeln(&#8216;Introduceţi text&#8217;);</p>
<p>readln(str);</p>
<p>l:=length(str);</p>
<p>writeln(&#8216;Textul transformat este&#8217;);</p>
<p>for i:=1 to l do</p>
<p>if (str[i]=&#8217;!') then write(&#8216;.&#8217;);</p>
<p>writeln;</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Tema 5</strong></p>
<p><strong>Este dat un şir de simboluri. De ividenţiat sub sirul dintre primul si al doilea punct.</strong></p>
<p>Program P5_1;</p>
<p>uses crt;</p>
<p>var s1,str : string;</p>
<p>l,i : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>writeln(&#8216;Introduceţi textul&#8217;);</p>
<p>readln(str);</p>
<p>s1:=str;</p>
<p>l:=pos(&#8216;.&#8217;,s1);</p>
<p>if i&lt;&gt;0 then</p>
<p>begin</p>
<p>delete(s1,1,l);</p>
<p>i:=pos(&#8216;.&#8217;,s1);</p>
<p>if i&lt;&gt;0 then</p>
<p>begin</p>
<p>s1:=copy(s1,1,i-1);</p>
<p>writeln(&#8216;Evidenţiaţi şirul dintre primul si al doilea</p>
<p>numar&#8217;);</p>
<p>writeln(s1);</p>
<p>end</p>
<p>else</p>
<p>writeln(&#8216;In text este doar un singur punct);</p>
<p>end</p>
<p>else</p>
<p>wrireln(&#8216;In text nu exista punct&#8217;);</p>
<p>writeln;</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Este dat un şir de simboluri. De evidenţiat sub şirul dintre primul si ultimul punct.</strong></p>
<p><strong> </strong></p>
<p>Program P5_1;</p>
<p>uses crt;</p>
<p>var s1,str : string;</p>
<p>l,i,j : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>writeln(&#8216;Introduceţi textul&#8217;);</p>
<p>readln(str);</p>
<p>s1:=str;</p>
<p>l:=pos(&#8216;.&#8217;,s1);</p>
<p>j:=i; l:=0;</p>
<p>if i&lt;&gt;0 then</p>
<p>begin</p>
<p>while i&lt;&gt;0 do</p>
<p>begin</p>
<p>delete(s1,1,l);</p>
<p>i:=pos(&#8216;.&#8217;,s1);</p>
<p>end;</p>
<p>if i&lt;&gt;0 then</p>
<p>begin</p>
<p>s1:=copy(str,j+1,l-j-1);</p>
<p>writeln(&#8216;Evidentiati sirul primului numar&#8217;);</p>
<p>writeln(s1);</p>
<p>end</p>
<p>else</p>
<p>writeln(&#8216;In text este doar un singur punct);</p>
<p>end</p>
<p>else</p>
<p>wrireln(&#8216;In text nu exista punct&#8217;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Este dat un şir de simboluri. De evidenţiat sub şirul dintre primul si ultimul punct.</strong></p>
<p>Program P5_2;</p>
<p>uses crt;</p>
<p>var s1,str : string;</p>
<p>l,i,j : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>writeln(&#8216;Introduceti text&#8217;);</p>
<p>readln(str);</p>
<p>s1:=str;</p>
<p>l:=pos(&#8216;.&#8217;,s1);</p>
<p>j:=i; l:=0;</p>
<p>if i&lt;&gt;0 then</p>
<p>begin</p>
<p>while i&lt;&gt;0 do</p>
<p>begin</p>
<p>delete(s1,1,l);</p>
<p>l:=l+i;</p>
<p>i:=pos(&#8216;.&#8217;,s1);</p>
<p>end;</p>
<p>if l&lt;&gt;j then</p>
<p>begin</p>
<p>s1:=copy(str,j+1,l-j-1);</p>
<p>writeln(&#8216;Evidentiati sirul primului numar&#8217;);</p>
<p>writeln(s1);</p>
<p>end</p>
<p>else</p>
<p>writeln(&#8216;In text este doar un singur punct);</p>
<p>end</p>
<p>else</p>
<p>wrireln(&#8216;In text nu exista punct&#8217;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Este dat un şir de caractere până la un punct. Grupul de simboluri intre spatii se scot. De găsit câte cuvinte se încep cu una si aceeaşi litera.</strong></p>
<p><strong> </strong></p>
<p>Program P5_3;</p>
<p>uses crt;</p>
<p>var   s1 : string;</p>
<p>k,i,j : integer;</p>
<p>x : char;</p>
<p>begin</p>
<p>clrscr;</p>
<p>writeln(&#8216;Introduceti text&#8217;);</p>
<p>readln(s1);</p>
<p>i:=pos(&#8216;.&#8217;,s1);</p>
<p>s1:=copy(s1,1,j-1)+&#8221;;</p>
<p>k:=0;</p>
<p>repeat</p>
<p>if s1[1]&lt;&gt;&#8221;then x:=s1[1];</p>
<p>i:=pos(&#8216;.&#8217;,s1);</p>
<p>if i&gt;1 then if x=s1[-1] then k:=k+1;</p>
<p>delete(s1,1,l);</p>
<p>until l=0;</p>
<p>writeln(&#8216;Evidentiati numarul de cuvinte k=&#8217;,k&#8217;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Este dat un şir de caractere până la un punct. Grupul de simboluri intre spatii se scot. De găsi câte cuvinte conţine trei litere din l.</strong></p>
<p><strong> </strong></p>
<p>Program P5_4;</p>
<p>uses crt;</p>
<p>var m,k,l,j : integer;</p>
<p>s1 : string;</p>
<p>begin</p>
<p>clrscr;</p>
<p>writeln(&#8216;Introduceti text&#8217;);</p>
<p>readln(s1);</p>
<p>j:=pos(&#8216;.&#8217;,s1);</p>
<p>s1:=copy(s1,1,j-1)+&#8221;;</p>
<p>m:=0;</p>
<p>repeat</p>
<p>j:=pos(&#8221;,s1);</p>
<p>if l&gt;1 then begin</p>
<p>k:=0;</p>
<p>for j:=1 to l-1 do</p>
<p>if s1[j]=&#8217;e'then k:=k+1;</p>
<p>if k=3 then m:=m+1;</p>
<p>end;</p>
<p>delete(s1,1,l);</p>
<p>until l=0;</p>
<p>writeln(&#8216;Numarul de cuvinte este k=&#8217;,k);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Este dat un şir de caractere până la un punct. Grupul de simboluri intre spatii se scot. De verificat daca ea este de la un număr real.</strong></p>
<p><strong> </strong></p>
<p>Program P5_5;</p>
<p>uses crt;</p>
<p>var l,k : integer;</p>
<p>s1 : string;</p>
<p>begin</p>
<p>clrscr;</p>
<p>writeln(&#8216;Introduceti text&#8217;);</p>
<p>readln(s1);</p>
<p>k:=0; l:=1;</p>
<p>repeat</p>
<p>case s1[l] of</p>
<p>&#8217;0&#8242;..&#8217;9&#8242; :k:=k+(ord(s1[l])-ord(&#8217;0&#8242;));</p>
<p>&#8221;:;</p>
<p>else k:=-1;</p>
<p>end;</p>
<p>i:=i+1</p>
<p>until (s1[l]==&#8217;.')or(k&lt;0);</p>
<p>if k mod 5 = 0 then</p>
<p>writeln(&#8216;Esre o cifra zecimala,reala 5&#8242;);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong>Tema 6</strong></p>
<p><strong>Se dată o mulţime de numere. De găsit elementul maximal dacă sînt careva elemente maximale. De evidenţiat câte elemente sunt.</strong></p>
<p>Program P6_1;</p>
<p>uses crt;</p>
<p>var mas:array[1..10] of integer;</p>
<p>i,max,k,n : integer;</p>
<p>begin</p>
<p>clrscr;</p>
<p>writeln(&#8216;Introduceţi mărimea şirului n=&#8217;);</p>
<p>readln(N);</p>
<p>writeln(&#8216;Introduceţi elementele şirului&#8217;);</p>
<p>readln(mas[1]);</p>
<p>max:=mas[1];</p>
<p>k:=1;</p>
<p>for i:=2 to n do</p>
<p>begin</p>
<p>write(&#8216;Introduceţi elementele şirului&#8217;);</p>
<p>readln(mas[1]);</p>
<p>if max&lt;mas[i] then</p>
<p>begin</p>
<p>max:=mas[i];</p>
<p>k:=1</p>
<p>end</p>
<p>else</p>
<p>if max = mas[i] then k:=k+1;</p>
<p>end;</p>
<p>writeln(&#8216;Max=&#8217;,max, &#8216;Aceste elemente&#8217;, k);</p>
<p>readkey;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Este dată o mulţime de numere. De găsit câte perechi de elemente vecine identice sunt în ea. </strong></p>
<p><strong> </strong></p>
<p>Program P6_2;</p>
<p>const m=100;</p>
<p>var mas : array[1..m] of integer;</p>
<p>i,k,n : integer;</p>
<p>begin</p>
<p>readln(n);</p>
<p>k:=0;</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>write(&#8216;Introduceţi elementele şirului&#8217;);</p>
<p>readln(mas[1]);</p>
<p>end;</p>
<p>for i:=1 to n-1 do</p>
<p>if mas[i]=mas[i+1] then k:=k+1;</p>
<p>writeln(&#8216;Perechile asemenea in şirul elementului este &#8216;,k);</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Este dată o mulţime de numere. De găsit cel mai mare element şi să-l plasăm pe primul loc.</strong></p>
<p>Program P6_3;</p>
<p>const m=100;</p>
<p>var mas : array[1..m] of integer;</p>
<p>i,k,new,n : integer;</p>
<p>begin</p>
<p>write(&#8216;Introduceţi mărimea şirului n=&#8217;);</p>
<p>readln(n);</p>
<p>writeln(&#8216;Introduceţi&#8217;, n, &#8216;Şirul elementului&#8217;);</p>
<p>for i:=1 to n do</p>
<p>read(mas[i]);</p>
<p>writeln;</p>
<p>new:=mas[n];</p>
<p>k:=n;</p>
<p>for i:=n downto 1 do</p>
<p>if mas[i]&gt;new then</p>
<p>begin</p>
<p>k:=i;</p>
<p>new:=mas[i]</p>
<p>end;</p>
<p>mas[k]:=mas[1];</p>
<p>mas[1]:=new;</p>
<p>for i:=1 to n do</p>
<p>write(mas[i]:4);</p>
<p>writeln</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Se cunosc datele despre reuşita a nu mai mult de 27 grupe de studiu(în procente). De evidenţiat cu cît trebuie de ridicat reuşita în cea mai rămasă grupă pentru a atinge nivelul mediu.</strong></p>
<p><strong> </strong></p>
<p>Program P6_4;</p>
<p>const m=100;</p>
<p>var mas : array[1..m] of integer;</p>
<p>i,n : integer;</p>
<p>min,sum : real;</p>
<p>begin</p>
<p>write(&#8216;Introduceţi mărimea şirului n=&#8217;);</p>
<p>readln(n);</p>
<p>repeat</p>
<p>writeln(&#8216;Introduceţi elementului şirului(%)&#8217;);</p>
<p>readln(mas[1]);</p>
<p>until (mas[1]&lt;101)and(mas[1]&gt;0);</p>
<p>min:=mas[1];sum:=min;</p>
<p>for i:=2 to n do</p>
<p>begin</p>
<p>sum:=sum+mas[i];</p>
<p>if min&gt;mas[i] then min:=mas[i];</p>
<p>end;</p>
<p>writeln(&#8216;Dea ridica cea mai înalta grupa&#8217;);</p>
<p>writeln(&#8216;Din cel mai jos nivel pe&#8217;,(sum/n)-min);</p>
<p>end.</p>
<p><strong>Sunt cunoscute datele despre temperatura medie lunară pe an. De evidenţiat care temperatură a fost cea mai înaltă vara şi cea mai joasă iarna.</strong></p>
<p><strong> </strong></p>
<p>Program P6_5;</p>
<p>const m=12;</p>
<p>var mas : array[1..m] of real;</p>
<p>i,n : integer;</p>
<p>min,max : real;</p>
<p>begin</p>
<p>for i:=1 to 12 do</p>
<p>begin</p>
<p>write(&#8216;Introduceţi mărimea şirului&#8217;);</p>
<p>readln(mas[i]);</p>
<p>end;</p>
<p>max:=mas[6];min:=mas[12];</p>
<p>for i:=7 to 8 do</p>
<p>if max&lt;mas[i] then max:=mas[i];</p>
<p>for i:=1 to 2 do</p>
<p>if min&gt;mas[i] then min:=mas[i];</p>
<p>writeln(&#8216;Cea mai înalta temperatura vara&#8217;, max);</p>
<p>writeln(&#8216;Cea mai joasa temperatura iarna&#8217;, min);</p>
<p>end.</p>
<p><strong>Tema 7</strong></p>
<p><strong>Este dată matricea N x M, formată din numere naturale. De găsit cel mai mic element şi poziţia lui dacă sunt mai multe de aceste elemente, de afişat pe ecran poziţiile fiecăruia.</strong></p>
<p><strong> </strong></p>
<p>Program P7_1;</p>
<p>Const t;100; s;100;</p>
<p>Var A:array [1..t,1..s] of integer;</p>
<p>n,m,im,jm,i,j,min,k : integer;</p>
<p>begin</p>
<p>write(&#8216;Introduceţi mărimea şirului&#8217;);</p>
<p>readln(n);</p>
<p>writeln(&#8216;Introduceţi mărimea şirului&#8217;);</p>
<p>readln(m);</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>writeln(&#8216;Introduceţi&#8217;, m, &#8216;şiru&#8217;l);</p>
<p>for j:’1 to m do</p>
<p>read(a[i,j]);</p>
<p>end;</p>
<p>min:=a[1,1];</p>
<p>im:=1;jm:=1;k:=0;</p>
<p>for i:=1 to n do</p>
<p>for j:=1 to m do</p>
<p>if min&gt;a[i,j] then</p>
<p>begin</p>
<p>k:=1;im:=i;jm:=j;</p>
<p>min:= a[i,j]</p>
<p>end</p>
<p>else</p>
<p>if min= a[i,j] then k:=k+1;</p>
<p>if k=1 then</p>
<p>begin</p>
<p>writeln(’Cel mai mic element este min=’,min);</p>
<p>writeln(’În’, im, ’În rînd’, jm, ’Coloniţă’);</p>
<p>end</p>
<p>else</p>
<p>begin</p>
<p>writeln(’Î n matricea’,k, ’Elementul minimal min =’,min);</p>
<p>for i:=im to n do</p>
<p>for j:=1 to m do</p>
<p>if min=a[i,j] then writeln(’În rând’, i, ’În coloniţaâ,j)</p>
<p>end</p>
<p>end.</p>
<p><strong>Este dată matricea N x M, formată din numere naturale. De a găsi în şiruri cele mai mici elemente din dreapta şi de a găsi poziţia lor.</strong></p>
<p>Program P7_2;</p>
<p>Const t;100; s;100;</p>
<p>Var A:array [1..t,1..s] of integer;</p>
<p>n,m,jm,i,j,min : integer;</p>
<p>begin</p>
<p>write(&#8216;Introduceţi mărimea şirului&#8217;);</p>
<p>readln(n);</p>
<p>writeln(&#8216;Introduceţi mărimea şirului&#8217;);</p>
<p>readln(m);</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>writeln(&#8216;Introduceţi&#8217;, m, &#8216;şirul&#8217;);</p>
<p>for j:’1 to m do</p>
<p>read(a[i,j]);</p>
<p>end;</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>min:= (a[i,m]);</p>
<p>jm:=m;</p>
<p>for j:=m downto 1 do</p>
<p>if min&gt;a[i,j] then</p>
<p>begin</p>
<p>jm:=j;</p>
<p>min:= a[i,j]</p>
<p>end;</p>
<p>writeln(’În rîndul i=’, i, ’Din dreapta min=’,min);</p>
<p>writeln(’În coloniţa’, jm);</p>
<p>end;</p>
<p>end.</p>
<p><strong>Este dată matricea N x M, formată din numere naturale. De găsit cele mai mici elemente din stânga şi a le pune în prima coloniţă.</strong></p>
<p>Program P7_3;</p>
<p>Const t;100; s;100;</p>
<p>Var A:array [1..t,1..s] of integer;</p>
<p>n,m,jm,i,j,min : integer;</p>
<p>begin</p>
<p>write(&#8216;Introduceţi mărimea şirului n=&#8217;);</p>
<p>readln(n);</p>
<p>writeln(&#8216;Introduceţi mărimea şirului m=&#8217;);</p>
<p>readln(m);</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>writeln(&#8216;Introduceţi&#8217;, m, &#8216;şirul&#8217;);</p>
<p>for j:=1 to m do</p>
<p>read(a[i,j]);</p>
<p>end;</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>min:= (a[i,1]);</p>
<p>jm:=1;</p>
<p>for j:=1 to m do do</p>
<p>if min&gt;a[i,j] then</p>
<p>begin</p>
<p>jm:=j;</p>
<p>min:= a[i,j]</p>
<p>end;</p>
<p>a[i,jm]:= a[i,1]</p>
<p>a[i,1]:=min</p>
<p>end;</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>for j:=1 to m do</p>
<p>write(a[i,j]:4);</p>
<p>writeln</p>
<p>end;</p>
<p>end.</p>
<p><strong>Este dată matricea N x M, alcătuită din litere latine. De aranjat fiecare şir în ordine alfabetică.</strong></p>
<p>Program P7_4;</p>
<p>Const t;100; s;100;</p>
<p>Var A:array [1..t,1..s] of integer;</p>
<p>n,m,i,j,k : integer;</p>
<p>temp:char;</p>
<p>begin</p>
<p>write(&#8216;Introduceţi mărimea şirului n=&#8217;);</p>
<p>readln(n);</p>
<p>writeln(&#8216;Introduceţi mărimea şirului m=&#8217;);</p>
<p>readln(m);</p>
<p>writeln(’Introduceţi’,m*n, ’litere’);</p>
<p>for i:=1 to n do</p>
<p>for j:=1 to m do</p>
<p>read(a[i,j]);</p>
<p>for i:=1 to n do</p>
<p>begin</p>
<p>for k:=1 to m-1 do</p>
<p>for j:=k to m do</p>
<p>if a[i,k]&gt;a[i,j] then</p>
<p>begin</p>
<p>temp:= a[i,k]</p>
<p>a[i,k]:=a[i,j]</p>
<p>a[i,j]:=temp;</p>
<p>end;</p>
<p>end;</p>
<p>fpr i:=1 to n do</p>
<p>begin</p>
<p>for j:=1 to m do</p>
<p>write(a[i,j]);</p>
<p>writeln</p>
<p>end;</p>
<p>end.</p>
<p><strong> </strong></p>
<p><strong>Este dată matricea pătrată N x M, alcătuită din numere naturale, de a o întoarce la 90 de grade împotriva acelor ceasornice şi a extrage rezultatele pe ecran. </strong></p>
<p>Program P7_5;</p>
<p>Const t;100; s;100;</p>
<p>Var A:array [1..t,1..s] of integer;</p>
<p>m,i,j,k : integer;</p>
<p>temp:char;</p>
<p>begin</p>
<p>write(&#8216;Introduceţi lungimea matricei m=&#8217;);</p>
<p>readln(m);</p>
<p>writeln(&#8216;Matricea de ieşire&#8217;);</p>
<p>k:=1;</p>
<p>for i:=1 to m do</p>
<p>for j:=1 to m do</p>
<p>begin</p>
<p>a[i,j]:=k;</p>
<p>k:=k+1;</p>
<p>if j&lt;m then write(a[i,j]:4)</p>
<p>else writeln(a[i,j]:4)</p>
<p>end;</p>
<p>writeln(’Matricea după întoarcere la 90 de grade’’);</p>
<p>for i:=1 to m do</p>
<p>for j:=1 to m do</p>
<p>begin</p>
<p>b[i,j]:=a[j,m+1-i];</p>
<p>if j&lt;m then write(b[i,j]:4)</p>
<p>else writeln(b[i,j]:4)</p>
<p>end;</p>
<p>end.</p>
<p><strong>Tema 8</strong></p>
<p><strong>Dgukoolfju</strong></p>
<p>Program P8_1;</p>
<p>Var f1,f2 : text;</p>
<p>X : char;</p>
<p>Begin</p>
<p>assign(f1,’c\e\one’);</p>
<p>reset(f1);</p>
<p>assign(f2,’’);</p>
<p>while not eof(f1) do</p>
<p>begin</p>
<p>read(1,x);</p>
<p>write(f2,x+’’+x)</p>
<p>end;</p>
<p>writeln;</p>
<p>close(f1);</p>
<p>close(f2)</p>
<p>end.</p>
<p><strong>Mhfzkrdfdf</strong></p>
<p>Program P8_2;</p>
<p>Var f1 : text;</p>
<p>x : char;</p>
<p>k : integer;</p>
<p>Begin</p>
<p>k:=0;</p>
<p>assign(f1, ’two’);</p>
<p>reset(f1);</p>
<p>while not eof(f1) do</p>
<p>begin</p>
<p>read(f1,x);</p>
<p>if (x=’a’) or (x=’A’) then k:=k+1;</p>
<p>end;</p>
<p>writeln(‚Numărul de litere A:’, K);</p>
<p>closes(f1);</p>
<p>end.</p>
<p><strong>Dtjuetdlofz</strong></p>
<p>Program P8_3;</p>
<p>Var f1 : file of char;</p>
<p>f2 : text;</p>
<p>x : char;</p>
<p>i : integer;</p>
<p>begin</p>
<p>assign(f1, ’two’);</p>
<p>reset(f1);</p>
<p>assign(f2, ’’);</p>
<p>rewrite(f2);</p>
<p>for i:=1 to 2 do</p>
<p>begin</p>
<p>while not eof(f1) do</p>
<p>begin</p>
<p>read(f1,x);</p>
<p>write(f2,x);</p>
<p>end;</p>
<p>writeln;</p>
<p>seek(f1,0)</p>
<p>end;</p>
<p>writeln;</p>
<p>closes(f1);</p>
<p>closes(f2);</p>
<p>end.</p>
<p><strong>K,tzibnhggg</strong></p>
<p>Program P8_4;</p>
<p>Var f1 : file of char;</p>
<p>f2 : text;</p>
<p>x : char;</p>
<p>l,i : integer;</p>
<p>begin</p>
<p>assign(f1, ’two’);</p>
<p>reset(f1);</p>
<p>assign(f2, ’’);</p>
<p>rewrite(f2);</p>
<p>l:=filesize(f1);</p>
<p>while not eof(f1) do</p>
<p>begin</p>
<p>read(f1,x);</p>
<p>write(f2,x)</p>
<p>end;</p>
<p>writeln;</p>
<p>for i:=l-1 downto 0 do</p>
<p>begin</p>
<p>seek(f1,i);</p>
<p>read(f1,x);</p>
<p>write(f2,x)</p>
<p>end;</p>
<p>writeln;</p>
<p>closes(f1);</p>
<p>closes(f2);</p>
<p>end.</p>
<p><strong>Khfkdhztswreh</strong></p>
<p>Program P8_5;</p>
<p>f2 : text;</p>
<p>x : char;</p>
<p>l,i : integer;</p>
<p>begin</p>
<p>assign(f1, ’two’);</p>
<p>reset(f1);</p>
<p>assign(f2, ’’);</p>
<p>rewrite(f2);</p>
<p>k:=-1;</p>
<p>while note of(f1) do</p>
<p>begin</p>
<p>k:=k+1;</p>
<p>read(f1,x);</p>
<p>if x&lt;&gt;’.’ then write(f2,x)</p>
<p>else</p>
<p>begin</p>
<p>seek(f1,k+1);</p>
<p>write(f2,x);</p>
<p>trunca(f1)</p>
<p>end;</p>
<p>end;</p>
<p>writeln;</p>
<p>closes(f1);</p>
<p>closes(f2);</p>
<p>end.</p>
<p><strong>Tema 9</strong></p>
<p><strong> </strong></p>
<p><strong>Jhdkzustz</strong></p>
<p>Program P9_1;</p>
<p>const u=100;</p>
<p>Var n,m : integer;</p>
<p>t : array of integer;</p>
<p>procedure tab_in(var l,k : integer);</p>
<p>var i,j : integer;</p>
<p>begin</p>
<p>for i:=1 to l do</p>
<p>beginn</p>
<p>for j:=1 to k do</p>
<p>begin</p>
<p>’);</p>
<p>read(t)</p>
<p>end;</p>
<p>writeln</p>
<p>end</p>
<p>end;</p>
<p>procedure tab_out(var l,k : integer);</p>
<p>var i,j : integer;</p>
<p>begin</p>
<p>for i:=1 to l do</p>
<p>begin</p>
<p>for j:=1 to k do</p>
<p>write(t);</p>
<p>writeln</p>
<p>end</p>
<p>end;</p>
<p>begin</p>
<p>writeln(’Introduceţi mărimea matricii N x M’);</p>
<p>write(’n=’);</p>
<p>read(n);</p>
<p>write(’m=’);</p>
<p>read(m);</p>
<p>tab_in(n,m);</p>
<p>writeln(’Matricea’,m,’x’,m);</p>
<p>tab_out(n,m)</p>
<p>end.</p>
<p><strong>Jhzdddddd</strong></p>
<p>Program P9_2;</p>
<p>var n,m : integer;</p>
<p>function min(i,j : integer) : integer;</p>
<p>begin</p>
<p>if i&lt;j then min:=i;</p>
<p>else min:=j;</p>
<p>end;</p>
<p>begin</p>
<p>writeln(’Introduceţi două numere întregi’);</p>
<p>readln(i,j);</p>
<p>writeln(’min=’,min(i,j));</p>
<p>end.</p>
<p><strong>Fgjjjjjjjj</strong></p>
<p>Program P9_3;</p>
<p>var n : longing;</p>
<p>k : integer;</p>
<p>function min(i,j : longing) : integer;</p>
<p>var s : integer;</p>
<p>begin</p>
<p>s:=0;</p>
<p>repeat</p>
<p>s:=s+n mod 10;</p>
<p>n:=n div 10</p>
<p>until n=0;</p>
<p>num:=s;</p>
<p>end;</p>
<p>begin</p>
<p>write(’Introduceţi un număr intreg n=’);</p>
<p>readln(n);</p>
<p>k:=num(n);</p>
<p>writeln(’Suma cifrelor lor asemănătoare lui’,k);</p>
<p>end.</p>
<p><strong>Ffjjjjjjjjj</strong></p>
<p>Program P9_4;</p>
<p>var a,b,d,k,x,y : integer;</p>
<p>function min(i,j : longing) : integer;</p>
<p>begin</p>
<p>if if i&lt;j then min:=i;</p>
<p>else min:=j;</p>
<p>end;</p>
<p>function min(i,j : longing) : integer;</p>
<p>begin</p>
<p>if if i&lt;j then max:=i;</p>
<p>else max:=j;</p>
<p>end;</p>
<p>begin</p>
<p>repeat</p>
<p>write(’Introduceţi două numere intreg ’);</p>
<p>readln(a,b);</p>
<p>until (a&gt;0) and (b&gt;0);</p>
<p>k:=1;</p>
<p>x:=min(a,b);</p>
<p>y:=max(a,b);</p>
<p>while x&lt;&gt;y do</p>
<p>begin</p>
<p>k:=k+1;</p>
<p>d:=y-x;</p>
<p>y:=max(d,x);</p>
<p>x:=min(d,x);</p>
<p>end;</p>
<p>writeln(’Numărul la pătrat căutat :’,k);</p>
<p>end.</p>
<p><strong>Jhgggggggg</strong></p>
<p>Program P9_5;</p>
<p>var i : integer;</p>
<p>function fib(i,j : integer) : integer;</p>
<p>begin</p>
<p>if i=j then fib:=0;</p>
<p>if (i=1) or (i=2) then fib:=1</p>
<p>else</p>
<p>fib:=fib(i-1)+fib(i-2)</p>
<p>end;</p>
<p>begin</p>
<p>repeat</p>
<p>write(’Introduceţi în ordine numerele întregi i=’);</p>
<p>readln(i);</p>
<p>until i&gt;=;</p>
<p>writeln(i:5,’-Numărul fib corect’,fib(i));</p>
<p>end.</p>
<p><strong>Tema 10</strong></p>
<p><strong>Fjjjjjjjjjjjj</strong></p>
<p>Program P10_1;</p>
<p>uses crt;</p>
<p>var i : integer;</p>
<p>begin</p>
<p>textbackground(2);</p>
<p>clrscr;</p>
<p>delay(1000);</p>
<p>textcolor(0);</p>
<p>for i:=1 to 11 do</p>
<p>begin</p>
<p>textcolor(i+4);</p>
<p>writeln;</p>
<p>write(’’:2*i);</p>
<p>write(’One moment,please&#8230;’);</p>
<p>delay(1500);</p>
<p>end;</p>
<p>readln;</p>
<p>textbackground(1);</p>
<p>clrscr</p>
<p>end.</p>
<p><strong>Ddddtttttttt</strong></p>
<p>Program P10_2;</p>
<p>uses crt;</p>
<p>var i,x : integer;</p>
<p>begin</p>
<p>textbackground(1);</p>
<p>clrscr;</p>
<p>x:=1;</p>
<p>delay(1000);</p>
<p>textcolor(0);</p>
<p>for i:=1 to 11 do</p>
<p>begin</p>
<p>if (i&lt;&gt;1) and (i&lt;&gt;9) then textbackground(i);</p>
<p>else textbackground(i+4);</p>
<p>window(x,9,x+5,14);</p>
<p>clrscr;</p>
<p>writeln;</p>
<p>writeln(’?’);</p>
<p>delay(1500);</p>
<p>x:=x+7;</p>
<p>end;</p>
<p>readln;</p>
<p>textbackground(1);</p>
<p>clrscr</p>
<p>end.</p>
<p><strong>Kkkkkkkkkkkkk</strong></p>
<p>Program P10_3;</p>
<p>uses crt;</p>
<p>var i : integer;</p>
<p>begin</p>
<p>textbackground(2);</p>
<p>clrscr;</p>
<p>delay(1000);</p>
<p>for i:=1 to 15 do</p>
<p>begin</p>
<p>textcolor(1+random(15));</p>
<p>window(2*i,i,80-2*i,26-i);</p>
<p>clrscr;</p>
<p>delay(1500);</p>
<p>end;</p>
<p>readln;</p>
<p>textbackground(2);</p>
<p>clrscr</p>
<p>end.</p>
<p><strong>Lllllllll</strong></p>
<p>Program P10_4;</p>
<p>uses crt;</p>
<p>var x,y,i : integer;</p>
<p>begin</p>
<p>textbackground(2);</p>
<p>clrscr;</p>
<p>x:=5;</p>
<p>y:=10;</p>
<p>delay(1000);</p>
<p>for i:=1 to 15 do</p>
<p>begin</p>
<p>x:=x+2;</p>
<p>textcolor(9);</p>
<p>window(x,y,x+18,y+7);</p>
<p>clrscr;</p>
<p>sound(300);</p>
<p>nosound;</p>
<p>delay(500);</p>
<p>nosound;</p>
<p>textcolor(2);</p>
<p>clrscr;</p>
<p>delay(300);</p>
<p>end;</p>
<p>readln;</p>
<p>clrscr</p>
<p>end.</p>
<p><strong>Ttttttttt</strong></p>
<p>Program P10_5;</p>
<p>uses crt;</p>
<p>var x,y,i : integer;</p>
<p>begin</p>
<p>textbackground(2);</p>
<p>clrscr;</p>
<p>x:=30;</p>
<p>y:=2;</p>
<p>delay(1000);</p>
<p>for i:=1 to 15 do</p>
<p>begin</p>
<p>y:=y+1;</p>
<p>textcolor(9);</p>
<p>window(x,y,x+18,y+7);</p>
<p>clrscr;</p>
<p>sound(300);</p>
<p>delay(500);</p>
<p>nosound;</p>
<p>textcolor(2);</p>
<p>clrscr;</p>
<p>delay(300);</p>
<p>end;</p>
<p>readln;</p>
<p>clrscr</p>
<p>end.</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=181</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>68 de pagini de probleme rezolvate si teorie in Pascal</title>
		<link>http://resurse-educationale.uv.ro/?p=154</link>
		<comments>http://resurse-educationale.uv.ro/?p=154#comments</comments>
		<pubDate>Thu, 17 Mar 2011 08:47:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Teze]]></category>
		<category><![CDATA[algoritmi]]></category>
		<category><![CDATA[probleme]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[programe rezolvate]]></category>
		<category><![CDATA[teza]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=154</guid>
		<description><![CDATA[1.1. GHID DE LUCRU Rezolvarea unei probleme cu ajutorul calculatorului presupune parcurgerea următoarelor faze: ‑ precizarea completă a problemei de rezolvat; ‑ proiectarea algoritmului de rezolvare a problemei; ‑ programarea propriu‑zisă (implementarea); ‑ testarea programului obţinut; ‑ exploatarea şi întreţinerea &#8230; <a href="http://resurse-educationale.uv.ro/?p=154">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><em><a rel="attachment wp-att-155" href="http://resurse-educationale.uv.ro/?attachment_id=155"><br />
</a></em></p>
<p><em>1.1. GHID DE LUCRU </em></p>
<p>Rezolvarea unei probleme cu ajutorul calculatorului presupune parcurgerea următoarelor faze:</p>
<p>‑ precizarea completă a problemei de rezolvat;</p>
<p>‑ proiectarea algoritmului de rezolvare a problemei;</p>
<p>‑ programarea propriu‑zisă (implementarea);</p>
<p>‑ testarea programului obţinut;</p>
<p>‑ exploatarea şi întreţinerea programului.</p>
<p>Aceste faze constituie ciclul de viaţă al programului.</p>
<p>De foarte multe ori, atunci când beneficiarul discută cu executantul despre problema care trebuie rezolvată, acesta dă un enunţ vag, incomplet, dacă nu chiar inexact sau contradictoriu, pentru problema de rezolvat. Urmează mai multe discuţii, uneori întinse în timp, în urma cărora se ajunge la un enunţ relativ complet şi exact al problemei. Întrucât problemele propuse sunt luate din domeniul matematicii sarcina noastră va fi mult mai uşoară.</p>
<p>După enunţarea problemei urmează modelarea matematică şi căutarea unei metode de rezolvare a ei. Uneori sunt posibile mai multe moduri de rezolvare, caz în care se va alege metoda considerată cea mai potrivită scopului urmărit. Modelarea matematică şi alegerea unei metode de rezolvare se îmbină aproape întotdeauna cu conceperea algoritmului, fiind greu să se separe una de cealaltă. Activităţile de mai sus constituie ceea ce numim proiectarea programului.</p>
<p>Pe toată durata proiectării trebuie menţionate în scris toate deciziile luate, întrucât este posibil ca ulterior să fie necesară o reproiectare şi deci, să se revină asupra acestor decizii. Documentaţia realizată este necesară în primul rând pentru următoarea fază a ciclului de viaţă al programului, implementarea. De asemenea, în faza de întreţinere a programului este posibilă modificarea unor module, modificare în care sunt necesare să fie cunoscute şi aceste decizii. E bine ca proiectarea să fie astfel făcută încât să permită o întreţinere cât mai uşoară.  Faza următoare, implementarea sau codificarea, constă în traducerea algoritmului într‑un limbaj de programare. Evident, prima decizie ce trebuie luată constă în alegerea limbajului de programare în care va fi scris programul. În cele ce urmează vom folosi în acest scop limbajul Pascal. De multe ori se vor folosi mai multe limbaje pentru această activitate. De exemplu, pot exista unele module a căror scriere se poate face numai în limbajul de asamblare. Urmează testarea programului elaborat, care uneori pune în evidenţă erori grave de programare, erori care au dus în unele situaţii la refacerea (parţială sau integrală) a activităţilor anterioare. Sigur că este de dorit să nu se ajungă la astfel de situaţii şi, dacă proiectarea şi implementarea au fost făcute corect, în faza de testare nu ar trebui să întâlnim erori.</p>
<p>Următoarea fază din viaţa programului constă în exploatarea propriu-zisă a acestuia, fază în care execuţia se face cu date reale. Această activitate se întinde în timp pe mai mulţi ani şi cere adeseori schimbări în program, motiv pentru care este cunoscută sub numele de întreţinerea programului. Este faza cea mai costisitoare şi cea mai importantă din viaţa unui produsul real. Toată activitatea de realizare a programului trebuie să ţină seama de acest fapt şi programul să fie astfel conceput încât să se permită modificări în ceea ce face programul cu un număr minim de modificări în textul acestuia. Documentarea programului presupune elaborarea unor materiale scrise în care se precizează toate informaţiile utile despre programul realizat. Pentru proiectarea algoritmilor vom folosi limbajul Pseudocod. Avantajele folosirii acestui limbaj pentru proiectarea algoritmilor constau în faptul că permit programatorului să-şi îndrepte complet atenţia asupra logicii rezolvării problemei şi să uite de restricţiile impuse de limbajul de programare şi calculatorul folosit. În această fază este necesară o analiză atentă a problemei în vederea găsirii unui algoritm corect proiectat.</p>
<p>De asemenea, proiectarea algoritmului permite evitarea duplicării unui grup de instrucţiuni în mai multe părţi ale programului. Identificarea unui astfel de grup permite definirea lui ca un singur subalgoritm şi folosirea acestui subalgoritm ori de câte ori este necesar.</p>
<p>În descrierea unui algoritm deosebim următoarele activităţi importante:</p>
<p>- specificarea problemei;</p>
<p>- descrierea metodei alese pentru rezolvarea problemei;</p>
<p>- precizarea denumirilor şi semnificaţiilor variabilelor folosite;</p>
<p>- descrierea algoritmului propriu-zis.</p>
<p>Astfel, dacă ni se cere să calculăm radicalul de ordinul 2 din <em>x</em>, în partea de specificare a problemei vom menţiona:</p>
<p>Se dă un număr real nenegativ, notat prin <em>x</em>.</p>
<p>Se cere să găsim un alt număr pozitiv <em>r</em> astfel încât <em>r</em><sup>2</sup>=<em>x</em>.</p>
<p>Pentru un informatician este clar că un astfel de număr nu se poate găsi în general prin nici un procedeu finit. Este însă posibil să găsim o aproximare oricât de bună a lui <em>r</em>. Deci specificarea făcută nu este corectă, neputând găsi un algoritm care să rezolve problema în forma enunţată. Vom modifica această specificaţie, cerând să se calculeze aproximativ <em>r</em> cu o eroare ce nu depăşeşte un număr real <em>eps</em> oricât de mic.</p>
<p>Specificaţia problemei este:</p>
<p><em>DATE eps,x;                                                                                                    {eps,xR,  eps&gt;0 şi x0}</em></p>
<p><em> REZULTATE r;                                                                                                          {r-rad(x)&lt;eps}</em></p>
<p>unde prin <em>rad</em>(<em>x</em>) am notat radicalul de ordinul 2 din <em>x</em> definit în matematică.</p>
<p>Urmează să precizăm metoda de rezolvare a problemei. Se ştie că există cel puţin două posibilităţi de a calcula pe <em>r</em>:</p>
<p>- ca limită a unui şir (definit printr-o relaţie de recurenţă) convergent la <em>r</em>;</p>
<p>- prin rezolvarea ecuaţiei <em>r</em><sup>2</sup>=<em>x</em>.</p>
<p>Precizăm că-l vom calcula pe <em>r</em> rezolvând ecuaţia <em>r</em><sup>2</sup>=<em>x</em>. Dar şi rezolvarea acestei ecuaţii se poate face prin mai multe metode. Decidem că o vom rezolva prin metoda njumătăţirii. Această metodă constă în njumătăţirea repetată a intervalului [<em>a,b</em>] care conţine rădăcina <em>r</em> la intervalul [<em>a',b'</em>], care este jumătatea stângă, sau jumătatea dreaptă a intervalului [<em>a,b</em>], cea care conţine rădăcina.</p>
<p>Variabilele folosite în descrierea algoritmului sunt:</p>
<p>- <em>a</em> şi <em>b</em> = capetele intervalului în care se află rădăcina;</p>
<p>- <em>m</em> mijlocul intervalului (<em>a,b</em>). În momentul în care <em>b-a&lt;eps,</em></p>
<p><em>m</em> va fi chiar valoarea căutată pentru <em>r</em>.</p>
<p>Algoritmul propriu-zis este descris în continuare:</p>
<p><em>*Iniţializează pe a şi b;</em></p>
<p><em> REPETĂ</em></p>
<p><em> FIE m:=(a+b)/2; </em></p>
<p><em> * Dacă rădăcina se află în [a,m] atunci b:=m altfel a:=m.</em></p>
<p><em> PNĂCND b-a&lt;eps SF-REPETĂ</em></p>
<p><em> FIE r:=(a+b)/2;</em></p>
<p><em> </em></p>
<p>În textul de mai sus apar două propoziţii nestandard care sugerează însă foarte bine ce acţiuni trebuiesc întreprinse. Prima stabileşte intervalul iniţial în care se află rădăcina, care depinde de mărimea lui <em>x</em>: (<em>x</em>,1) când <em>x</em> este mai mic decât 1 sau (1,<em>x</em>) în caz contrar. Deci ea se va transcrie în propoziţia standard</p>
<p><em> DACĂ x&lt;1 ATUNCI ATRIBUIE  a:=x;  b:=1</em></p>
<p><em> ALTFEL ATRIBUIE  a:=1;  b:=x</em></p>
<p><em> SF-DACĂ</em></p>
<p>A doua propoziţie înjumătăţeşte intervalul. Condiţia ca rădăcina să se afle în jumătatea stângă a intervalului este (<em>a</em><sup>2</sup>-<em>x</em>)*(<em>m</em><sup>2</sup>-<em>x</em>)&lt;0. Se ajunge la următoarea variantă finală:</p>
<p><em>ALGORITMUL RADICAL ESTE:                                                       {Calculează radical din x}</em></p>
<p><em> DATE eps,x;                                                                                                     {eps,xR, eps&gt;0 şi x0}</em></p>
<p><em> DACĂ x&lt;1 ATUNCI FIE  a:=x;  b:=1                                                    {Iniţializează pe a şi b}</em></p>
<p><em> ALTFEL FIE  a:=1;  b:=x </em></p>
<p><em> SF-DACĂ</em></p>
<p><em> REPETĂ</em></p>
<p><em> DACĂ (a<sup>2</sup>-x)*(m<sup>2</sup>-x)&lt;0 ATUNCI b:=m                                                   {rădăcina în stânga}</em></p>
<p><em> ALTFEL a:=m                                                                       {rădăcina în dreapta}</em></p>
<p><em> SF-DACĂ</em></p>
<p><em> PNĂCND b-a&lt;eps SF-REPETĂ</em></p>
<p><em> FIE r:=(a+b)/2;</em></p>
<p><em> REZULTATE r;                                                                                                          {r-rad(x)&lt;eps}</em></p>
<p><em> SF-ALGORITM</em></p>
<p><em> </em></p>
<p>Programul Pascal corespunzător este dat în continuare.</p>
<p>PROGRAM RADICAL;                                                                {Programul 1.1. Calculează radical din x}</p>
<p>VAR eps,                                                                                               {eps= precizia cu care se calculează}</p>
<p>x,                                                                                                                       {radical din x, eps&gt;0 si x&gt;=0}</p>
<p>r,                                                                                                                                 {valoarea radicalului x}</p>
<p>a,b,                                                                                                   {capetele intervalului ce conţine pe r}</p>
<p>m : REAL;                                                                                                           {mijlocul intervalului [a,b]}</p>
<p>BEGIN</p>
<p>WRITELN(&#8216;Se calculează radical din x cu precizia eps:&#8217;);</p>
<p>WRITE(&#8216;eps=&#8217;);   READLN(eps);</p>
<p>WRITE(&#8216; x =&#8217;);   READLN(x);</p>
<p>IF x&lt;1 THEN BEGIN a:=x;  b:=1 END                                                                     {Iniţializează pe a si b}</p>
<p>ELSE BEGIN a:=1;  b:=x END;</p>
<p>REPEAT</p>
<p>m:=(a+b)/2;</p>
<p>IF (a*a‑x)*(m*m‑x)&lt;0</p>
<p>THEN b:=m                                                                                                       {rădăcina în stânga}</p>
<p>ELSE a:=m;                                                                                                       {rădăcina in dreapta}</p>
<p>UNTIL b‑a&lt;eps;</p>
<p>r:=(a+b)/2;</p>
<p>WRITELN;  WRITELN;</p>
<p>WRITELN(&#8216;Radical(&#8216;,x:6:1,&#8217;) = &#8216;,r:6:3);                                                                                     {r‑rad(x)&lt;eps}</p>
<p>READLN</p>
<p>END.</p>
<p><em>1.2. NUMERE PITAGORICE</em>.</p>
<p>Numerele <em>a,b,c</em>, se numesc pitagorice dacă</p>
<p>Specificarea problemei este:</p>
<p><em>DATE n;                                                                               {nN; pentru n&lt;12 nu există triplete}</em></p>
<p><em> REZULTATE toate tripletele de numere pitagorice (a,b,c) cu proprietatea</em></p>
<p><em> 0&lt;a&lt;b&lt;c şi a+b+cn.</em></p>
<p>Vom nota prin <em>S</em> suma <em>a+b+c</em>. Se ştie că (3,4,5) este primul triplet de numere pitagorice. În acest caz <em>S</em> ia valori de la 12 la <em>n</em>. Întrucât  <em>3a&lt;S</em> variabila <em>a</em> ia valori de la 3 la <em>S</em>/3. Apoi 2<em>b</em>&lt;<em>S-a</em> deci <em>b</em> va lua valori de la <em>a+1</em> la (<em>S-a</em>)/2. Algoritmul pentru rezolvarea problemei este dat în continuare :</p>
<p><em>Algoritmul NRPITAGORICE este :</em></p>
<p><em> Date n;                                                                                                {nN; pentru n&lt;12 nu există triplete}</em></p>
<p><em> Dacă n&lt;12</em></p>
<p><em> atunci Tipăreşte &#8220;Nu există numerele cerute&#8221;</em></p>
<p><em> altfel Pentru S=12,n execută</em></p>
<p><em> Pentru a=3,S/3 execută</em></p>
<p><em> Pentru b=a+1,(S-a)/2 execută</em></p>
<p><em> Fie c:=S-a-b;</em></p>
<p><em> Dacă c=a+b atunci Tipăreşte(a,b,c) Sf-dacă</em></p>
<p><em> Sf-pentru</em></p>
<p><em> Sf-pentru</em></p>
<p><em> Sf-pentru </em></p>
<p><em> Sf-dacă</em></p>
<p><em>Sf-algoritm.</em></p>
<p><em> </em></p>
<p>Programul Pascal corespunzător este dat în continuare.</p>
<p>PROGRAM  NRPITAGORICE;                                                         {Programul 1.1.2. Numere pitagorice}</p>
<p>VAR n,                                                                                                                             {    nN;  a+b+cn        }</p>
<p>S,                                                                                                                                   {    S  =  a+b+c          }</p>
<p>a,b,c,                                                                                                   {(a,b,c) triplet de numere pitagorice}</p>
<p>{  0 &lt; a &lt; b &lt; c          }</p>
<p>k     : integer;                                                                                                                                    { contor }</p>
<p>BEGIN</p>
<p>WRITELN(&#8216;Se tipăresc tripletele(a,b,c) de numere pitagorice&#8217;);</p>
<p>WRITELN(&#8216;cu proprietatea: a+b+c&lt;=n, pentru n dat&#8217;);</p>
<p>WRITE(&#8216;Daţi valoarea lui n:&#8217;); READLN(n);</p>
<p>For k:=1 to 4 do writeln;</p>
<p>k:=0;</p>
<p>IF n&lt;12</p>
<p>THEN WRITELN(&#8216;Nu exista numerele cerute&#8217;)</p>
<p>ELSE FOR S:=12 TO n DO</p>
<p>FOR a:=3 TO S DIV 3 DO</p>
<p>FOR b:=a+1 TO (S‑a) DIV 2 DO</p>
<p>BEGIN</p>
<p>c:=S‑a‑b;</p>
<p>IF c*c=a*a+b*b THEN BEGIN</p>
<p>k:=k+1;</p>
<p>WRITELN(&#8216;Tripletul (a,b,c)&#8217;,k:3,&#8217;= &#8216;,a:3, b:3,c:3);</p>
<p>END {IF}</p>
<p>END;</p>
<p>READLN;</p>
<p>END.</p>
<p><em><a rel="attachment wp-att-155" href="http://resurse-educationale.uv.ro/?attachment_id=155">68 de pagini de probleme rezolvate si teorie in Pascal</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=154</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sisteme de numeraţie. Congruenţe. Rezolvarea problemelor în limbajul de programare Pascal</title>
		<link>http://resurse-educationale.uv.ro/?p=146</link>
		<comments>http://resurse-educationale.uv.ro/?p=146#comments</comments>
		<pubDate>Thu, 17 Mar 2011 08:40:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Informatica aplicata]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Teze]]></category>
		<category><![CDATA[congruente]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[reprezentarea numerelor]]></category>
		<category><![CDATA[sisteme de numereaţie]]></category>
		<category><![CDATA[teza]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=146</guid>
		<description><![CDATA[În calculatoarele digitale informaţia de orice categorie este reprezentată, stocată şi prelucrată în formă numerică. Numerele se reprezintă prin simboluri elementare numite cifre. Totalitatea regulilor de reprezentare a numerelor împreună cu mulţimea cifrelor poartă denumirea de sistem de numeraţie. Există &#8230; <a href="http://resurse-educationale.uv.ro/?p=146">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>În calculatoarele digitale informaţia de orice categorie este reprezentată, stocată şi prelucrată în formă numerică. Numerele se reprezintă prin simboluri elementare numite <strong>cifre</strong>. <strong>Totalitatea regulilor de reprezentare a numerelor împreună cu mulţimea cifrelor poartă denumirea de <em>sistem de numeraţie</em>.</strong> Există două tipuri de sisteme de numeraţie: <em> sisteme poziţionale de numeraţie şi sisteme nepoziţionale de numeraţie</em>.</p>
<p>Un sistem de numeraţie poziţional este caracterizat de baza sa. Numărul cifrelor defineşte <strong>baza sistemului de numeraţie.</strong> Pentru un sistem de numeraţie poziţional este justă următoarea egalitate:</p>
<p>X(q)=a<sub>n</sub>q<sup>n</sup>+a<sub>n-1</sub>q<sup>n-1</sup>+&#8230;+a<sub>1</sub>q<sup>1</sup>+a<sub>0</sub>q<sup>0</sup>+a<sub>-1</sub>q<sup>-1</sup>+&#8230;+a<sub>-m</sub>q<sup>-m</sup>,          (1)</p>
<p>unde q – baza sistemului poziţional de numeraţie, un număr întreg; X(q) – un număr arbitrar reprezentat în sistemul de numeraţie poziţional cu baza q; a<sub>i</sub> – coeficienţii şirului (cifrele sistemului de numeraţie); n, m – numărul de clase întregi şi fracţionare. În practică se utilizează forma prescurtată de reprezentare a numerelor, adică X(q)=a<sub>n</sub>a<sub>n-1</sub>&#8230;a<sub>1</sub>a<sub>0</sub>a<sub>-1</sub>&#8230;a<sub>-m</sub>.</p>
<p>Egalitatea (1) se utilizează şi pentru conversia numerelor reprezentate într-un sistem poziţional de numeraţie cu baza q în echivalentul său zecimal.</p>
<p>Conversia numărului zecimal X<sub>10</sub> în echivalentul său în baza q se efectuează conform următoarelor reguli:</p>
<p>Întrucât 8=2<sup>3</sup>, conversia <strong>binar – octală</strong> şi <strong>octal – binară</strong> se poate face direct. Orice cifră octală se reprezintă prin trei cifre binare, numită triadă:</p>
<p>0 = 000           4 = 100</p>
<p>1 = 001           5 = 101</p>
<p>2 = 010           6 = 110</p>
<p>3 = 011           7 = 111.</p>
<p>Dacă se consideră un număr octal, pentru conversia în binar se va scrie fiecare cifră octală prin trei cifre binare.</p>
<p>Dacă se consideră un număr binar, pentru conversia în octal se vor grupa cîte trei cifre binare, pornind de la poziţia virgulei spre stînga pentru partea întreagă, respectiv dreapta pentru partea fracţionară, găsind corespondentul octal. Pentru completarea unui grup de trei cifre binare, zerourile din faţa numărului, respectiv după ultima cifră a părţii fracţionare nu modifică semnificaţia numărului.</p>
<p>Într-un mod similar se procedează şi în cazul sistemului hexazecimal, baza căruia 16=2<sup>4</sup>. Orice cifră hexazecimală se reprezintă prin 4 cifre binare, numită tetradă:</p>
<p>0 = 0000               8 = 1000</p>
<p>1 = 0001               9 = 1001</p>
<p>2 = 0010               A = 1010</p>
<p>3 = 0011               B = 1011</p>
<p>4 = 0100               C = 1100</p>
<p>5 = 0101               D = 1101</p>
<p>6 = 0110               E = 1110</p>
<p>7 = 0111               F = 1111.</p>
<p><a rel="attachment wp-att-147" href="http://resurse-educationale.uv.ro/?attachment_id=147">teza_sisteme</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=146</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aplicaţii ale arborilor în programare.</title>
		<link>http://resurse-educationale.uv.ro/?p=134</link>
		<comments>http://resurse-educationale.uv.ro/?p=134#comments</comments>
		<pubDate>Thu, 17 Mar 2011 08:31:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Grafuri]]></category>
		<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[arbori binari]]></category>
		<category><![CDATA[extraşcolar]]></category>
		<category><![CDATA[grafuri]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[teza]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=134</guid>
		<description><![CDATA[Dacă oricare două vîrfuri x, yÎV sînt unite printr-un lanţ simplu unic, atunci orice muchie [x, y]ÎU reprezintă  unicul lanţ dintre  x şi y. Suprimînd muchia [x, y], între x şi y nu va mai exista lanţ, deci graful obţinut &#8230; <a href="http://resurse-educationale.uv.ro/?p=134">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Dacă oricare două vîrfuri x, yÎV sînt unite printr-un lanţ simplu unic, atunci orice muchie [x, y]ÎU reprezintă  unicul lanţ dintre  x şi y. Suprimînd muchia [x, y], între x şi y nu va mai exista lanţ, deci graful obţinut nu va mai fi conex.</p>
<p><em> </em>3 Þ 4</p>
<p>Notăm cu n numărul de vîrfuri şi cu m numărul de muchii din graf.</p>
<p>Pentru a demonstra că orice graf conex minimal are n-1 muchii vom demonstra prin inducţie completă după n că  m £ n-1. Cum în orice graf conex m ³ n-1, deducem m = n-1.</p>
<p>P(1)                 Dacă n = 1, atunci m = 0 Þ  m = n-1.</p>
<p>P(2)                 Dacă n = 2, atunci  m =1 Þ  m = n-1.</p>
<p>P(n)                 Presupunem că într-un graf conex minimal cu cel mult n vîrfuri numărul de muchii este strict mai mic decît numărul de vîrfuri.</p>
<p>P(n+1)              Demonstrăm că într-un graf conex minimal cu n+1 vîrfuri, numărul de muchii este cel mult egal cu n.</p>
<p>Fie G conex minimal cu n+1 vîrfuri şi m muchii. Eliminînd o muchie oarecare din graf obţinem un graf G&#8217; cu m-1 muchii şi două componente conexe C<sub>1</sub> şi C<sub>2</sub> cu n<sub>1</sub>, respectiv n<sub>2</sub> vîrfuri (n<sub>1</sub>+n<sub>2 </sub>= n+1) şi m<sub>1</sub>, respectiv m<sub>2</sub> muchii (m<sub>1</sub>+m<sub>2 </sub>= m-1). Subgrafurile C<sub>1</sub> şi C<sub>2 </sub>sînt conexe minimale, altfel graful G nu ar fi conex minimal. Din ipoteza inductivă rezultă că m<sub>1 </sub>£ n<sub>1</sub>-1, m<sub>2</sub><sub> </sub>£ n<sub>2</sub>-1; dar m<sub>1</sub>+m<sub>2 </sub>= m-1 £ n<sub>1</sub>+n<sub>2 </sub>= n-2 Þ m £ n-1. Deci G conex minimal implică G conex cu n-1 muchii.</p>
<p>4 Þ 5</p>
<p>Fie G un graf conex cu n-1 muchii. Să demonstrăm că G este aciclic.</p>
<p>Presupunem prin reducere la absurd, că graful G conţine un ciclu C format din  vîrfurile v<sub>1</sub>, v<sub>2</sub>, &#8230;, v<sub>k</sub>.</p>
<p>Să considerăm subgraful parţial G<sub>k </sub>= (V<sub>k</sub>, U<sub>k</sub>) constînd  din ciclul C. Deci V<sub>k </sub>= {v<sub>1</sub>, v<sub>2 </sub>,&#8230;, v<sub>k</sub>}, iar U<sub>k </sub>= {[v<sub>1</sub>,v<sub>2</sub>)], [v<sub>2</sub>,v<sub>3</sub>],&#8230;,[v<sub>k-1</sub>,v<sub>k</sub>], (v<sub>k</sub>,v<sub>1</sub>]} (½V<sub>k</sub>½=½U<sub>k</sub>½= k). Dacă  ½V<sub>k</sub>½&lt;½V½, atunci  $v<sub>i</sub>ÎV<sub>k</sub> şi v<sub>k</sub><sub>+</sub><sub>1</sub>ÎV-V<sub>k</sub> astfel încît [v<sub>i</sub>, v<sub>k</sub><sub>+</sub><sub>1</sub>]ÎU, graful G fiind conex.</p>
<p>Construim G<sub>k</sub><sub>+</sub><sub>1 </sub>= (V<sub>k</sub><sub>+</sub><sub>1</sub>, U<sub>k</sub><sub>+</sub><sub>1</sub>) în modul următor: V<sub>k</sub><sub>+</sub><sub>1 </sub>= V<sub>k</sub> È{v<sub>k</sub><sub>+</sub><sub>1</sub>};     U<sub>k</sub><sub>+</sub><sub>1</sub>=U<sub>k</sub>È{[v<sub>i</sub>,v<sub>k</sub><sub>+</sub><sub>1</sub>]} şi ½U<sub>k</sub><sub>+</sub><sub>1</sub>½=½V<sub>k</sub><sub>+</sub><sub>1</sub>½=k+1.</p>
<p>Cît timp k+1 &lt; n, aplicăm acelaşi procedeu pînă cînd obţinem un graf  G<sub>n </sub>= (V, U<sub>n</sub>), cu ½U<sub>n</sub>½= n, U<sub>n </sub>Í U; deci ½U½ ³ n, contradicţie cu ipoteza ½U½= n-1.</p>
<p>5 Þ 6</p>
<p>Presupunem că graful G este aciclic cu n-1 muchii, să demonstrăm că G este aciclic maximal.</p>
<p>Fie C<sub>1</sub>, C<sub>2</sub>,&#8230;, C<sub>p</sub> cele p componentele conexe ale grafului G, avînd respectiv n<sub>1</sub>, n<sub>2</sub>,&#8230;, n<sub>p</sub> vîrfuri şi m<sub>1</sub>, m<sub>2</sub>,&#8230;, m<sub>p</sub> muchii fiecare. Evident că n<sub>1</sub>+n<sub>2</sub>+&#8230;+n<sub>p </sub>= n  şi m<sub>1</sub>+m<sub>2</sub>+&#8230;+m<sub>p </sub>= n-1.</p>
<p>Cum graful G este aciclic, deducem că fiecare componentă conexă este un arbore. Deoarece am demonstrat că 1 Þ 5, rezultă că m <sub>i</sub>= n<sub>i</sub>-1, &#8220;iÎ{1, 2, &#8230;, p}. Înlocuind în relaţia de mai sus, obţinem  n-p = n-1 Þ  p = 1, deci G conex. Dacă G este conex şi aciclic, conform definiţiei G este arbore. Dar am demonstrat că 1 Þ 2, deci oricare două vîrfuri din G sînt unite printr-un lanţ simplu. Astfel, adăugînd orice muchie obţinem un ciclu.</p>
<p>6 Þ 1</p>
<p><em> </em>Presupunem că graful G este aciclic, dar dacă am mai adăuga o muchie s-ar obţine un ciclu. Să demonstrăm că G este conex.</p>
<p>Fie u şi v două vîrfuri neadiacente din graf, arbitrar alese. Deoarece adăugînd muchia [u, v] se obţine un ciclu, rezultă că u şi v sînt unite printr-un lanţ ale cărui muchii aparţin grafului G. Cum u,v au fost alese arbitrar, deducem că graful G este conex.</p>
<p>Q.E.D.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>Teorema 2 </strong></p>
<p>Numerele întregi 0 &lt; d<sub>1 </sub>£ d<sub>2 </sub>£ &#8230;£ d<sub>n</sub> (n ³ 2) sînt gradele vîrfurilor unui arbore dacă şi numai dacă d<sub>1</sub>+d<sub>2</sub>+&#8230;+d<sub>n </sub>= 2n-2.</p>
<p><em> </em></p>
<p><em>Demonstraţie</em>:</p>
<p><em>Necesitatea </em> Condiţia este necesară, deoarece orice arbore cu n vîrfuri are n-1 muchii, iar suma gradelor vîrfurilor oricărui graf este de două ori numărul de muchii. Deci d<sub>1</sub>+d<sub>2</sub>+&#8230;+d<sub>n </sub>= 2n-2.</p>
<p><em>Suficienţa</em> Fie 0 &lt; d<sub>1 </sub>£ d<sub>2 </sub>£&#8230;£ d<sub>n</sub> astfel încît d<sub>1</sub>+d<sub>2</sub>+&#8230;+d<sub>n </sub>= 2n-2.</p>
<p>Să demonstrăm că există un arbore cu gradele vîrfurilor d<sub>1</sub>, d<sub>2</sub>,&#8230;, d<sub>n</sub>. Vom proceda prin inducţie.</p>
<p>P(2)                 Dacă d<sub>1</sub>+d<sub>2 </sub>= 2, atunci d<sub>1 </sub>= d<sub>2 </sub>= 1 , arborele fiind cel din figura de mai jos:</p>
<p>Fig. 3</p>
<p>P(n)                 Presupunem acum că proprietatea este adevărată pentru orice secvenţă de n numere naturale 0 &lt; d<sub>1 </sub>£ d<sub>2 </sub>£ &#8230;£ d<sub>n</sub>, astfel încît d<sub>1</sub>+d<sub>2</sub>+&#8230;+d<sub>n </sub>= 2n-2.</p>
<p>P(n+1)             Să demonstrăm că pentru orice secvenţă 0 &lt; d&#8217;<sub>1 </sub>£ d&#8217;<sub>2 </sub>£&#8230;£ d&#8217;<sub>n </sub>£ d&#8217;<sub>n</sub><sub>+</sub><sub>1</sub> astfel încît d&#8217;<sub>1</sub>+d&#8217;<sub>2</sub>+&#8230;+d&#8217;<sub>n</sub><sub>+</sub><sub>1 </sub>= 2n, există un arbore cu n+1 vîrfuri cu secvenţa gradelor d&#8217;<sub>1</sub>, d&#8217;<sub>2</sub>, &#8230;, d&#8217;<sub>n</sub><sub>+</sub><sub>1</sub>.</p>
<p>Observăm că există măcar un nod terminal x<sub>1</sub> cu gradul d&#8217;<sub>1</sub>=1, altfel dacă  d<sub>i </sub>³ 2,&#8221;iÎ{1, 2,&#8230;, n+1} Þ d&#8217;<sub>1</sub>+d&#8217;<sub>2</sub>+&#8230;+d&#8217;<sub>n</sub><sub>+</sub><sub>1 </sub>³ 2(n+1), ceea ce contrazice ipoteza. În mod analog, observăm că există măcar un nod neterminal  x<sub>n</sub><sub>+</sub><sub>1</sub>, cu gradul d&#8217;<sub>n</sub><sub>+</sub><sub>1 </sub>&gt; 1, altfel dacă d&#8217;<sub>i </sub>= 1,&#8221;iÎ{1, 2, &#8230;, n+1} Þ d&#8217;<sub>1</sub>+d&#8217;<sub>2</sub>+&#8230;+d&#8217;<sub>n</sub><sub>+</sub><sub>1 </sub>= n+1 &lt; 2n .</p>
<p>Să considerăm următoarea secvenţă de n numere întregi d&#8217;<sub>2</sub>,&#8230;, d&#8217;<sub>n</sub>, d&#8217;<sub>n</sub><sub>+</sub><sub>1</sub>-1 cu proprietatea că d&#8217;<sub>2</sub>+&#8230;+d&#8217;<sub>n</sub>+d&#8217;<sub>n</sub><sub>+</sub><sub>1 </sub>= 2n-2. Din ipoteza inductivă există un arbore A<sub>n</sub> cu n vîrfuri şi secvenţa gradelor d&#8217;<sub>2</sub>,&#8230;, d&#8217;<sub>n</sub>, d&#8217;<sub>n</sub><sub>+</sub><sub>1</sub>-1. Adăugăm la arborele A<sub>n</sub> un vîrf pe care îl unim printr-o muchie cu vîrful avînd gradul d&#8217;<sub>n</sub><sub>+</sub><sub>1</sub>-1. Obţinem un arbore A<sub>n</sub><sub>+</sub><sub>1</sub> cu gradele vîrfurilor d&#8217;<sub>1</sub>, d&#8217;<sub>2</sub>,&#8230;, d&#8217;<sub>n</sub><sub>+</sub><sub>1</sub>.</p>
<p>Q.E.D.</p>
<p>Demonstraţia acestei teoreme oferă şi o soluţie constructivă pentru obţinerea unui arbore cu secvenţa gradelor dată.</p>
<p>Vom reţine gradele vîrfurilor într-un vector d de dimensiune n, ordonat crescător, cu suma componentelor egală cu 2n-2.</p>
<p>Arborele va fi reprezentat prin matricea muchiilor, o matrice a cu două linii şi n-1 coloane, în care pentru fiecare muchie din arbore vom reţine extremităţile.</p>
<p>Spre deosebire de ideea din demonstraţie, pentru a conserva ordinea în vectorul d, la fiecare pas al algoritmului gradul care va fi decrementat va fi primul grad mai mare ca 1 şi nu ultimul.</p>
<p><a rel="attachment wp-att-135" href="http://resurse-educationale.uv.ro/?attachment_id=135">Capit1</a></p>
<p><a rel="attachment wp-att-136" href="http://resurse-educationale.uv.ro/?attachment_id=136">Capit2_partea1</a></p>
<p><a rel="attachment wp-att-137" href="http://resurse-educationale.uv.ro/?attachment_id=137">Capit2_partea2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=134</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analiza timpului de calcul.</title>
		<link>http://resurse-educationale.uv.ro/?p=130</link>
		<comments>http://resurse-educationale.uv.ro/?p=130#comments</comments>
		<pubDate>Thu, 17 Mar 2011 08:26:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Teze]]></category>
		<category><![CDATA[algoritm]]></category>
		<category><![CDATA[analiza]]></category>
		<category><![CDATA[calcul]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[teza]]></category>
		<category><![CDATA[timp]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=130</guid>
		<description><![CDATA[Ne propunem să lămurim modul în care se estimează timpul de calcul necesar unui program pentru a furniza rezultatul. Să considerăm, una din cele mai simple probleme. Se dă un vector cu n componente. Se cere sa se calculeze maximul &#8230; <a href="http://resurse-educationale.uv.ro/?p=130">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ne propunem să lămurim modul în care se estimează timpul de calcul necesar unui program pentru a furniza rezultatul.</p>
<p>Să considerăm, una din cele mai simple probleme. Se dă un vector cu n componente. Se cere sa se calculeze maximul dintre componentele sale.</p>
<p>Reamintim, pe scurt algoritmul:</p>
<p>Timpul de calcul depinde, în primul rînd, de lungimea(mărimea) datelor de  intrare, pe care o vom nota cu n.</p>
<p>Exemple:</p>
<p>Pentru a calcula timpul de calcul ar trebui inventariem toate instrucţiunile programului şi să ştim d cîte ori se execută fiecare din ele(în funcţie de n).Mai mult, ar trebuie să cunoaştem cît durează execuţia fiecărui tip de instrucţiune.</p>
<p>Observaţie 1.</p>
<p>Exemplu. Pentru calculul maximului, nu putem şti de cîte ori se execută atribuirea max:=v[i]. Cu toate acestea putem considera că există o proporţionalitate între valoarea n şi numărul de execuţii.</p>
<p>Observaţia 2.</p>
<p>Datorită acestor considerate vom proceda astfel.</p>
<p>Se alege o operaţie numită operaţie de bază, şi se vede de cîte ori se execută aceasta. Cerinţa pentru operaţia de bază este ca aceasta să se execute de un număr de ori, numărul care să poată calcula de la început pornind de la n.</p>
<p>Exemplu.</p>
<p>În astfel de cazuri(cînd avem de ales între mai multe operaţii de bază), vom alege acea operaţie care corespunde cît mai bine scopului propus.</p>
<p>Astfel, dacă analizăm un algoritm de generare a permutării comparativ cu altele de aceeaşi natură vom alege ca operaţie de bază comparaţia.</p>
<p>În cazul în care analizăm un algoritm oarecare, în care soluţia este sub formă de permutare, putem considera ca operaţie de bază permutarea. Problema se spune în felul următor: dacă căutăm soluţia printre toate permutările pe care se pot genera vom avea n! căutări(un număr imens !), oare nu se poate altfel?</p>
<p>Exemple de probleme la care se foloseşte un astfel de raţionament: problema comis voiajorului, problema celor n dame.</p>
<p>Timpul estimat de calcul se trece sub formă aproximativă astfel:</p>
<p>O(număr estimat de execuţii ale operaţiei de bază)</p>
<p>Exemplu de exprimare a timpului.</p>
<p>Dacă un algoritm efectuiază 3n<sup>2</sup>+7n+5 operaţii de bază, vom spune că aceasta este un algoritm cu O(n<sup>2</sup>).</p>
<p>Exemple.</p>
<p>În cazul de faţă operaţia aleasă este cea de comparare. Pentru un vector cu n componente se fac n-1 comparaţii. Aceasta înseamnă că dacă vectorul are o sută de componente se fac 99 de comparaţii ş.a.m..d.. Se poate demonstra faptul că un algoritm mai bun nu există!</p>
<p>2.  Pentru generarea permuntărilor(în cazul în care se consideră ca operaţie de bază generarea unei permutări) timpul estimat de calcul este O(n!).</p>
<p>În anumite cazuri nu putem preciza nici macar numărul de execuţie ale operaţiilor de bază.</p>
<p>Exemplu. Sortarea prin interschimbare(vezi 6.2.1). În cazul în care vectorul este sortat se execută n-1 comparaţii (se parcurge vectorul o singură dată), dacă vectorul este sortat invers se execută n(n-1)/2 operaţii de bază (se parcurge vectorul de n ori).</p>
<p>În astfel de cazuri se poate considera:</p>
<p>De fiecare dată cînd se trece timpul estimat se precizează despre care este vorba (minim, mediu, maxim). În practică, prezintă interes timpul madiu sau maxim.</p>
<p>Dacă timpul estimat este sub forma O(n<sup>k</sup>), k=N*, spunem că algoritmul este în timp polinomial.</p>
<p>Exemlu. Sortarea prin interschimbare are timpul (mediu, maxim) polinomial şi anume O(n<sup>2</sup>).</p>
<p>Un algoritm în O(n) se numeşte algoritm liniar.</p>
<p>Dacă un algoritm are un timp estimat O(2<sup>n</sup>), O(3<sup>n</sup>).. spunem că algoritmul este în timp exponenţial.</p>
<p>Un algoritm în timp O(n!) este asimilat unui algoritm în timp exponenţial.</p>
<p>n!=1x2x&#8230;n&lt;2x2x&#8230;.x2=2<sup>n-1</sup>.</p>
<p>În practică nu sunt admişi decît algoritm în timp polinomial, deşi nu este deloc indiferent gradul polinomului.</p>
<p>Şi totuşi pentru ce tot acest efort de estimare a timplui de calcul? Oare viteza de lucru a unui calculator nu este atît de mare, în cît abstracţie făcînd de cîteva minute de calcul, în plus sau în minus, să renunţăm la estimarea lui? Răspunsul la această la această întrebarea este categoric negativ. Mai mult timpul de calcul este esenţial dacă este prea mare algoritmul nu are nici un fel de valoare practică. Să ne imaginăm un algoritm care are un timp de calcul O(2<sup>n</sup>). Dacă n este de 10, calculatorul va efectua aproximativ 1024 operaţii elementare. Dacă n este 100 acesta va trebui să efectueze 1024<sup>*</sup>1024<sup>*</sup>&#8230;<sup>*</sup>1024 operaţii elementare, adică un număr mai mare decît 1000<sup>*</sup>1000<sup>*</sup>&#8230;<sup>*</sup>1000 adică 1000000&#8230;0000 (de treizeci de ori). Aceasta este un număr imens. Dar dacă n este 1000? pentru un n nu foarte mare, nici cel mai modern calculator din lume nu scoate rezultatul decît în sute sau în mii de ani. De astfel ce înseamnă în asemenea cazuri un calculator modern? Să presupunem că un sistem PENTIUM are o viteză de circa 25 de ori mai mare decît un sistem XT. Să presupunem că avem un program care are un timp de calcul de ordinul O(2<sup>n</sup>). Se cere să rezolvăm o problemă pentru n=30. Fie că timpul necesar rulării acestei probleme pe un XT. Această problemă va fi rulată pe PENTIUM în timpul t/25. Dorim să rezolvăm problema pe PENTRIUM pentru n=35 (n a crescut numai cu 5). Dar 2<sup>35</sup>=2<sup>30*</sup>2<sup>5</sup>=32<sup>*</sup>2<sup>30</sup>. Deci dacă n a crescut cu 5, vom avea nevoie de mai mult timp de lucru să rezolvăm problema pe PENTIUM decît timpul pentru rezolvarea ei pentru n=30 pe XT.</p>
<p>Vă daţi seama ce înseamnă un timp de calcul de ordinul O(2<sup>n</sup>)? Sporul lui n cu o singură unitate duce la dublarea timpului de calcul.</p>
<p>Ce concluzie tragem de aici? De cîte ori avem de rezovat o problemă căutăm pentru aceasta un algoritm în timp polinomial (polinomul va avea gradul minim). Mai mult căutăm un algoritm care să rezovle problema în timp polinomial de grad minim.</p>
<p><a rel="attachment wp-att-131" href="http://resurse-educationale.uv.ro/?attachment_id=131">analiza timpului de calcul</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=130</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
