Zadanie - klasa reprezentująca liczbę

Odpowiedz Nowy wątek
2017-02-16 11:03
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;  
 
}
 
edytowany 4x, ostatnio: kq, 2017-02-16 11:14

Pozostało 580 znaków

2017-02-16 11:10
kq
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ę.

Pozostało 580 znaków

2017-02-16 11:19
1

Jakie jest pytanie?

Pozostało 580 znaków

2017-02-16 11:21
0

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

Pozostało 580 znaków

2017-02-16 11:24
1

napisac go poprawnie.

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

edytowany 1x, ostatnio: fasadin, 2017-02-16 11:24
Ty napisales wiecej, na po prostu czesciej enter naciskam ;) - fasadin 2017-02-16 11:26

Pozostało 580 znaków

2017-02-16 11:24
kq
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ń.


Pozostało 580 znaków

2017-02-16 11:29
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".

Pozostało 580 znaków

2017-02-16 11:32
kq
0

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


Pozostało 580 znaków

2017-02-16 11:33
0

DEV-C++ i nawet uzyskuje wynik

Pozostało 580 znaków

2017-02-16 11:38
0

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

edytowany 1x, ostatnio: fasadin, 2017-02-16 11:39
Ja tego nie rozumiem, codebloki, visuale, nawet jakieś tam kompilatory z Qt na Linuxie a używa się DEVa dodatkowo tego starszego. - Marcel2727 2017-02-16 16:04
@Marcel2727: Po jaką Anielkę uczeń liceum ma musieć instalować Code::Block a tym bardziej VisualStudio by zaliczyc przedmiot informatykę?? Overkill totalny, chyba że chce się poważniej interesować tematem. Dev-C++ jest łatwy w obsłudze i w instalacji, = oszczędność czasu na naukę obsługi zbędnych narzędzi, a do programów takich jak ten nada się dość. Byleby tylko był to ten uaktualniony Orwell Dev-C++, a nie oryginalny, który wciąż jest wysoko w Googlach… - kmph 2017-02-16 17:28
@kmph co takiego trudnego jest w code::blocks czego nie ma w dev c++? - mad_penguin 2017-02-16 17:43
@kmph Nawet technika informatyczne tego używają, a co dopiero liceum gdzie chce się przejść od razu na coś lepszego. Tak Dev jest łatwe w instalacji, C::B i VS też. C::B i VS również są łatwe w użyciu. Zbędnych narzędzi? Jakich zbędnych narzędzi? Nie wiem w ogóle o czym Ty piszesz, ale chyba nigdy nie korzystałeś z C::D lub VS skoro mówisz o jakiś zbędnych narzędziach, a jak już jakieś jest według Ciebie to na bank nie jest potrzebne do programowania, ten dev build nie ma? Kompiluj? :D Z resztą świetny pomysł, początek przygody z programowaniem to staroświeckie IDE. - Marcel2727 2017-02-18 02:23

Pozostało 580 znaków

2017-02-16 11:39
sig
0
tyryry napisał(a):

DEV-C++ i nawet uzyskuje wynik

Ostatnia wersja takowego wyszła 12 lat temu (nawet wtedy był niezgodny z ówczesnymi standardami), zamień go na coś innego.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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