Dev C++
W pliku liczby.txt, w oddzielnych wierszach, znajduje się 1000 liczb zapisanych w systemie dwójkowym o długościach zapisów od 2 do 16 cyfr (0 lub 1). Napisz program, którego wykonanie da odpowiedzi do poniższych podpunktów. Odpowiedzi zapisz w pliku zadanie6.txt, a każdą odpowiedź poprzedź literą oznaczającą ten podpunkt.
a) Ile jest liczb parzystych w całym pliku?
b) Jaka jest największa liczba w tym pliku? Podaj jej wartość w dwóch systemach: dwójkowym i dziesiętnym.
c) Ile liczb w całym pliku ma dokładnie 9 cyfr? Podaj sumę tych liczb w systemie dwójkowym.
Liczby w pliku liczby.txt :
10011
1110001011011001
1100000010010
11011
1000111111101
111
1000111011111
1100100101001001
111010100001
1100101
1110101010101
100010001001001
11011000011111
10101000
110100101
110010110
1011001010010001
1000011101010110
1011000000
110111010001
10101100
1101100110111
101101101
10010000000001
1111110000100
1101010000110
100101111111
111000111011111
10000001
10001000110111
101100001
110010100
111011101
1011001101111101
111100
1011
11011
100001101
111000101010011
10110101
11110111101101
1001001100100011
10101100111000
1100010100100
10000010001000
100110101
11110010101111
111001001011100
1010100000001111
110111110
11100111111101
1100111111
110101010
101000001
111110110101
1110100110000101
11000011011
1100101111010101
1011100000001
1111
10110100101110
110111010
11101001111011
1010011001000110
11100111110
1011111010010
101111001100
11010110110
10001110110
110110001110
1011101
10011
1110111
10100010000010
111111
1000001111100
111
101101010010111
10100011
101100100
1000011101110010
101011010111011
110101101010
110010
111100001101111
1111111111011
1001011101
111011111
10010110100101
10010111
111111100010
1010010010
10001
100001
1110001000101
10000011
1011011100110111
101011010000011
110100101111
1101
10110100000
1000001000111
1100111
111110
100111100000010
101100
101000111000000
1111
100000100
111101010101101
10010001010
100111
1000011001101000
1010010011010
10100100110101
1000000
10100010101011
111101000000110
1100101000100100
10100001011000
111000101100011
1110000111
1000110000111010
110101100000011
1000
10000101011101
100000
1101000011001
10101100101
11111001110101
11100010100010
1110001
111000010101010
1110
11111101010101
1001010
110101011001000
1101110110001000
1100100011001001
1000101
1010100000110010
1001110
11101001
11100000001
111110
10101110011001
10110111
1010010110010100
1111100101111000
11110
11101101110011
101110
1001100011100101
10010111000
1100000
101011110
100110010
101111001101100
110010
110000100000011
10101101010011
110110001010110
1110110
111111101100010
110110
1000111101
1001000001100110
1100011100100
1101000110110000
111111111000000
110111011010001
10100
100011100110110
10101100000011
1111010101001
11100001110110
111010001
111001101
1011101000000
100
1000011000000111
110011110
10001011010101
100011011111011
11011100
1000
1110110
1011100101111
101100100011000
1100100
100001001010001
1000
110111101000101
10001010110111
11011100
1001111111
100010
1100
10101011
100
111111000011001
10
101100100100001
11
110001101
101101011111001
100000101011110
110011100
11
1110
1000000001011000
101110111
100
110010001001000
111001110001001
101111001001110
10
1011011110010
11
10110111110011
1011
1001100
1000001
11110
11100
1010110111011110
1100100011011011
1000011010
10111100101011
100100
10100110
100001111111010
1000000
10010
1010000100101100
1000010
11101
1010000110
10001
111
11010111101
100011110
100101
100111
11
1101
101
111010011011110
10010
111
110101110111011
10110000000010
100
111
1100000111011110
11111
110001
111111
1111101111110110
11110
1011010
111010101
11110
11000111101000
10000
101001100000011
10000
1001
1010101110110
10100111110
1000
100111110011
101101101000000
11010101
1000
111110
1010101111000111
101000
1110101010101
101011
110010100101100
1011100
1001010
110000110000001
10111
100010110011001
101
10100100
111100001100
10000
100101
110001010111011
101100000
101011010011010
111010111101111
1011011111
10111101010000
100100100
1011000
1100000110011110
111
1001001010
1111
10100001111010
101
10100000000
1110110001100
1010011010
100000010010010
11011110
10011111
1001110100010010
111000010010
110
110110111001110
100001101000
1110010
10101110
100001000100011
1010111101100110
1011110011
10100010001
1101101101110001
10011
11001101
10111111
1101111010011010
10010
1010101010
1010001101111101
111010
111
1100011100111101
1001110010000101
10
11100110000011
101010110011011
110000000001101
10010101011
111
1100101
11111000010
110000111
11001111
101101101
111
100100101
1110111110
1001111
10110011
1110101101011010
1001000000110010
111000110111100
1111000110
10011101011
100100110001000
1100101
111000111
111010011
110001000
10001010100
11101100011111
111
11010111
1001001
1110
1100001000101100
11101101000
110110111001110
10011
1101001001100011
110101101
1111001101
1010
1000010001111111
1101010110111001
111100000110
10111111101000
1110011001001010
11000
10001101
101000000111010
1000011111
1011010001
10010
1111010010
1101011111111
111001100110101
110100000
101001110111110
10100
1001100000011000
11111001001010
10111
10100
10001011011
110100100110001
10110110
101000110100011
1001001
11
110110
101001
111100110
10101010
110001100
11011111000001
1010000010
111
1100001110010
1011001001100
10000000
101100101010111
111
101100001011110
100110000
10011001110
10
101110001
11101101100
1000000110
101001110010
1100001101
1100110101101001
1000000
1101110
1000011101
10001000111001
100011011
1101
1100011111111
10010010110011
10011111100
1101110011
1011
1010010111010
1011100001010
1100
10000100110
110001100
1100111
1011011111
11100011101001
110111010011
11000010
1101110101011010
10101011101
1111111000
100000111
1011100011110010
10011
10110010101
111101000
110100100011
111110
11111000001
1011101100
11011
11010
11001101111110
10110100
1110111001
10110101010110
11111010001
10100101
111101101101
11001110111101
10001100
100011111
10111111011101
11100101
11101110
101011101010
11011110100
111001101010100
111010100
111111010
1011101111
11000010
10101000
10000100
10110
1000
11010
1000101
110111001
11000010
110110
1101100
111110100
1111010
1011110
10010001000011
10111101101000
10010001011100
10110010111
11000101101
101100111011110
1111000101
100111000
100000100
1000011100011
110001101100
1101111101111
1011001011001111
100101110
11011001111
1110010011001
11001101111
111
111011001111011
10111111
100110111
10011011000
1100000100010101
1111111100
11000111
10101000
11001001000000
10011100101111
1100110100101
101100001
110001110
1001111100011
110101111
110100111010
1100
10000110011
1011011
1110010010001111
11001100
110011111010
1110001100
1100011011110
1011001000
1101000100111
110011010011
1101111000
10000000
100010001111
1100010000000101
111100011
1011000110
101011001
110000000010101
1010100
1100100101011
100110110101
1000011000
100001
111001110100
110111
11001
1011000
1001110
1101000100
101100011
1000000011
101101
11011011
1001
100011010011
11001100011
110101000001
11001001
11101110010
100110000
1100100111000
1010101000010
110011010
10100011101
11100000111
11011111
101100010111101
11011
1010011001000
111011100111
1110110111111110
100
100011110001000
10111011011
1111100110101
111101100
111111110000001
100111011110010
1000000001101
11100001101
1101001011101
101011
1011
1001110000
11111000
1100011
101001
10101111
100100
1000001
1101101
1001
10001000
111100100
1010100111110100
11011001111
1111000010000
101010000
11101111011
10011111
11101010101
10000001
1000100001101
11001110
111011100
110001100
1110110
11111010010
11100001100
1000
1000000010
11100010010000
110011011
1001010011
1101010010001
11100001
100110000
1111110101
101010100
1111101010
1111101110
10100111101
110010001
1000001111010
1010000100
11110000001
10101100011
111100101
111010110000001
101110011
11111110010
110100000011
1010010100
111101
1000
110
10
101000
110101000
10011001111011
10101101
1000001110101111
11100010000
10000111
1110011100010011
110110
1000001
1111010100001
1000111101111011
10110110
101010100
1010001001100010
10010111001
100110111
10110000
1011010
1011100
110110111010
11
111010100111011
1111110
11111110110
111110100001
1101101000100
1010100010
100100000110
11111100111
110010001110
1101011011101
1111001101
100000111
10000101010000
111110110
111101000
1111101011010101
111100
101010101
101101
101100
1010110
1010010
11010111101
11100000100011
11010110
110110010
1110100101
10001111
1001110100
11100011
110000100110
1101100000
10101011101
110110011
111101100
11011101101111
1001
1110110010010001
100001110
100000111
10011001
1100010
1001001
101010
100100011011
11101011111110
10000101110101
1011100101101000
100101101011
1010101011000
101111001
1000110000110
1001110110100
110101000110101
110100111000101
1110
1111100011101011
101011110110
1111011110
101001001111
10101101
111011100110
100111100011
1011001000
111010110000
11000001111100
111100000
11110100011
1000010011
1100001
1000010
1000000100100
110010011
10011000
10110
10001011
111000
11011011
100101
100100
101010
1100011010
110000111
11110100111011
1010011001110
110111010100
10111010100110
101100100110
100001100001
111111001110
10001101010
1001001111110
1011101011011
111011011011101
1100001100
111000101011
100011101011
1000111
111100010101001
101000111100
1000001010
100100111011111
1011100101111
1100001001000
110101001001
101110000011100
1100000001111111
111100011101
111100000111001
1101111110110
10101
100001110111
110001
11001011011101
1101011100011
11011000011
100110101000011
1011010100101
11101100100010
101100100011000
101
10101111101010
111100
1101100111100
11001010111011
10000101010110
1010111001110
11100111100010
100000100111
100010011010010
1101101000
1110001010
1010000001000
101111010
1011101100001
10
110110100111
101000100110
10011101
1100
1101111000001
10010101101000
11111111010
11010111
11001010110101
100001001100
111000010111
10110111111011
11000100100
100110101101
10011101
1010110111
100011
11101000110
1010001100
1110001
111010110
11010101
11101110
1101011000
1000100000001
1111000000000
10001000111
100100000100111
11111000110
100010100110
1100000101
11000100010000
10000
111101111100
101111100100
110111011101
1000001011
1010100100
1011101000010
110000101001100
110100100010011
1001111110100100
011110011100000
1101101000111011
1011101011
1010111111111110
1010111
111111100101
110111011010100
11100100101
1100011
10001100110
1110100
1101100111000
10010000011000
1111011011010
101010110101
1111000000
11001000111
111010000111
110001100010
11011100110
1100001
111011101100
1101100011
1101110001100
110110111001010
10110000001
1100111110001
110000111001
11100110111111
1100111000110100
11010100111001
1110000110000111
110010111
10101101
10000100101
1111110
100011110011
1011
1110111010111
1001101001100010
10100110010
1100001101100
100101101110111
1100011011
10000101110000
11011110000000
11001011011
1111001111001110
1110010110101010
11100001010001
110001001000011
11101010
11001101
101010010111
100000000
1100101111
11100101010
1110100000
1111111000001
11000101
111110101010
1100011011
1010010011110
1000010110
110001100100
1000001111
11000000
1100101111110
1111111000010
1111001100111
101100110100
11110
11011010010
1111101011001
1100101101001
111111110011
110001000
101111110101
10010001000
10110000110011
111101011
100011111100
110101111
100000
111010
11100001000
1101001000
111100010
111111011001
11111011
11011101111
10010
100101101
1001000000100
1001001
1010000110111000
11010101
10110111
11
1110111101001010
1011101
111111000
11101100
110100101
11001111001010
1001101
11101101110
100001110101
100001
1001001101
11100010110
11111000110000
100
1000110111010
110100100011110
101011011010
1111101
11011100001
11111110111
1110011010001
1010011100010101
11110101111
1000110
10010000010
1000110111011101
1011110110111111
100100010
111100011
100100000110
110110110110
1011011000
1000011010011
1110011100000110
100101000110
10010001110011
101101011000
11100110111000
110101011
110010010001
110011110110
100000101111
101001111001
1110111110
1010011100110
1010
101111110101
10111100111000
111100101100
10101100000111
10011011
1000001
10011000110
100
1111001100001110
11011000100000
11110011011101
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
/**
* zamienia string z liczbą binarną na liczbę
* @param str liczba do zamiany
* @return wartość str
*/
unsigned int toNumber(const string &str) {
unsigned int wynik = 0;
unsigned int v = 1;
for (string::const_reverse_iterator r = str.rbegin();
r < str.rend();
++r) {
wynik += (*r == '1') ? v : 0;
v <<= 1;
}
return wynik;
};
/**
* zamienia liczbę na stringa z jej zapisem binarnym
* @param val liczba do zamiany
* @return string z liczbą w postaci binarnej
*/
string toString(unsigned long val) {
string wynik;
wynik.reserve(sizeof(unsigned long) * 8); /* unikam wielokrotnych alokacji pamięci. */
bool nzero = false; /* znacznik czy była już jakaś cyfra nie zerowa, do pozbycia się wiodących zer */
for (int i = sizeof(unsigned long) * 8 - 1; i >= 0; i--) {
if (val & ((unsigned long)1 << i)) {
nzero = true;
wynik += '1';
} else if (nzero) {
wynik += '0';
}
}
return wynik;
};
int main(int argc, char **argv) {
ifstream f("liczby.txt");
string str;
unsigned int evenCnt = 0;
unsigned int max = 0;
unsigned int nineDigCnt = 0;
unsigned int nineDigSum = 0;
while (f >> str) {
unsigned int val = toNumber(str);
if (str[str.length() - 1] == '0') {
/*liczba parzysta ma ostatnią cyfrę binarną 0*/
evenCnt++;
}
if (val > max) {
max = val;
}
if (str.length() == 9) {
nineDigCnt++;
nineDigSum += val;
}
}
f.close();
ofstream o("zadanie6.txt");
o << 'a' << evenCnt << endl
<< 'b' << max << ' ' << toString(max) << endl
<< 'c' << nineDigCnt << ' ' << nineDigSum << ' ' << toString(nineDigSum) << endl;
o.close();
};