C++ Tablice dynamiczne
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

C++ Tablice dynamiczne

AutorWiadomość
Temat założony przez niniejszego użytkownika
C++ Tablice dynamiczne
» 2019-03-12 08:06:29
C/C++
bool Czytaj( char T[], int & rozmiar, int & akt )
{
   
    if( akt < rozmiar )
    {
        cin >> T[ akt ];
        if( T[ akt++ ] == '0' )
        {
            akt--;
            return false;
        }
        return true;
    }
    rozmiar *= 2;
    char * NTab = new char[ rozmiar ];
    for( int i = 0; i < akt; i++ )
    {
        NTab[ i ] = T[ i ];
    }
    delete[] T;
    T = NTab;
    cin >> T[ akt ];
    if( T[ akt++ ] == '0' )
         return false;
   
    return true;
}
Mam taką funkcje. Za każdym razem gdy próbuje wprowadzać dane wywala mi brak odpowiedzi. Pomożecie? Gdzie zrobiłem błąd?
P-174172
» 2019-03-12 11:53:59
Powinieneś przekazywać wskaźnik na tablicę przez referencję.

Do tego twoja funkcja jest przekombinowana. Bez problemu mógłbyś ją napisać 2 razy krócej, bez niepotrzebnych powtórzeń kodu i błędów - w dwóch różnych miejscach obsługujesz cyfrę zero i w zależności od niezwiązanych (?) okoliczności, raz zaliczasz zero do danych, a raz nie. Do tego w pesymistycznym przypadku, wczytanie zera powoduje niepotrzebną realokację pamięci.
P-174173
Temat założony przez niniejszego użytkownika
» 2019-03-12 13:50:42
C/C++
int main()
{
    int rozmiar = 0;
    char * Tab = nullptr;
    cout << "Wpisz liczbê w zapisie zymskim.\nWprowadz 0 aby zakonczyc wczytywanie\n";
    while( Czytaj( Tab, rozmiar ) );
   
   
}
//============================================
bool Czytaj( char * Tab, int & rozmiar )
{
    char bufor;
    cin >> bufor;
    if( bufor == '0' )
         return false;
   
    char * NTab = new char[ rozmiar + 1 ];
    for( int i = 0; i < rozmiar; ++i )
    {
        NTab[ i ] = Tab[ i ];
    }
    NTab[ rozmiar ] = bufor;
    delete[] Tab;
    Tab = NTab;
    rozmiar++;
    return true;
}
Teraz mam takie coś. Źle przesyłam wskaźnik do funkcji?
P-174174
» 2019-03-12 16:52:31
Powinieneś przekazywać wskaźnik na tablicę przez referencję.
P-174175
« 1 »
 Strona 1 z 1