mam problem z poniższym zadaniem :
Napisz program, który wczytuje dane wejściowe (aż do EOF) i wypisuje te dane z następującą modyfikacją w reprezentacji bitowej: każda jedynka poprzedzona conajmniej trzema zerami zamieniona jest na zero. Program musi być w stanie wczytywać dane wejściowe nieograniczone długością.
Przykład 1: #
Wynik: !
Wyjaśnienie: W ciągu 00100011 zamieniamy drugą jedynkę i powstaje 00100001.
Przykład 2: bacxy
Wynik: ‘‘ax9
Mój kod działa tylko dla jednego znaku. Nie wiem jak bez używania tablic rozwiązać ten problem dla więcej niż jednego znaku, proszę o pomoc.
#include <stdio.h>
#include <stdbool.h>
int licznikzer=0;
int zamiana(int znak)
{
for(int i=0;i<8;i++)
{
if(licznikzer>0)
{
}
if(znak & (1<<i))
{
licznikzer=0;
if (i >= 5)
{
}
else
{
for(int j=i+1;j<i+4;j++)
{
if(znak & (1<<j))
{
break;
}
else
{
licznikzer++;
}
}
if(licznikzer==3)
{
znak = znak & ~ (1<<i);
licznikzer=0;
}
}
}
}
return znak;
}
int main()
{
int znak;
while((znak=getchar())!=EOF)
{
znak=zamiana(znak);
putchar(znak);
}
return 0;
}