Diferente pentru problema/paritate intre reviziile #14 si #49

Diferente intre titluri:

paritate
Paritate

Diferente intre continut:

== include(page="template/taskheader" task_id="paritate") ==
In vederea asigurarii unei transmiteri cat mai exacte a informatiilor pe retea, transmiterea se efectueaza caracter cu caracter, fiecare caracter fiind dat prin codul sau ASCII, adica o grupa de 8 biti (octet).  Pentru fiecare 8 biti transmisi se calculeaza un bit de paritate care are valoarea 0 (daca codul ASCII al caracterului contine un numar par de cifre binare 1) sau 1 (In caz contrar). Deoarece In problema noastra se transmit numai caractere ASCII standard, cu codul ASCII din intervalul [32,127], codul lor ASCII are bitul 7 (primul bit din stanga) egal cu 0. Pe aceasta pozitie va fi pus bitul de paritate, economisind astfel cate un bit pentru fiecare caracter transmis. De exemplu, daca mesajul care trebuie trasmis contine caracterele "Paritate", succesiunea de biti transmisa va fi:
 
<b> 0</b>1010000  <b>1</b>1100001  <b> 0</b>1110010  <b> 0</b>1101001  <b> 0</b>1110100 <b> 1</b>1100001  <b> 0</b>1110100  <b> 0</b>1100101
 
In plus, pe langa caracterele amintite, In mesaj mai poate sa apara un caracterul special, caracter care indica trecerea la Inceputul unui nou rand. Acest caracter are codul ASCII 10.
In vederea asigurarii unei transmiteri cat mai exacte a informatiilor pe retea, transmiterea se efectueaza caracter cu caracter, fiecare caracter fiind dat prin codul sau ASCII, adica o grupa de $8$ biti (octet). Pentru fiecare $8$ biti transmisi se calculeaza un bit de paritate care are valoarea $0$ (daca codul ASCII al caracterului contine un numar par de cifre binare $1$) sau $1$ (in caz contrar). Deoarece in problema noastra se transmit numai caractere ASCII standard, cu codul ASCII din intervalul $[32,127]$, codul lor ASCII are bitul $7$ (primul bit din stanga) egal cu $0$. Pe aceasta pozitie va fi pus bitul de paritate, economisind astfel cate un bit pentru fiecare caracter transmis. De exemplu, daca mesajul care trebuie trasmis contine caracterele "Paritate", succesiunea de biti transmisa va fi:
{**0**}1010000 {**1**}1100001 {**0**}1110010 {**0**}1101001 {**0**}1110100 {**1**}1100001 {**0**}1110100 {**0**}1100101
In plus, pe langa caracterele amintite, in mesaj mai poate sa apara un caracterul special, caracter care indica trecerea la inceputul unui nou rand. Acest caracter are codul ASCII $10$.
h2. Cerinta
Sa se scrie un program care sa verifice daca un text a fost sau nu transmis corect.
 
h2. Date de intrare
Fisierul de intrare $paritate.in$ are pe prima linie o succesiune de caractere '0' si '1' care reprezinta mesajul transmis. Intre caractere nu exista spatii. Linia se termina cu caracterul marcaj de sfarsit de linie (newline).
Fisierul de intrare $paritate.in$ are pe prima linie o succesiune de caractere $'0'$ si $'1'$ care reprezinta mesajul transmis. Intre caractere nu exista spatii. Linia se termina cu caracterul marcaj de sfarsit de linie (newline).
h2. Date de iesire
Fisierul de iesire $paritate.out$ are pe prima linie mesajul DA daca textul a fost transmis corect sau NU In caz contrar. In cazul In care mesajul de pe prima linie este DA liniile urmatoare vor contine textul transmis In clar. In cazul In care mesajul de pe prima linie este NU linia urmatoare va contine numerele de ordine ale caracterelor care nu au fost transmise corect, In ordine strict crescatoare, separate prin cate un spatiu.
 
 
Fisierul de iesire $paritate.out$ are pe prima linie mesajul $DA$ daca textul a fost transmis corect sau $NU$ in caz contrar. In cazul in care mesajul de pe prima linie este $DA$ liniile urmatoare vor contine textul transmis in clar. In cazul in care mesajul de pe prima linie este $NU$ linia urmatoare va contine numerele de ordine ale caracterelor care nu au fost transmise corect, in ordine strict crescatoare, separate prin cate un spatiu.
h2. Restrictii
* Cei 8 biti ai codului ASCII a unui caracter se numeroteaza de la 0 la 7, de la dreapta la stanga, cel mai din stanga bit fiind bitul 7 iar cel mai din dreapta bitul  0.
* Textul transmis are cel mult 60000 caractere.
* Numarul de caractere '0' si '1' din prima linie a fisierului de intrare este multiplu de 8.
* Codurile ASCII ale caracterelor din text apartin multimii {10, 32-127}, codul 10 Insemnand trecerea la inceputul unui rand nou.
* Nici o linie din fisierul de iesire nu va avea mai mult de 255 caractere.
* Caracterele din text sunt numerotate incepand de la 0.
* Mesajele DA/NU din prima linie a fisierului de iesire se scriu cu majuscule.
 
* Cei $8$ biti ai codului ASCII a unui caracter se numeroteaza de la $0$ la $7$, de la dreapta la stanga, cel mai din stanga bit fiind bitul $7$ iar cel mai din dreapta bitul $0$.
* Textul transmis are cel mult $60000$ caractere.
* Numarul de caractere $'0'$ si $'1'$ din prima linie a fisierului de intrare este multiplu de $8$.
* Codurile ASCII ale caracterelor din text apartin multimii ${10, 32-127}$, codul $10$ insemnand trecerea la inceputul unui rand nou.
* Nici o linie din fisierul de iesire nu va avea mai mult de $255$ caractere.
* Caracterele din text sunt numerotate incepand de la $0$.
* Mesajele $DA/NU$ din prima linie a fisierului de iesire se scriu cu majuscule.
h2. Exemplu
Azi
e
joi
 
|
h3. Explicatie
...
In primul exemplu toate codurile sunt corecte. In cel de-al doilea, primul caracter a fost transmis ca succesiune de biti $11010000$ ceea ce inseamna ca fara bitul de paritate ar fi trebuit sa existe un numar impar de cifre $1$, ceea ce este fals. Deci caracterul nu a fost transmis corect. Acelasi lucru se verifica si pentru caracterele cu numerele de ordine $2$ si $7$. In cel de-al treilea exemplu, toate codurile sunt transmise corect, existand doua caractere cu codul ASCII $10$.
== include(page="template/taskfooter" task_id="paritate") ==
 

Nu exista diferente intre securitate.

Diferente intre topic forum:

 
2055