.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » paritate

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
paritate


Timp maxim de execuţie / test:
0.1s
Memorie totala disponibilă / stivă:
2MB / 1MB

Î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 8 biţi (octet). Pentru fiecare 8 biţi transmişi se calculează un bit de paritate care are valoarea 0 (dacă codul ASCII al caracterului conţine un număr 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 stânga) egal cu 0. Pe această poziţie va fi pus bitul de paritate, economisind astfel câte un bit pentru fiecare caracter transmis. De exemplu, dacă mesajul care trebuie trasmis conţine caracterele ″Paritate″, succesiunea de biţi transmisă va fi:

01010000 11100001 01110010 01101001 01110100 11100001 01110100 01100101

Î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.

Cerinţă

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

Date de intrare

Fişierul de intrare paritate.in are pe prima linie o succesiune de caractere ′0′ şi ′1′ care reprezintă mesajul transmis. Între caractere nu există spaţii. Linia se termină cu caracterul marcaj de sfârşit de linie (newline).

Date de ieşire

Fişierul de ieşire 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 următoare vor conţine textul transmis în clar. În cazul în care mesajul de pe prima linie este NU 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.

Restricţii

Cei 8 biţi ai codului ASCII a unui caracter se numerotează de la 0 la 7, de la dreapta la stânga, cel mai din stânga bit fiind bitul 7 iar cel mai din dreapta bitul 0.
Textul transmis are cel mult 60000 caractere.
Numărul de caractere ′0′ şi ′1′ din prima linie a fişierului de intrare este multiplu de 8.
Codurile ASCII ale caracterelor din text aparţin mulţimii {10, 32–127}, codul 10 însemnând trecerea la începutul unui rând nou.
Nici o linie din fişierul de ieşire nu va avea mai mult de 255 caractere.
Caracterele din text sunt numerotate începând de la 0.
Mesajele DA/NU din prima linie a fişierului de ieşire se scriu cu majuscule.

Exemple

paritate.inparitate.outExplicaţii
0101000011100001011100100110100101110100111000010111010001100101 DA Paritate Toate codurile sunt corecte
1101000011100001111100100110100101110100111000010111010011100101 NU 0 2 7 Primul caracter a fost transmis ca succesiunea de biţi 11010000 ceea ce înseamnă că fără bitul de paritate ar fi trebuit să existe un număr impar de cifre 1, ceea ce este fals. Deci caracterul nu a fost transmis corect. Acelaşi lucru se verifică şi pentru caracterele cu numerele de ordine 2 şi 7
010000011111101001101001000010100110010100001010011010100110111101101001 DA Azi e joi Toate codurile sunt corecte. În text există două caractere cu cod ASCII 10

