<?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=3257_-_Cifre_Romane_1</id>
	<title>3257 - Cifre Romane 1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3257_-_Cifre_Romane_1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3257_-_Cifre_Romane_1&amp;action=history"/>
	<updated>2026-05-01T04:53:15Z</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=3257_-_Cifre_Romane_1&amp;diff=8945&amp;oldid=prev</id>
		<title>Andrada378 at 23:07, 3 January 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3257_-_Cifre_Romane_1&amp;diff=8945&amp;oldid=prev"/>
		<updated>2024-01-03T23:07:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=3257_-_Cifre_Romane_1&amp;amp;diff=8945&amp;amp;oldid=8613&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Andrada378</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3257_-_Cifre_Romane_1&amp;diff=8613&amp;oldid=prev</id>
		<title>Andrada378: Pagină nouă: &#039;&#039;&lt;u&gt;&#039;&#039;&#039;Cerința&#039;&#039;&#039;&lt;/u&gt;&#039;&#039;  Dan a plecat în vacanța de vară la Roma. Pe fațada clădirilor apărea anul lor de construcție scris cu cifre romane. Ajutați-l să înțeleagă numărul scris în cifre romane transformându-l în număr scris cu cifre arabe. Dacă numărul nu respectă regulile de scriere a numerelor romane, se afișează mesajul Numar invalid.  &#039;&#039;&#039;&#039;&#039;&lt;u&gt;Date de intrare&lt;/u&gt;&#039;&#039;&#039;&#039;&#039;  Fișierul de intrare cifre_romane1.in conține pe prima linie numărul n scris c...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3257_-_Cifre_Romane_1&amp;diff=8613&amp;oldid=prev"/>
		<updated>2023-12-28T12:34:51Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: &amp;#039;&amp;#039;&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Cerința&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;  Dan a plecat în vacanța de vară la Roma. Pe fațada clădirilor apărea anul lor de construcție scris cu cifre romane. Ajutați-l să înțeleagă numărul scris în cifre romane transformându-l în număr scris cu cifre arabe. Dacă numărul nu respectă regulile de scriere a numerelor romane, se afișează mesajul Numar invalid.  &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Date de intrare&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;  Fișierul de intrare cifre_romane1.in conține pe prima linie numărul n scris c...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Cerința&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Dan a plecat în vacanța de vară la Roma. Pe fațada clădirilor apărea anul lor de construcție scris cu cifre romane. Ajutați-l să înțeleagă numărul scris în cifre romane transformându-l în număr scris cu cifre arabe. Dacă numărul nu respectă regulile de scriere a numerelor romane, se afișează mesajul Numar invalid.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Date de intrare&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Fișierul de intrare cifre_romane1.in conține pe prima linie numărul n scris cu cifre romane.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Date de ieșire&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Fișierul de ieșire cifre_romane1.out va conține pe prima linie numărul n scris în cifre arabe dacă numărul este valid și în caz contrar se afișează mesajul Numar invalid.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Restricții și precizări&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
1 ≤ n ≤ 3999&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Exemplu:&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
cifre_romane1.in&lt;br /&gt;
&lt;br /&gt;
IV&lt;br /&gt;
&lt;br /&gt;
cifre_romane1.out&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
cifre_romane1.in&lt;br /&gt;
&lt;br /&gt;
IIII&lt;br /&gt;
&lt;br /&gt;
cifre_romane1.out&lt;br /&gt;
&lt;br /&gt;
Numar invalid&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Rezolvare&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
def roman_to_arabic(roman):&lt;br /&gt;
&lt;br /&gt;
    # Dicționar care mapează cifrele romane la echivalentele lor arabe&lt;br /&gt;
