Metoda zwracajaca sume lub strig

0

Znowu pisze ten post bo nie wiem dlaczego zniknął, pewnie moderator stwierdził ze juz był ale szukałem i nie znalazłem.Moze cos podobnego było.

Program prawie dział dzięki wielkiej pomocy rtp i kilku innym ale jeszcze nie zwraca stringu nie wiem dlaczego ciemna masa ze mnie [???] .Wszystko ładnie tylko suma nie zwraca stringu.

Zaimplementować wzorzec klasy tablicy 10-elementowej z kontrolą zakresu indeksu dla operatora []. Wzorzec powinien posiadać metodę suma() zwracającą sumę elementów. Sprawdzić działanie tej metody dla typów liczbowych i zaimplementować specjalną wersję dla wzorca z typem char* zwracającą string będący połączeniem elementów tablicy.

Pewnie ten post za długo nie pobedzie :). Moderator [diabel] sie nim zajmnie :-(

Oto program:
#include <iostream>
#include <string>
#include <typeinfo>

using namespace std;

template <typename TYP> class TabBaza
{
public:
TYP suma;
TYP tablica [10];

    TYP operator [](int i)
    {
        if (i < 10) return tablica[i];
        else
        {
            cout << "Poza tablica" << endl;
            exit (0);
        }
    }

};

template<typename TYP> class Tab : public TabBaza<TYP>
{
public:
Tab()
{
TYP war_elem;
for (int i = 0; i < 10; i++)
{
cout << "Podaj " << i << " element tablicy: ";
cin >> war_elem;
Tab<TYP>::tablica[i] = war_elem;
}
}
TYP Suma(void)
{
{
TYP s1 = 0;
for (int i = 0; i < 10; i++) s1 += TabBaza<TYP>::tablica[i];
TabBaza<TYP>::suma = s1;

        return TabBaza<TYP>::suma;
    }
}

};

template<> class Tab<char*> : public TabBaza<char*>
{
public:
char suma;
Tab()
{
suma = NULL;
string war_elem;
for (int i = 0; i < 10; i++)
{
cout << "Podaj " << i << " element tablicy: ";
cin >> war_elem;
Tab<char
>::tablica[i] = new char[war_elem.length()+1];
strcpy(Tab<char*>::tablica[i], war_elem.c_str());
}
}
~Tab()
{
for(int i = 0; i < 10; i++) delete[] Tab<char*>::tablica[i];
if(suma != NULL) delete[] suma;
}
char* Suma(void)
{
if(suma != NULL) delete[] suma;
unsigned int dlugosc = 0;

    for(int i = 0; i < 10; i++) dlugosc += strlen(TabBaza<char*>::tablica[i]);
    suma = new char[dlugosc+1];
    suma[0] = '\0';
    for(int l = 0; l < 10; l++) strcat(suma, TabBaza<char*>::tablica[i]);

    return suma;
} 

};

int main(int argc, char* argv[])
{
Tab <char*> t;

    cout << "Suma: " << t.Suma() << endl ;

    cin.get();

getchar();
return 0;
};

0

twój post znajduje się w newbie!

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