Page 2 - Informatyka na czasie. Wiesz, umiesz, zdasz. Podręcznik klasa 2 i 3
P. 2
WIESZ, UMIESZ, ZDASZ
Sposób na zadania
Zadanie 1
W pliku, który otrzymasz od nauczyciela (np. WUZ2_zad1_liczby.txt), w kolejnych 100 wierszach są
zapisane po dwie liczby oddzielone spacją. Pierwsza liczba (z zakresu od 2 do 10) oznacza podstawę
pozycyjnego systemu liczbowego, w którym zapisana jest druga liczba (wartość liczby w systemie
16
dziesiętnym mieści się w zakresie od 0 do 2 – 1). Oto pięć początkowych wierszy pliku:
5 2341
2 1111111100000000
9 3333
6 550012
4 3333
Napisz program lub programy rozwiązujące poniższe zadania. Odpowiedzi zapisz w sposób wskazany
przez nauczyciela.
Zadanie 1.1 (0–3)
Oblicz sumę wszystkich liczb z drugiej kolumny i zapisz wynik w systemie dziesiętnym. Suma pięciu
początkowych liczb wynosi 113 709.
Rozwiązanie
Tagi: systemy liczbowe, zamiana reprezentacji liczb między systemami liczbowymi, działania na
liczbach w różnych systemach pozycyjnych, kod ASCII
Krok 1
Aby rozwiązać to zadanie, wystarczy odczytywać liczby z kolejnych wierszy pliku, zamieniać je
na postać dziesiętną i sumować.
Krok 2
Każda z liczb do sumowania jest nie większa niż 65 535. Ponieważ jest ich 100, suma nie będzie
większa niż 6 553 500. Zmienna przechowująca sumę może więc być typu int.
Krok 3
Zamianę liczb na postać dziesiętną możemy zrealizować z wykorzystaniem funkcji. Nazwijmy ją
ToDec. Pobierze ona z pliku podstawę systemu liczbowego p i napis s, przechowujący liczbę.
Podczas przeliczania wartości liczby na postać dziesiętną należy uwzględnić kody ASCII cyfr
od 0 do 9, które zaczynają się od 48 (patrz s. 37).
Krok 4
Dane z pliku tekstowego odczytamy z wykorzystaniem zmiennej plikowej we typu ifstream
(patrz s. 336–338).
Odpowiedź: Kod źródłowy programu rozwiązującego to zadanie może być następujący:
1. #include <iostream>
2. #include <fstream>
3. #include <string>
4.
5. using namespace std;
6.
226