Tabliczka mnożenia z liczbami binarnymi

0

Cześć! W marcu zaczęłam swoją przygodę z C++. Właśnie przygotowuje się do kolosa z programowania i natknęłam się na przykładowe zadanie mojego prowadzącego.

Napisz program, ktory wyswietla tabliczke mnozenia, ktorej rozmiar podaje uzytkownik (od 2x2 do 20x20), ale zapisana w kodzie binarnym. Zadbaj o poprawnosc rozmiaru tabliczki mnozenia. Tablica przechowujaca dane musi byc deklarowana na sterci. Zadbaj o odpowiednia alokacje i zwalnianie pamieci po wypisaniu tabliczki.

Napisałam program, natomiast nie mam pojęcia czy jest on napisany poprawnie i w 100% zgodnie z poleceniem.
Byłabym wdzięczna za wytknięcie błędów.

Kolejna sprawa - program działa, ale wariuje przy chęci utworzenia tabliczki większej niż 12x12.
Kombinowałam z różnymi ułożeniami tabulatora, ale nic to nie dało.

#include<iostream>
using namespace std;
   
    void binarna(int liczba){
        int i=0;
        int* tab = new int[20];
 
        while(liczba!=0)
        {
            tab[i++]=liczba%2;
            liczba=liczba/2;
        }
 
        for(int j=i-1;j>=0;j--)
            cout<<tab[j];
       
        delete tab;
    }
 
    int bin;
   
   
int main(){
 
 
    cout << endl;
    cout << "\t Tabliczka mnozenia." << endl;
   
    int wielkosc;
    cout << "Jaka wielkosc ma miec Twoja tabliczka? ";
    cin >> wielkosc;
    cout << endl;
   
    if((wielkosc<21)&&(wielkosc>1)){
   
        for(int i = 1; i<=wielkosc; i++){
           
            for(int j = 1; j<=wielkosc; j++){
                bin = j*i;
                binarna(bin);
                cout << "\t";
            }
           
            cout << endl;
        }
    }
   
    else
        cout << "Dozwolony rozmiar tabliczki miesci sie w przedziale od 2 do 20.." << endl;
       
       
    cin.ignore();
    cin.get();
   
return 0;
}
0

Usuwasz tablicę więc użyj:

delete []tab;
0
  1. czemu używasz dynamicznej tablicy o stałej długości, to nielogoczne (chodzi o tab), tu chodzilo zapewne o inny sposob przechowywania danych
  2. u mnie i na 12 sie rozjeżdża, chyba, że codzi o tabulatory - to taka podpowiedz, ze powyzej 11*11, otrzymamy liczę 8 bitową (ma 8 znaków), natomiast od 16 będziemy mieli 9 znaków w liczbie... czyli tabulator musialby byc na 10 znakow, przynajmniej w niektórych kolumnach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1