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
   1   2   3   4   5   6   7   8