Page 3 - Informatyka na czasie. Wiesz, umiesz, zdasz. Podręcznik klasa 2 i 3
P. 3
Sposób na zadania
7. int ToDec(int p, string s)
8. // wartość dziesiętna liczby s, zapisanej w systemie o podstawie p
9. {
10. int w=0;
11. for (int i=0;i<s.size();i++) w=w*p+s[i]-48;
12. return w;
13. }
14.
15. int main()
16. {
17. int p,suma=0;
18. string s;
19. ifstream we("WUZ2_zad1_liczby.txt");
20. for (int i=0;i<100;i++)
21. {
22. we>>p>>s;
23. suma=suma+ToDec(p,s);
24. }
25. we.close();
26. cout<<"Suma: "<<suma;
27. return 0;
28. }
Zadanie 1.2 (0–3)
Podaj najmniejszą i największą liczbę znajdującą się w pliku oraz podstawy systemów, w których te
liczby zostały zapisane.
Dla pięciu początkowych liczb z pliku wynikiem jest:
Minimum: 4 3333
Maksimum: 2 1111111100000000
Rozwiązanie
Tagi: systemy liczbowe, zamiana reprezentacji liczb między systemami liczbowymi, znajdowanie
minimum i maksimum
Krok 1
Żeby rozwiązać to zadanie, wystarczy odczytywać kolejne liczby z pliku i porównywać je
z aktualną wartością zmiennych pomocniczych przechowujących minimum i maksimum.
Porównujemy wartości dziesiętne wszystkich liczb.
Krok 2
Jako wartość początkową zarówno minimum, jak i maksimum możemy przyjąć liczbę
z pierwszego wiersza pliku – wówczas porównywanie rozpoczynamy od drugiego wiersza.
Możemy też przyjąć wartości graniczne: minimum równe 65 535, maksimum równe 0.
Wykorzystamy pierwszy z podanych sposobów.
Krok 3
Aby porównać liczbę odczytaną z pliku z aktualnymi wartościami minimum i maksimum, należy ją
zamienić na liczbę w systemie dziesiętnym. Wykorzystamy w tym celu funkcję ToDec.
227