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;
}