W pliku binarne.txt znajduje się 500 napisów złożonych wyłącznie z zer i jedynek.
W każdym wierszu umieszczony jest jeden napis. Każdy napis ma długość podzielną przez 4.
Napisz program (lub programy), który da odpowiedzi do poniższych zadań. Odpowiedzi
zapisz w pliku zadanie4.txt, każdą odpowiedź poprzedź numerem odpowiedniego
zadania.
Zadanie 4.2
Napisy z pliku binarne.txt traktujemy jako binarne zapisy liczb dziesiętnych, w których
każdy segment złożony z 4 znaków jest reprezentacją binarnego zapisu jednej cyfry (zapis taki
nazywany jest kodem BCD).
Napis uznajemy za niepoprawny, gdy któryś z segmentów ma wartość większą niż 9 (czyli nie
jest zapisem cyfry dziesiętnej).
Przykład:
Napis 10010111 jest poprawny i reprezentuje liczbę 97, natomiast napis 11010000 nie jest
poprawny, gdyż jego pierwszy segment (1101) reprezentuje w zapisie binarnym większą od 9
liczbę 13. Podobnie nie jest poprawny napis 1110, ponieważ reprezentuje w zapisie binarnym
liczbę 14.
Podaj liczbę niepoprawnych napisów z pliku binarne.txt oraz najmniejszą długość
niepoprawnego napisu.
oto mój kod wychodzi mi 390 a powinno 359,ktoś widzi błąd?
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>
using namespace std;
bool czy_B(string s)
{
int ile=0;
for(int i=0;i<s.size();i++)
{
if((s[i]=='1'&& s[i+1]=='1'&&s[i+2]=='1'&&s[i+3]=='1')||(s[i]=='1'&& s[i+1]=='1'&&s[i+2]=='1'&&s[i+3]=='0')||(s[i]=='1'&& s[i+1]=='1'&&s[i+2]=='0'&&s[i+3]=='0')||(s[i]=='1'&& s[i+1]=='0'&&s[i+2]=='1'&&s[i+3]=='1')||(s[i]=='1'&& s[i+1]=='0'&&s[i+2]=='1'&&s[i+3]=='0')||(s[i]=='1'&& s[i+1]=='1'&&s[i+2]=='0'&&s[i+3]=='1'))
{
ile++;
}
if(ile>0)return false;
return true;
}
}
int main()
{
string s[500];
int ile_A=0;
ifstream we("ciag.txt");
for(int i=0;i<500;i++)
{
we>>s[i];
if(czy_B(s[i]))ile_A++;
}
cout<<ile_A<<endl;
return 0;
}