Odpowiedź :
Program wczytuje liczbę z pliku "liczby1.txt", następnie zamienia ją z postaci binarnej na dziesiętną, po czym sprawdza czy jest podzielna przez 2, 3 i 5. Po sprawdzeniu wszystkich liczb, zgodnie z poleceniem wynik ląduje w pliku "podzielnosc5.txt". Program nie generuje komunikatów.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int zamien(unsigned long long x)
{//funkcja zamienia liczbe binarna na dziesietna
string binarna = to_string(x);
int dziesietna = 0;
int potega = 1;
for (int i = 1; i <= binarna.length(); i++)
{
if (binarna[binarna.length() - i] == '1')
dziesietna += potega;
potega *= 2;
}
return dziesietna;
}
int main()
{
unsigned long long bin;
int liczba;
int nadwa = 0, natrzy = 0, napiec = 0;
fstream liczby("liczby1.txt", ios::in);
while (!liczby.eof())
{
liczby >> bin;
liczba = zamien(bin);
if (liczba % 2 == 0) nadwa++; //sprawdzanie
if (liczba % 3 == 0) natrzy++;//podzielnosci
if (liczba % 5 == 0) napiec++;
}
liczby.close();
fstream wynik("podzielnosc5.txt", ios::out);
wynik << nadwa << endl; //zapisanie
wynik << natrzy << endl;//wyniku
wynik << napiec; //do pliku
wynik.close();
return 0;
}
