Sunteți pe pagina 1din 1

Ministerul Educaiei i Cercetrii Olimpiada Judeean de Informatic 10 martie 2007

Clasa a IXa

Problema 1 paritate

100 puncte

n vederea asigurrii unei transmiteri ct mai exacte a informaiilor pe reea, transmiterea se efectueaz caracter cu caracter, fiecare caracter fiind dat prin codul su ASCII, adic o grup de 8 bii (octet). Pentru fiecare 8 bii transmii se calculeaz un bit de paritate care are valoarea 0 (dac codul ASCII al caracterului conine un numr par de cifre binare 1) sau 1 (n caz contrar). Deoarece n problema noastr se transmit numai caractere ASCII standard, cu codul ASCII din intervalul [32,127], codul lor ASCII are bitul 7 (primul bit din stnga) egal cu 0. Pe aceast poziie va fi pus bitul de paritate, economisind astfel cte un bit pentru fiecare caracter transmis. De exemplu, dac mesajul care trebuie trasmis conine caracterele "Paritate", succesiunea de bii transmis va fi: 01010000 11100001 01110010 01101001 01110100 11100001 01110100 01100101 n plus, pe lng caracterele amintite, n mesaj mai poate s apar un caracterul special, caracter care indic trecerea la nceputul unui nou rnd. Acest caracter are codul ASCII 10.

Cerin
S se scrie un program care s verifice dac un text a fost sau nu transmis corect.

Date de intrare
Fiierul de intrare paritate.in are pe prima linie o succesiune de caractere '0' i '1' care reprezint mesajul transmis. ntre caractere nu exist spaii. Linia se termin cu caracterul marcaj de sfrit de linie ( newline).

Date de ieire
Fiierul de ieire paritate.out are pe prima linie mesajul DA dac textul a fost transmis corect sau NU n caz contrar. n cazul n care mesajul de pe prima linie este DA liniile urmtoare vor conine textul transmis n clar. n cazul n care mesajul de pe prima linie este NU linia urmtoare va conine numerele de ordine ale caracterelor care nu au fost transmise corect, n ordine strict cresctoare, separate prin cte un spaiu.

Restricii i precizri

Cei 8 bii ai codului ASCII a unui caracter se numeroteaz de la 0 la 7, de la dreapta la stnga, cel mai din stnga bit fiind bitul 7 iar cel mai din dreapta bitul 0. Textul transmis are cel mult 60000 caractere. Numrul de caractere '0' i '1' din prima linie a fiierului de intrare este multiplu de 8. Codurile ASCII ale caracterelor din text aparin mulimii { 10, 32127}, codul 10 nsemnnd trecerea la nceputul unui rnd nou. Nici o linie din fiierul de ieire nu va avea mai mult de 255 caractere. Caracterele din text sunt numerotate ncepnd de la 0. mesajele DA/NU din prima linie a fiierului de ieire se scriu cu majuscule.
paritate.out

Exemple
paritate.in
0101000011100001011100100110100101110100111000010111010001100101

Explicaie
Toate codurile sunt corecte

DA Paritate
paritate.out

paritate.in
1101000011100001111100100110100101110100111000010111010011100101

Explicaie
Primul caracter a fost transmis ca succesiunea de bii 11010000 ceea ce nseamn c fr bitul de paritate ar fi trebuit s existe un numr impar de cifre 1, ceea ce este fals. Deci caracterul nu a fost transmis corect. Acelai lucru se verific i pentru caracterele cu numerele de ordine 2 i 7

NU 0 2 7

paritate.in
010000011111101001101001000010100110010100001010011010100110111101101001

paritate.out

Explicaie
Toate codurile sunt corecte. n text exist dou caractere cu cod ASCII 10

DA Azi e joi

Timp maxim de execuie/test: 1 secund

S-ar putea să vă placă și