autor: Prof. Marinel Şerban
propunător: Prof. Marinel Şerban
Liceul de Informatică “Grigore Moisil”
marinel_serban@yahoo.com
Articole recomandate
Probleme recomandate
De la OJI 2007: alee, cartele, ceas2, cezar1, cabina, cod5, dir, dreptc, furnica, numere8, test1
De acelaşi autor: premii, finala, fractii, trei, manevre, nrcuv, an, vopsea, opmat, tramvai, bipal, kpal, sarpe, replace, factori, barca, perechi, grupe, cod, reactii, factura, decript, trenuri, holo, cifre, firma, tribile, mesaj, tricouri, pajura, monede, programs, fry, repeat, red, pavaj, bacan, nrbinar, invest, cutie2, loc, depou, nr3, zid, felinare, sir3, sqr, carte, labirint, stea, count, evaluare, super, schimb, zaruri, vectori, spirala, desen1, rima, ceas1, romane, sms, bac, excursia, joc7, furnici, munte1, cezar, marcare, excursie1, culmi, sume1, schi, nr4, fractie, cod3, medii, tren3, top, sant1, imagine, ocr, perfect, pluton, reforma, alee, ceas2, borcane, aranjare, comoara1, culmi1, reactivi, submult, sablon1, sir8, sume2, dansatori, smith, tom, matriosca, asociativ, control1, calorii, immortal, concat, mat, cubinvers, mine, divizori, cheie, stelar, joct, minmax, cladire, adunscad, razboi, ore, oras1, sumprod, prisme, operatii1, lgdrum, unupatru, chibrituri, extraprime, prieten, rebus1, grindina, opmult, betisoare, antitero, clase, pagini, ornament, ordine, spioni1
Despre şiruri de caractere: scp, ab, sl, nrcuv, rv, kpal, chimie, reteta, replace, grad, index, cod, text, decript, spam, complex, cifre, anagrame, balbe, criptmat, mesaj, maxim, astre, sablon, formule, ed, balls, vocale, prop, bacan, novel, bitslang, text2, ref, scor2, convert, cod2, compress, pstring, sub, rima, program1, sms, circular, randuri, cezar, bifo, joc9, pal, bare, joc12, fractie, cod3, tunel, csir, top, ratina, cifru1, limbaj, adun, ecuatii, dir, virus, sir6, mesaj2, text1, sirul, ogorul, rez, sablon1, anag, sir8, seti, secvsir, dp, cuvant, strings, antipatie, fractie1, links, ordonare, text3, concat, codif, cheie, alfabetar, cuvinte2, comp, litere, mxl, mesaj3, expresie2, grad2, antic, zuma, expeval, combcuv, lgdrum, subtitrare, compresie, zigzag, azeval, fraze, subsecvente, showroom, rebus1, agenda, opmult, betisoare, reziston, clase, vot2, ecp, smiley, charlie, cript, scadere, spioni1, sablon3, expand, culori3, virgule
Despre vector: trei, simetric, egal, ruleta, pod, uscat, afise, an, bunici, cursa, onu, tramvai, cadou, kpal, expresie, piticot, roci, petrol, grad, ruleta2, ecran, palma, concurs, holo, ab2, tren2, cifre, mgo, firma, anagrame, joc2, br, maxim, astre, numere2, baby, zapada, hd, startrek, vecini2, drept, teatru, tir, patrate2, nr, cifra, repeat, unu, criptare, ratb, placi, sume3, turist, matrice3, pavaj, sume, kafka, bacan, spair, grup, friends2, bitslang, fisc, scor2, cat, nr3, chimie2, zid, politics, submat, reteta2, rezervatie, creioane, felinare, 2numere, exp, scoici, patrate1, playlist, sqr, carte, oua, turn, ants, div3, jeton, politic, trecere, maraton, zaruri, suma1, mere1, agitatie, lacuri, secv, sotron, triunghi, carti1, spioni, kalah, excursia, matricea, maxq, oras, furnici, baschet, ingerasi, numar1, prieteni, aritma, cezar, bifo, pal, seceta, bare, soricel1, antena, avere, paianjen, bloc, schi, suma3, fractie, tunel, pepsi, prefix, tren3, avion, premii1, csir, top, bsir, secvente, cod4, cuburi3, limbaj, panouri, sant1, zumzi, sport1, baschet1, mere3, powerpuff, placare, sir4, volei1, tabel, ocr, numere7, lacusta, flori, pluton, elfi, mare, grupe1, maroco, cartonas, cabina, case, cod5, furnica, numere8, comoara1, exponent, control, exp1, joc13, popas, reactivi, siruri1, vanatoare, submult, text1, taxe1, visul, paranteze, puncte3, cub3, numere9, panglica, pietre, poartas, sume2, bal, secvsir, vot, prefix1, accesibil, palc, standard, bursa, meteo, jetoane, printesa, palindrom, joker, matriosca, loto, cuvant, cladiri1, secvente1, zar, tren4, asociativ, lego, medalii, figura, joc14, neuroni, char, dartz, turism1, calorii, xor1, paltrei, album, livada1, colorare, greutati, brazi, submatrix1, plaja, cd1, cifru3, permutare, miere, tetris1, conferinta, atelier, radical, bileprime, nx, atletism, sumb, minmax, sumacifre, jocprim, sircifre, cmmdcsecv, secvb, siruri3, cifru4, vase, carte1, grad1, litere, magic6, macheta, butoane, ec, stalpi2, fagure, goe, papusa, taburet, mesaj3, zar1, joc16, talent, joc18, cos, punctfix, risipa, liste, triburi, nr0, oneton, nor, nrpomi, paisprezece, anagramabil, zuma, joc20, dale, perechi2, consiliu, becuri2, codpatrat, adprod, qtri, reconst, arme, triunghi4, deal, ozn1, cifru5, flori1, elicop, roata, trifoi, maxbin, culori2, numar5, bile6, proiecte, alune, cuburi4, sstabil, intersectii, copaci2, 7segmente, amedie, drept2, divider, eliminare, matd3, prodnr, fraze, vectori1, compar, unific, galbeni, clepsidru, calcule, puncte6, maxp, cursa1, secvp, swap, extraprime, onigim, divizori1, remi1, tetris3, amestec, eoliene, split, momente, secvente2, ausoara, aranjare2, vintage, binremove, sminus, subsets, interclasare, palindromuri, colina, doitrei, rebus1, tcif, munte3, triunghi6, schi1, rascoala, solitar, praslea, vot2, tema, sprime, sir2dif, aperm, unudoi, prajituri, tan, concurs4, ech, arc, dominant, ordine, tv1, nebuni, sort2dist, lightbot, iepuras1, castig
Despre baze de numeraţie: balanta, gray, np, nr01, tablou, aritma, joc8, numere6, ceas2, test1, visul, numere9, accesibil, puteri35, sumb, joct, minmax, stele, secvb, goe, copii, b2k, becuri2, codpatrat, patrate7, cifrab, b210
Despre operaţii pe biţi: barfa, cod, gray, cartonase, plimbare, excursie, xor, vector, ro, nrbinar, radio, chimie2, dans, metro, caini, newcomp, viteza, bcast, aritma, pereti, morse, gradina, xor2, game1, efect, gxor, lgdrum, qtri, patrate7, panda, cript
Despre cifre: cifre1, div3, aparitii, numar1, prieteni, robinson, aritma, cezar, pal, suma2, cod4, powerpuff, ucif, sir4, numere6, pluton, mare, cifre2, ceas2, cod5, test1, comoara1, cifre3, concurs3, control, submult, visul, codul, numere9, sume2, smith, secvsir, prefix1, fazanr, prodmax, palindrom, control1, paltrei, alo, cifra1, case1, pin, sumacifre, triplu, goe, talent, copii, cifre4, nr0, anagramabil, codcorect, test2, bancomat, sume4, alice, culegere, numar5, cuburi4, cifreco, 7segmente, unupatru, xyz, unific, galbeni, cladiri2, extraprime, momente, palindromuri, conturi, numere12, imprimanta, martisoare, cifre5, pagini, tan, centrale, ech, speciale, cuart, inventie, robot5
Chestionare recomandate
surse trimise | ajutor