Szukaj na tym blogu

środa, 14 maja 2025

Zadanie 1. Funkcja rekurencyjna (0-9)

 Arkusz egzaminacyjny:

Pomoc do Zadanie 1.1.

Wersja ze zmienną globalną

#include <iostream>
using namespace std;

int licznik = 0;  // zmienna globalna

int przestaw(int n) {
    licznik++;  // zliczamy każde wywołanie

    int r = n % 100;     // ostatnie dwie cyfry
    int a = r / 10;      // cyfra dziesiątek
    int b = r % 10;      // cyfra jedności
    n = n / 100;         // usuwamy dwie ostatnie cyfry

    if (n > 0) {
        return a + 10 * b + 100 * przestaw(n);
    } else {
        if (a > 0) {
            return a + 10 * b;
        } else {
            return b;
        }
    }
}

int main() {
    int n = 316498;

    int wynik = przestaw(n);

    cout << "Wynik: " << wynik << endl;
    cout << "Liczba wywołań funkcji: " << licznik << endl;

    return 0;
}

Wersja z licznikiem przekazywanym jako referencja

#include <iostream>
using namespace std;

int przestaw(int n, int &licznik) {
    licznik++;  // Zliczamy każde wywołanie funkcji

    int r = n % 100;     // ostatnie dwie cyfry
    int a = r / 10;      // cyfra dziesiątek
    int b = r % 10;      // cyfra jedności
    n = n / 100;         // usuwamy dwie ostatnie cyfry

    if (n > 0) {
        return a + 10 * b + 100 * przestaw(n, licznik);
    } else {
        if (a > 0) {
            return a + 10 * b;
        } else {
            return b;
        }
    }
}

int main() {
    int n = 316498;
    int licznik = 0;

    int wynik = przestaw(n, licznik);

    cout << "Wynik: " << wynik << endl;
    cout << "Liczba wywołań funkcji: " << licznik << endl;

    return 0;
}

Pomoc do Zadanie 1.3.

C++

#include <iostream>
using namespace std;

int przestaw(int n) {
    int w = 0;           // wynik końcowy
    int mnoznik = 1;     // do ustawiania pozycji cyfr

    while (n > 0) {
        int r = n % 100;  // dwie ostatnie cyfry
        int a = r / 10;   // cyfra dziesiątek
        int b = r % 10;   // cyfra jedności

        if (n / 100 > 0) {
            w = w + (a + 10 * b) * mnoznik;
        } else {  // ostatnia para cyfr
            if (a > 0) {
                w = w + (a + 10 * b) * mnoznik;
            } else {
                w = w + b * mnoznik;
            }
        }

        n = n / 100;          // przechodzimy do kolejnych cyfr
        mnoznik = mnoznik * 100;  // przesuwamy się o dwie pozycje w lewo
    }

    return w;
}

int main() {
    int n;
    cout << "Podaj liczbe: ";
    cin >> n;

    int wynik = przestaw(n);

    cout << "Wynik: " << wynik << endl;

    return 0;
}

Python

def przestaw(n):
    w = 0           # wynik końcowy
    mnoznik = 1     # do ustawiania pozycji cyfr

    while n > 0:
        r = n % 100    # dwie ostatnie cyfry
        a = r // 10    # cyfra dziesiątek
        b = r % 10     # cyfra jedności

        if n // 100 > 0:
            w = w + (a + 10 * b) * mnoznik
        else:  # ostatnia para cyfr
            if a > 0:
                w = w + (a + 10 * b) * mnoznik
            else:
                w = w + b * mnoznik

        n = n // 100           # przechodzimy do kolejnych cyfr
        mnoznik = mnoznik * 100  # przesuwamy się o dwie pozycje w lewo

    return w

# Przykład użycia
n = int(input("Podaj liczbę: "))
wynik = przestaw(n)
print("Wynik:", wynik)

Java

import java.util.Scanner;

public class Przestawianie {

    public static int przestaw(int n) {
        int w = 0;           // wynik końcowy
        int mnoznik = 1;     // do ustawiania pozycji cyfr

        while (n > 0) {
            int r = n % 100;    // dwie ostatnie cyfry
            int a = r / 10;     // cyfra dziesiątek
            int b = r % 10;     // cyfra jedności

            if (n / 100 > 0) {
                w = w + (a + 10 * b) * mnoznik;
            } else {  // ostatnia para cyfr
                if (a > 0) {
                    w = w + (a + 10 * b) * mnoznik;
                } else {
                    w = w + b * mnoznik;
                }
            }

            n = n / 100;          // przechodzimy do kolejnych cyfr
            mnoznik = mnoznik * 100;  // przesuwamy się o dwie pozycje w lewo
        }

        return w;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Podaj liczbę: ");
        int n = scanner.nextInt();

        int wynik = przestaw(n);

        System.out.println("Wynik: " + wynik);
    }
}