Răspuns :
#include <stdio.h>
#define MAX 60000
using namespace std;
char a[MAX]; //0: eroare; Caracter: corect
char c;
long i, j;
int BitP, Cod, Bit, Nr1;
long Eroare; //va contine ultima pozitie
//a unui cod eronat sau 0 daca nu sunt erori
FILE *f, *g;
int main()
{
f=fopen("paritate.in", "rt");
g=fopen("paritate.out", "wt");
i=-1; Eroare=0; c=0;
fscanf(f, "%c", &c);
while (c!='\n')
{
i++; //pozitie caracter
BitP=c-'0'; //bitul de paritate
Cod=0; //aici formez codul
Nr1=0; //cati de 1
for (j=1; j<=7; j++) //citesc ceilalti 7 biti
{
fscanf(f, "%c", &c); //citesc bit
Bit=c-'0';
if (Bit==1) Nr1++; //daca e 1 il numar
Cod=Cod*2+Bit; //formez codul
}
if ((Nr1+BitP)%2==0) //daca cod corect
a[i]=Cod; //pun caracterul in vector
else //altfel
{
a[i]=1; //pun 1
Eroare=i; //si retin pozitia
}
fscanf(f, "%c", &c);
}
if (Eroare==0) //daca nu sunt erori
{ //scrie DA si
fprintf(g, "DA\n");
for (j=0; j<=i; j++) //afiseaza cele i+1 caractere
if (a[j]==10) //avand grija la caracterul cu codul 10
fprintf(g, "\n");
else //altfel
fprintf(g, "%c", a[j]); //scrie caracterul
// fprintf(g, "\n");
}
else //eroare!!!
{
fprintf(g, "NU\n"); //scrie NU si
for (j=0; j<Eroare; j++)
if (a[j]==1) //cauta erorile - cod 01
fprintf(g, "%ld ", j); //si afiseaza pozitia lor
fprintf(g, "%ld\n", Eroare); //afiseaza pozitia ultimei erori
}
fclose(g);
return 0;
}
#define MAX 60000
using namespace std;
char a[MAX]; //0: eroare; Caracter: corect
char c;
long i, j;
int BitP, Cod, Bit, Nr1;
long Eroare; //va contine ultima pozitie
//a unui cod eronat sau 0 daca nu sunt erori
FILE *f, *g;
int main()
{
f=fopen("paritate.in", "rt");
g=fopen("paritate.out", "wt");
i=-1; Eroare=0; c=0;
fscanf(f, "%c", &c);
while (c!='\n')
{
i++; //pozitie caracter
BitP=c-'0'; //bitul de paritate
Cod=0; //aici formez codul
Nr1=0; //cati de 1
for (j=1; j<=7; j++) //citesc ceilalti 7 biti
{
fscanf(f, "%c", &c); //citesc bit
Bit=c-'0';
if (Bit==1) Nr1++; //daca e 1 il numar
Cod=Cod*2+Bit; //formez codul
}
if ((Nr1+BitP)%2==0) //daca cod corect
a[i]=Cod; //pun caracterul in vector
else //altfel
{
a[i]=1; //pun 1
Eroare=i; //si retin pozitia
}
fscanf(f, "%c", &c);
}
if (Eroare==0) //daca nu sunt erori
{ //scrie DA si
fprintf(g, "DA\n");
for (j=0; j<=i; j++) //afiseaza cele i+1 caractere
if (a[j]==10) //avand grija la caracterul cu codul 10
fprintf(g, "\n");
else //altfel
fprintf(g, "%c", a[j]); //scrie caracterul
// fprintf(g, "\n");
}
else //eroare!!!
{
fprintf(g, "NU\n"); //scrie NU si
for (j=0; j<Eroare; j++)
if (a[j]==1) //cauta erorile - cod 01
fprintf(g, "%ld ", j); //si afiseaza pozitia lor
fprintf(g, "%ld\n", Eroare); //afiseaza pozitia ultimei erori
}
fclose(g);
return 0;
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!