Rozwiązuję zadanie 3.1 z tegorocznej matury z informatyki. Należy dla każdego fragmentu składającego się z dwóch liczb, policzyć ile jest takich fragmentów zapisanych w systemie dziesiętnym które są większe od 90. Poprawną odpowiedzią jest 903 a mój program wypisuje 899. Program wydaje się być poprawnie napisany, a w dodatku dla testu przykładowego czyli dla pierwszych 100 wierszy wypisuje poprawny wynik czyli 13. Liczę na waszą pomoc Informatycy, oto kod:
#include <iostream>
#include <fstream>
using namespace std;
char A[10000+70];
int main()
{
ifstream plik("pi.txt");
int najmniejsza = 1000000;
for(int i = 0; i < 10000; i++)
{
char znak;
plik >> znak;
A[i] = znak;
//B[i] = znak;
}
char a = A[0];
char b = A[1];
int ile = 0;
string fragment = "";
fragment.push_back(a);
fragment.push_back(b);
int liczba_start = 0;
for(int i = 0; i < fragment.size(); i++)
{
char znak = fragment[i];
if(i == 0)
{
liczba_start += znak - '0';
}
else
{
if(i == 1)
{
liczba_start += (znak - '0') * 10;
}
}
}
if(liczba_start < najmniejsza && liczba_start > 90)
{
najmniejsza = liczba_start;
}
if(liczba_start > 90)
ile++;
for(int i = 2; i < 10000; i++)
{
liczba_start = 0;
fragment = "";
a = b;
b = A[i];
fragment.push_back(a);
fragment.push_back(b);
// sprawdzamy czy zapis jest liczbą większą niż 90
for(int j = 0; j < fragment.size(); j++)
{
char znak = fragment[j];
if(j == 0)
{
liczba_start += znak - '0';
}
else
{
if(j == 1)
{
liczba_start += (znak - '0') * 10;
}
}
}
if(liczba_start > 90)
ile++;
}
cout << ile << '\n';
return 0;
}