Cześć, przygotowuję się samodzielnie do matury 2020 z informatyki i rozwiązuję zadania ze starszych matur.
Stanąłem na maturze 2011 zadanie 6.b, ponieważ mój program cały czas pokazuje zły wynik, a ja głowię się co może być nie tak, a powoli kończą mi się pomysły dlatego piszę do was.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int bin2dec(string number);
int main()
{
fstream plik;
ofstream zapisz("wyniki6.txt", ios::out);
plik.open("liczby.txt", ios::in);
string liczba;
int max = 0;
if (plik.good() == true)
{
for (int i = 0; i < 1000; i++)
{
plik >> liczba;
bin2dec(liczba);
for (int j = 0; j < 1000; j++)
{
int k = atoi(liczba.c_str()); //zamiana string liczba na integral
if (max < k)
{
max = k;
}
}
}
zapisz << "Najwieksza liczba w tym pliku to " << max;
}
else
{
cout << "Nie." << endl;
}
return 0;
}
int bin2dec(string number) //zamiana z systemu binarnego na dziesietny
{
unsigned int dec = 0;
int j = 0;
for (int i = number.size() - 1; i >= 0; i--)
{
if (number[i] == '1')
{
dec += pow(2, j);
}
j++;
}
return dec;
}
Według mnie wszystko jest okej, ale program pokazuje liczbę 2147483647 zamiast 64502.