<?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=0224_-_Rotire</id>
	<title>0224 - Rotire - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0224_-_Rotire"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0224_-_Rotire&amp;action=history"/>
	<updated>2026-05-01T12:08:49Z</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=0224_-_Rotire&amp;diff=3992&amp;oldid=prev</id>
		<title>Andor Giulia: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/224/rotire] == Cerinţa == Se consideră tabloul bidimensional cu &#039;&#039;&#039;m&#039;&#039;&#039; linii şi &#039;&#039;&#039;n&#039;&#039;&#039; coloane şi elemente numere naturale. Să se construiască un nou tablou bidimensional cu &#039;&#039;&#039;n&#039;&#039;&#039; linii şi &#039;&#039;&#039;m&#039;&#039;&#039; coloane, obţinut din primul prin rotirea acestuia în sens trigonometric cu 90 o. == Date de intrare == Fişierul de intrare &#039;&#039;&#039;rotire.in&#039;&#039;&#039; conţine pe prima linie numerele &#039;&#039;&#039;m&#039;&#039;&#039; şi &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;m&#039;&#039;&#039; linii c...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0224_-_Rotire&amp;diff=3992&amp;oldid=prev"/>
		<updated>2023-04-22T09:35:15Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/224/rotire] == Cerinţa == Se consideră tabloul bidimensional cu &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane şi elemente numere naturale. Să se construiască un nou tablou bidimensional cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane, obţinut din primul prin rotirea acestuia în sens trigonometric cu 90 o. == Date de intrare == Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;rotire.in&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii c...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/224/rotire]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se consideră tabloul bidimensional cu &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane şi elemente numere naturale. Să se construiască un nou tablou bidimensional cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane, obţinut din primul prin rotirea acestuia în sens trigonometric cu 90 o.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;rotire.in&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii câte &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin spaţii, reprezentând elementele tabloului.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Fişierul de ieşire &amp;#039;&amp;#039;&amp;#039;rotire.out&amp;#039;&amp;#039;&amp;#039; va conţine tabloul nou construit, câte o linie a tabloului pe o linie a fişierului, elementele fiecărei linii fiind separare printr-un spaţiu. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;. &lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2≤m,n≤10&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* elementele tabloului sunt numere naturale mai mici decât &amp;#039;&amp;#039;&amp;#039;2.000.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;rotire.in&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: 4 5&lt;br /&gt;
: 21 22 23 24 25&lt;br /&gt;
: 26 27 28 29 30&lt;br /&gt;
: 31 32 33 34 35&lt;br /&gt;
: 36 37 38 39 40 &lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;rotire.out&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: 25 30 35 40&lt;br /&gt;
: 24 29 34 39&lt;br /&gt;
: 23 28 33 38&lt;br /&gt;
: 22 27 32 37&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 citire_matrice():&lt;br /&gt;
    try:&lt;br /&gt;
        with open(&amp;quot;rotire.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
            n, m = map(int, fin.readline().split())&lt;br /&gt;
            if m % 2 == 0:&lt;br /&gt;
                print(&amp;quot;Numarul de coloane trebuie sa fie impar.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
            if 2 &amp;lt;= n &amp;lt;= 10 and 2 &amp;lt;= m &amp;lt;= 10:&lt;br /&gt;
                print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
&lt;br /&gt;
            matrice = []&lt;br /&gt;
            for linie in range(n):&lt;br /&gt;
                linie_matrice = []&lt;br /&gt;
                valori = fin.readline().split()&lt;br /&gt;
                for coloana in range(m):&lt;br /&gt;
                    try:&lt;br /&gt;
                        valoare = int(valori[coloana])&lt;br /&gt;
                        if valoare &amp;lt;= 2000000000:&lt;br /&gt;
                            print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                            linie_matrice.append(valoare)&lt;br /&gt;
                        else:&lt;br /&gt;
                            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                            exit()&lt;br /&gt;
                    except ValueError:&lt;br /&gt;
                        print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
                        exit()&lt;br /&gt;
                matrice.append(linie_matrice)&lt;br /&gt;
&lt;br /&gt;
            return n, m, matrice&lt;br /&gt;
    except FileNotFoundError:&lt;br /&gt;
        print(&amp;quot;Fisierul rotire.in nu exista.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rotire():&lt;br /&gt;
    # rotire matrice&lt;br /&gt;
    a_rotit = [[0 for j in range(n)] for i in range(m)]&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            a_rotit[m-j-1][i] = a[i][j]&lt;br /&gt;
&lt;br /&gt;
    # scriere matrice in fisier&lt;br /&gt;
    try:&lt;br /&gt;
        with open(&amp;quot;rotire.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            for linie in a_rotit:&lt;br /&gt;
                fout.write(&amp;quot; &amp;quot;.join(str(x) for x in linie))&lt;br /&gt;
                fout.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
    except IOError:&lt;br /&gt;
        print(&amp;quot;Nu s-a putut scrie in fisierul rotire.out.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n, m, a = citire_matrice()&lt;br /&gt;
    rotire()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod are două funcții principale: citire_matrice() și rotire().&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice() este utilizată pentru a citi o matrice din fișierul &amp;quot;rotire.in&amp;quot;. În primul rând, se deschide fișierul și se citesc dimensiunile matricei. Apoi, se verifică dacă numărul de coloane este impar, pentru că este necesar pentru a putea face rotația. În continuare, se verifică dacă dimensiunile matricei sunt conforme cu restricțiile impuse (2&amp;lt;=n&amp;lt;=10 și 2&amp;lt;=m&amp;lt;=10). Dacă sunt conform, se începe citirea matricei linie cu linie. Pe fiecare linie, se citesc valorile și se verifică dacă sunt numere întregi și dacă respectă restricțiile impuse (valoarea &amp;lt;= 2000000000). Dacă toate verificările trec cu succes, matricea este returnată.&lt;br /&gt;
&lt;br /&gt;
 Funcția rotire() este utilizată pentru a roti matricea citită în sensul acelor de ceasornic și pentru a scrie matricea rotită în fișierul &amp;quot;rotire.out&amp;quot;. În primul rând, se creează o matrice goală a_rotit cu dimensiunile inverse ale matricei citite. Se parcurge matricea citită și se adaugă elementele în matricea rotită la poziția corespunzătoare. Apoi, matricea rotită este scrisă în fișierul &amp;quot;rotire.out&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 În main, se apelează mai întâi citire_matrice() pentru a obține matricea, apoi se apelează rotire() pentru a roti și scrie matricea rotită în fișier.&lt;/div&gt;</summary>
		<author><name>Andor Giulia</name></author>
	</entry>
</feed>