Zadanie - klasa reprezentująca liczbę

0

Cześć :)

Mam do zrobienia zadanie w C++, od razu mówię, że raczej średnio się w nim orientuję. Bardzo proszę o waszą pomoc.

Zadanie:
Zdefiniuj klasę Liczba, która przechowuje w tablicy cyfry liczby dziesiętnej. Zdefiniuj operacje
wypisywania liczby, nadawania jej wartości (w postaci parametru konstruktora będącego napisem)
oraz mnożenia przez liczbę typu int. W przypadku gdy w czasie mnożenia okaże się, że tablica jest
za mała, procedura mnożąca powinna kopiować jej zawartość do większej. Zdefiniuj wreszcie
metodę silnia, która policzy silnię zadanej jako parametr liczby typu int.

#include <iostream>
#include <sstream>

using namespace std;

class liczba{

    private:
        int tab[];
        int t;
    public:
        liczba(string s);
        void wypisz();
        void mnozenie(int i);
        int silnia();

};

liczba::liczba(string s){

    for(int i=0;i<s.length();i++){

        t=s.length();

        if((s[i]==0)||(s[i]==1)||(s[i]==2)||(s[i]==3)||(s[i]==4)||(s[i]==5)||(s[i]==6)||(s[i]==7)||(s[i]==8)||(s[i]==9))
        {
            tab[i]=(int)s[i];
        }

    }

}

void liczba::mnozenie(int z){

    int d=1;
    int l;
    for(int i =0;i<t;i++)
    {
        d*10;
    }
    for(int i =0;i<t;i++)
    {
        l=d*tab[i];
    }   
    l*=z;
    ostringstream ss;
    ss << l;
    string s = ss.str();
    for(int i=0;i<s.length();i++)
    {

            tab[i]=(int)s[i];

    }
}
int liczba::silnia()
{
    int d=1;
    int l;
    for(int i =0;i<t;i++)
    {
        d*10;
    }
    for(int i =0;i<t;i++)
    {
        l=d*tab[i];
    }
    return l;
}
void liczba::wypisz(){
    for(int i =0;i<t;i++)
    {
        cout<<tab[i];
    }
}

int main()
{
    string s="123245";
    int i=2;

    liczba *l1 = new liczba(s);
    l1->wypisz();
    i=l1->silnia();
    cout<<"\n"<<i;  

}
3

Opisałeś zadanie, ale Twojego problemu już nie...

Na pierwszy rzut oka:

  • używasz nagich new (zapominając już o delete). To zły nawyk,
  • tego ifa-potworka można zamienić na isdigit z <ctype>,
  • int tab[]; nie skompiluje się jako element struktury. Użyj std::vector<int> na przykład,
  • popraw formatowanie (http://format.krzaq.cc może pomóc). Tragedii nie ma, ale można lepiej,
  • tab[i]=(int)s[i]; ⟵ tak się nie zamienia cyfry na liczbę.
1

Jakie jest pytanie?

0

Co muszę zrobić, żeby program działał poprawnie?

1

napisac go poprawnie.

a teraz zadaj pytanie co konkretnie Ci nie dziala i ktora funkcja za to odpowiada (za ta jedna rzecz)

3

Zacznij od doprowadzenia do tego, aby program się w ogóle skompilował. Potem możesz wziąć moje uwagi pod uwagę. Następnie debugger w rękę i do dzieła. Zapraszamy również do zadawania konkretnych pytań.

0

Program mi się kompiluje, tylko uzyskuje zły wynik. Nie wiem czy tablica przechowuje dobre dane. Konkretnie chodzi mi o zdanie "przechowuje w tablicy cyfry liczby dziesiętnej".

0

Jakiego kompilatora używasz? Twój program nie ma prawa się skompilować.

0

DEV-C++ i nawet uzyskuje wynik

0

uzyj kompilatora z tego tysiaclecia ;)
bo Twoj kod niestety nie ma prawa dzialac

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