<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0805_%E2%80%93_Valuri</id>
	<title>0805 – Valuri - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0805_%E2%80%93_Valuri"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0805_%E2%80%93_Valuri&amp;action=history"/>
	<updated>2026-05-01T06:51:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0805_%E2%80%93_Valuri&amp;diff=3715&amp;oldid=prev</id>
		<title>Miriam: tot</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0805_%E2%80%93_Valuri&amp;diff=3715&amp;oldid=prev"/>
		<updated>2023-04-15T18:28:00Z</updated>

		<summary type="html">&lt;p&gt;tot&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/805/valuri Valuri]&lt;br /&gt;
----&lt;br /&gt;
==Cerinţă==&lt;br /&gt;
Se dă un nr natural n. Programul furnizează un tablou unidimensional cu &amp;lt;code&amp;gt;2*n&amp;lt;/code&amp;gt; elemente, valori naturale distincte din intervalul &amp;lt;code&amp;gt;[1,2*n]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Subprogramul construieşte tabloul &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt; astfel încât, în acesta, şirul elementelor impare să fie strict crescător, iar şirul elementelor pare să fie strict descrescător. Primul element al tabloului este impar, iar două elemente cu aceeaşi paritate nu pot ocupa poziţii consecutive în tablou.&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul va citi de la tastatură valoarea&amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele introduse sunt corecte!&amp;quot;, apoi se va afișa vectorul conform specificațiilor mai sus menționate. În cazul în care datele nu respectă restricțiile, se va afișa mesajul &amp;quot;Datele introduse nu sunt corecte!&amp;quot;.&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
*2 &amp;lt; n &amp;lt; 50&lt;br /&gt;
==Exemple==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
;Intrare&lt;br /&gt;
:Introduceti numarul de elemente a sirului: 4&lt;br /&gt;
;Ieșire&lt;br /&gt;
:Datele introduse sunt corecte!&lt;br /&gt;
:Noul vector este: [1, 8, 3, 6, 5, 4, 7, 2]&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
;Intrare&lt;br /&gt;
:Introduceti numarul de elemente a sirului: 57&lt;br /&gt;
;Ieșire&lt;br /&gt;
:Datele introduse sunt incorecte!&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
;Intrare&lt;br /&gt;
:Introduceti numarul de elemente a sirului: 15&lt;br /&gt;
;Ieșire&lt;br /&gt;
:Datele introduse sunt corecte!&lt;br /&gt;
:Noul vector este: [1, 30, 3, 28, 5, 26, 7, 24, 9, 22, 11, 20, 13, 18, 15, 16, 17, 14, 19, 12, 21, 10, 23, 8, 25, 6, 27, 4, 29, 2]&lt;br /&gt;
:&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def is_integer(value):&lt;br /&gt;
    return value.isdigit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verificare_nr_elemente(n):&lt;br /&gt;
    if is_integer(n):&lt;br /&gt;
        if 2 &amp;lt; int(n) &amp;lt; 50:&lt;br /&gt;
            return n&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele introduse sunt incorecte!&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele introduse sunt incorecte!&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def valuri(n):&lt;br /&gt;
    vector = [0] * (int(n) * 2)&lt;br /&gt;
    for i in range(0, (int(n)*2)-1):&lt;br /&gt;
        if i % 2 == 0:&lt;br /&gt;
            vector[i] = i+1&lt;br /&gt;
        else:&lt;br /&gt;
            vector[i] = 0&lt;br /&gt;
    vector.reverse()&lt;br /&gt;
    for i in range((int(n)*2-1), -1, -1):&lt;br /&gt;
        if i % 2 == 0:&lt;br /&gt;
            vector[i] = i+2&lt;br /&gt;
    vector.reverse()&lt;br /&gt;
    print(&amp;quot;Noul vector este:&amp;quot;,vector)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti numarul de elemente a sirului: &amp;quot;)&lt;br /&gt;
    verificare_nr_elemente(n)&lt;br /&gt;
    print(&amp;quot;Datele introduse sunt corecte!&amp;quot;)&lt;br /&gt;
    valuri(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Codul conține următoarele funcții:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;is_integer(value)&amp;lt;/code&amp;gt;: funcție care primește o valoare și returnează &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; dacă valoarea este un număr întreg și &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt; în caz contrar. Această funcție este folosită pentru a verifica dacă inputul dat este un număr întreg valid.&lt;br /&gt;
* &amp;lt;code&amp;gt;verificare_nr_elemente(n)&amp;lt;/code&amp;gt;: funcție care primește o valoare &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și verifică dacă este un număr întreg valid și dacă se află între 2 și 50. Dacă inputul este corect, funcția returnează valoarea &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, altfel afișează un mesaj de eroare și oprește programul cu ajutorul funcției &amp;lt;code&amp;gt;exit()&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;valuri(n)&amp;lt;/code&amp;gt;: funcție care primește un număr întreg &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și construiește un vector cu perechi de numere. Vectorul începe cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și este format din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; perechi de numere de forma &amp;lt;code&amp;gt;(0, i+2)&amp;lt;/code&amp;gt;, cu &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; un număr par de la &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n*2-2&amp;lt;/code&amp;gt;. Aceste perechi sunt stocate în vector în ordinea descrescătoare a valorii primului element al perechii. Funcția afișează vectorul final.&lt;br /&gt;
&lt;br /&gt;
În funcția &amp;lt;code&amp;gt;valuri(n)&amp;lt;/code&amp;gt;, procesul de construcție a vectorului este împărțit în două părți:&lt;br /&gt;
&lt;br /&gt;
* Mai întâi, se construiește jumătatea din dreapta a vectorului, parcurgând lista &amp;lt;code&amp;gt;vector&amp;lt;/code&amp;gt; și setând elementele la valori specifice (conform descrierii de mai sus). Aceste valori sunt setate în ordine crescătoare de la dreapta la stânga în lista, prin aceeași rază de pas. După această construcție, lista este inversată pentru a se obține valori ordonate descrescător de la stânga la dreapta.&lt;br /&gt;
* În a doua parte, se completează jumătatea stângă a vectorului, parcurgând lista &amp;lt;code&amp;gt;vector&amp;lt;/code&amp;gt; de la dreapta la stânga și setând elementele în funcție de indicele lor (conform descrierii de mai sus).&lt;/div&gt;</summary>
		<author><name>Miriam</name></author>
	</entry>
</feed>