&lt;br /&gt;
    roman_numerals = {&amp;#039;I&amp;#039;: 1, &amp;#039;V&amp;#039;: 5, &amp;#039;X&amp;#039;: 10, &amp;#039;L&amp;#039;: 50, &amp;#039;C&amp;#039;: 100, &amp;#039;D&amp;#039;: 500, &amp;#039;M&amp;#039;: 1000}&lt;br /&gt;
&lt;br /&gt;
    arabic = 0&lt;br /&gt;
&lt;br /&gt;
    prev_value = 0&lt;br /&gt;
&lt;br /&gt;
    # Parcurgem cifrele romane de la dreapta la stânga&lt;br /&gt;
&lt;br /&gt;
    for numeral in reversed(roman):&lt;br /&gt;
&lt;br /&gt;
        value = roman_numerals[numeral]&lt;br /&gt;
&lt;br /&gt;
        # Dacă cifra curentă este mai mică decât cifra precedentă, scădem valoarea curentă&lt;br /&gt;
&lt;br /&gt;
        if value &amp;lt; prev_value:&lt;br /&gt;
&lt;br /&gt;
            arabic -= value&lt;br /&gt;
&lt;br /&gt;
        else:&lt;br /&gt;
&lt;br /&gt;
            # Altfel, adunăm valoarea curentă&lt;br /&gt;
&lt;br /&gt;
            arabic += value&lt;br /&gt;
&lt;br /&gt;
        prev_value = value&lt;br /&gt;
&lt;br /&gt;
    return arabic&lt;br /&gt;
&lt;br /&gt;
def is_valid_roman_numeral(roman):&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă cifrele romane respectă regulile de scriere &lt;br /&gt;
&lt;br /&gt;
    invalid_combinations = [&amp;#039;IIII&amp;#039;, &amp;#039;VIV&amp;#039;, &amp;#039;XXXX&amp;#039;, &amp;#039;LXL&amp;#039;, &amp;#039;CCCC&amp;#039;, &amp;#039;DID&amp;#039;, &amp;#039;CMCM&amp;#039;, &amp;#039;CDCD&amp;#039;, &amp;#039;XCXC&amp;#039;, &amp;#039;XLXL&amp;#039;, &amp;#039;IXIX&amp;#039;, &amp;#039;IVIV&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
    for combination in invalid_combinations:&lt;br /&gt;
&lt;br /&gt;
        if combination in roman:&lt;br /&gt;
&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
&lt;br /&gt;
        # Deschidem fișierul de intrare în modul citire și pe cel de ieșire în modul scriere&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;#039;cifre_romane1in.txt&amp;#039;, &amp;#039;r&amp;#039;) as file_in, open(&amp;#039;cifre_romane1out.txt&amp;#039;, &amp;#039;w&amp;#039;) as file_out:&lt;br /&gt;
&lt;br /&gt;
            # Citim cifrele romane din fișier&lt;br /&gt;
&lt;br /&gt;
            roman_numeral = file_in.readline().strip()&lt;br /&gt;
&lt;br /&gt;
            # Verificăm dacă cifrele romane sunt valide&lt;br /&gt;
&lt;br /&gt;
            if is_valid_roman_numeral(roman_numeral):&lt;br /&gt;
&lt;br /&gt;
                # Convertem cifrele romane în cifre arabe și scriem rezultatul în fișierul de ieșire&lt;br /&gt;
&lt;br /&gt;
                arabic_numeral = roman_to_arabic(roman_numeral)&lt;br /&gt;
&lt;br /&gt;
                file_out.write(str(arabic_numeral) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
            else:&lt;br /&gt;
&lt;br /&gt;
                # Dacă cifrele romane nu sunt valide, scriem un mesaj corespunzător în fișierul de ieșire&lt;br /&gt;
&lt;br /&gt;
                file_out.write(&amp;#039;Numar invalid\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    except FileNotFoundError:&lt;br /&gt;
&lt;br /&gt;
        print(&amp;quot;Fisierul de intrare nu exista!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    main()&lt;/div&gt;</summary>
		<author><name>Andrada378</name></author>
	</entry>
</feed>