<?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=1575_-_Paritate_OJI</id>
	<title>1575 - Paritate OJI - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1575_-_Paritate_OJI"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1575_-_Paritate_OJI&amp;action=history"/>
	<updated>2026-06-17T08:35:21Z</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=1575_-_Paritate_OJI&amp;diff=9624&amp;oldid=prev</id>
		<title>Raul: Pagină nouă: În vederea asigurării unei transmiteri cât mai exacte a informaţiilor pe reţea, transmiterea se efectuează caracter cu caracter, fiecare caracter fiind dat prin codul său ASCII, adică o grupă de &lt;code&gt;8&lt;/code&gt; biţi (octet).  Pentru fiecare &lt;code&gt;8&lt;/code&gt; biţi transmişi se calculează un bit de paritate care are valoarea &lt;code&gt;0&lt;/code&gt; (dacă codul ASCII al caracterului conţine un număr par de cifre binare &lt;code&gt;1&lt;/code&gt;) sau &lt;code&gt;1&lt;/code&gt; (în caz contrar). Deo...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1575_-_Paritate_OJI&amp;diff=9624&amp;oldid=prev"/>
		<updated>2024-02-12T15:26:13Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: În vederea asigurării unei transmiteri cât mai exacte a informaţiilor pe reţea, transmiterea se efectuează caracter cu caracter, fiecare caracter fiind dat prin codul său ASCII, adică o grupă de &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; biţi (octet).  Pentru fiecare &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; biţi transmişi se calculează un bit de paritate care are valoarea &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; (dacă codul ASCII al caracterului conţine un număr par de cifre binare &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) sau &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (în caz contrar). Deo...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;În vederea asigurării unei transmiteri cât mai exacte a informaţiilor pe reţea, transmiterea se efectuează caracter cu caracter, fiecare caracter fiind dat prin codul său ASCII, adică o grupă de &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; biţi (octet).  Pentru fiecare &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; biţi transmişi se calculează un bit de paritate care are valoarea &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; (dacă codul ASCII al caracterului conţine un număr par de cifre binare &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) sau &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (în caz contrar). Deoarece în problema noastră se transmit numai caractere ASCII standard, cu codul ASCII din intervalul &amp;lt;code&amp;gt;[32,127]&amp;lt;/code&amp;gt;, codul lor ASCII are bitul &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; (primul bit din stânga) egal cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Pe această poziţie va fi pus bitul de paritate, economisind astfel câte un bit pentru fiecare caracter transmis.&lt;br /&gt;
&lt;br /&gt;
De exemplu, dacă mesajul care trebuie transmis conţine caracterele &amp;lt;code&amp;gt;Paritate&amp;lt;/code&amp;gt;, succesiunea de biţi transmisă va fi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;01010000 11100001 01110010 01101001 01110100 11100001 01110100 01100101&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În plus, pe lângă caracterele amintite, în mesaj mai poate să apară un caracterul special, caracter care indică trecerea la începutul unui nou rând. Acest caracter are codul ASCII 10.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se scrie un program care să verifice dacă un text a fost sau nu transmis corect.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare paritate.in are pe prima linie o succesiune de caractere &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; care reprezintă mesajul transmis. Între caractere nu există spaţii. Linia se termină cu caracterul marcaj de sfârşit de linie (newline).&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul de ieşire paritate.out are pe prima linie mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt; dacă textul a fost transmis corect sau &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt; în caz contrar. În cazul în care mesajul de pe prima linie este &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt; liniile următoare vor conţine textul transmis în clar. În cazul în care mesajul de pe prima linie este &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt; linia următoare va conţine numerele de ordine ale caracterelor care nu au fost transmise corect, în ordine strict crescătoare, separate prin câte un spaţiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* Cei &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; biţi ai codului ASCII a unui caracter se numerotează de la &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, de la dreapta la stânga, cel mai din stânga bit fiind bitul &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; iar cel mai din dreapta bitul &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Textul transmis are cel mult &amp;lt;code&amp;gt;60.000&amp;lt;/code&amp;gt; caractere.&lt;br /&gt;
* Numărul de caractere &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; din prima linie a fişierului de intrare este multiplu de &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Codurile ASCII ale caracterelor din text aparţin mulţimii &amp;lt;code&amp;gt;{10, 32–127}&amp;lt;/code&amp;gt;, codul &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; însemnând trecerea la începutul unui rând nou.&lt;br /&gt;
* Nici o linie din fişierul de ieşire nu va avea mai mult de &amp;lt;code&amp;gt;255&amp;lt;/code&amp;gt; caractere.&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;paritate.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 0101000011100001011100100110100101110100111000010111010001100101&lt;br /&gt;
&amp;lt;code&amp;gt;paritate.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 DA&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Toate codurile sunt corecte.&lt;br /&gt;
&lt;br /&gt;
== Încărcare soluție ==&lt;br /&gt;
&lt;br /&gt;
=== Lipește codul aici ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
in_file = open(&amp;quot;paritate.intxt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
out_file = open(&amp;quot;paritate.outtxt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
raj = [0] * 60001&lt;br /&gt;
rong = [0] * 60001&lt;br /&gt;
&lt;br /&gt;
wrong = False&lt;br /&gt;
ctr = 0&lt;br /&gt;
rong_ctr = 0&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
    nr1 = 0&lt;br /&gt;
    t = 0&lt;br /&gt;
    bin_val = in_file.read(1)&lt;br /&gt;
    if not bin_val:&lt;br /&gt;
        break&lt;br /&gt;
    if bin_val == &amp;#039;1&amp;#039;:&lt;br /&gt;
        nr1 += 1&lt;br /&gt;
    for i in range(6, -1, -1):&lt;br /&gt;
        bin_val = in_file.read(1)&lt;br /&gt;
        if bin_val == &amp;#039;1&amp;#039;:&lt;br /&gt;
            nr1 += 1&lt;br /&gt;
            t += pow(2, i)&lt;br /&gt;
    if nr1 % 2:&lt;br /&gt;
        wrong = True&lt;br /&gt;
        rong[rong_ctr] = ctr&lt;br /&gt;
        rong_ctr += 1&lt;br /&gt;
    if not wrong:&lt;br /&gt;
        raj[ctr] = t&lt;br /&gt;
    ctr += 1&lt;br /&gt;
&lt;br /&gt;
if wrong:&lt;br /&gt;
    out_file.write(&amp;quot;NU\n&amp;quot;)&lt;br /&gt;
    for i in range(rong_ctr):&lt;br /&gt;
        out_file.write(str(rong[i]) + &amp;quot; &amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    out_file.write(&amp;quot;DA\n&amp;quot;)&lt;br /&gt;
    for i in range(ctr - 1):&lt;br /&gt;
        if raj[i] == 10:&lt;br /&gt;
            out_file.write(&amp;#039;\n&amp;#039;)&lt;br /&gt;
        else:&lt;br /&gt;
            out_file.write(str(raj[i]))&lt;br /&gt;
&lt;br /&gt;
intxt_file.close()&lt;br /&gt;
outtxt_file.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>