% Angewandte Numerik 1, SoSe 2022
% Uebungsblatt 01, Aufgabe 02: Darstellung natuerlicher Zahlen
%
% Testprogramm fuer die Funktion a = convert2basis(n, b)
%
% Letzte Aenderung: 22.04.2022



%% Initialisierung

clearvars;
close all;
clc;

fprintf('\n');
fprintf('Angewandte Numerik 1, Sommersemester 2022\n');
fprintf('Uebungsblatt 1, Aufgabe 02: Darstellung natuerlicher Zahlen\n');
fprintf('\n');



%% Definition und Durchfuehrung der Testfaelle

testfall = 0;
while true                      % alle Testfaelle untersuchen
    testfall = testfall + 1;    % naechster Testfall
    
    
    %% alle Testfaelle definieren
    
    switch testfall
        case 1                  % Testfall 1: b = 2, n = 30
            b = 2;
            n = 30;
            a = [1 1 1 1 0];
        case 2                  % Testfall 2: b = 2, n = 31
            b = 2;
            n = 31;
            a = [1 1 1 1 1];
        case 3                  % Testfall 3: b = 2, n = 32
            b = 2;
            n = 32;
            a = [1 0 0 0 0 0];
        case 4                  % Testfall 4: b = 2, n = 33
            b = 2;
            n = 33;
            a = [1 0 0 0 0 1];
        case 5                  % Testfall 5: b = 2, n = 42
            b = 2;
            n = 42;
            a = [1 0 1 0 1 0];
        case 6                  % Testfall 6: b = 2, n = 134110
            b = 2;
            n = 134110;
            a = [1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0];
        case 7                  % Testfall 7: b = 8, n = 27
            b = 8;
            n = 27;
            a = [3 3];
        case 8                  % Testfall 8: b = 8, n = 3652
            b = 8;
            n = 3652;
            a = [7 1 0 4];
        case 9                  % Testfall 9: b = 8, n = 46807
            b = 8;
            n = 46807;
            a = [1 3 3 3 2 7];
        case 10                 % Testfall 10: b = 10, n = 3121
            b = 10;
            n = 3121;
            a = [3 1 2 1];
        case 11                 % Testfall 11: b = 10, n = 192310030133
            b = 10;
            n = 192310030133;
            a = [1 9 2 3 1 0 0 3 0 1 3 3];
        otherwise
            break;              % keine Testfaelle mehr vorhanden
    end
    
    
    %% Testfall durchfuehren und Ergebnis ausgeben
    
    spezString = 'Testfall %2d (b = %2d, n = %12d): %s.\n';
    if max(abs(a - convert2basis(n, b))) == 0
        fprintf(spezString, testfall, b, n, 'Bestanden');
    else
        fprintf(2, spezString, testfall, b, n, 'Fehlgeschlagen')
    end
    
end
