Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tablice dynamiczne

Ostatnio zmodyfikowano 2014-03-15 12:23
Autor Wiadomość
Midas
Temat założony przez niniejszego użytkownika
Tablice dynamiczne
» 2014-03-12 21:01:01
Witam, chciałbym się poradzić jak w najszybszy sposób z kodu który jest z lekcji www.cpp0x.pl/kursy/Kurs-C++​/Dynamiczne-zarzadzanie-pamieci​a-new-i-delete​/307, wypisywać co 2 element wpisanego kodu ? Proszę o pomoc.

C/C++
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
    int rozmiar = 0;
    int dlugosc = 0;
    char * tablica = NULL;
    cout << "Pusty wiersz konczy dzialanie programu." << endl;
    for( int i = 0; i < 40; i++ ) cout << "-";
   
    cout << endl;
    string tWiersz;
    do
    {
        getline( cin, tWiersz );
        if( tWiersz.length() > 0 )
        {
            tWiersz += "\r\n"; //dopisanie nowego wiersza
            if( dlugosc + tWiersz.length() + 1 > rozmiar ) //potrzeba więcej pamięci niż jest dostępne
            {
                cout << "Tworzy nowy blok pamieci!" << endl;
                int tNarzutDanych = 20; //jeśli ustawisz 0 to rezerwacja będzie się odbywała za każdym razem
                rozmiar = tWiersz.length() + dlugosc + 1 + tNarzutDanych; //nowy rozmiar bloku
                char * tNoweDane = new char[ rozmiar ]; //rezerwacja nowego bloku pamięci, który pomieści stare i nowe dane
                if( tablica != NULL ) memcpy( tNoweDane, tablica, dlugosc ); //jeśli stara tablica istnieje to skopiuj dane do nowej tablicy
               
                memcpy( & tNoweDane[ dlugosc ], & tWiersz[ 0 ], tWiersz.length() ); //skopiuj dane do nowej tablicy w wyznaczone miejsce
                if( tablica != NULL ) delete[] tablica; //zwolnij pamięć zajmowaną przez stare dane
               
                tablica = tNoweDane; //nadaj nowy wskaźnik zmiennej tablica
            } else
            { //jest wystarczająca ilość pamięci nie wymagana rezerwacja
                cout << "Jest wystarczajaca ilosc miejsca!" << endl;
            }
            memcpy( & tablica[ dlugosc ], & tWiersz[ 0 ], tWiersz.length() ); //skopiuj dane do tablicy w wyznaczone miejsce
            dlugosc = tWiersz.length() + dlugosc; //zapisz długość tekstu
            tablica[ dlugosc ] = 0; //oznacz miejsce końca tekstu w tablicy
        }
    } while( tWiersz.length() != 0 );
   
    if( tablica != NULL )
    {
        cout << "Dane jakie wypisales to: " << endl;
        cout << tablica << endl;
        delete[] tablica;
    } else cout << "Nie wpisales niczego!";
   
    getch();
    return( 0 );
}
P-106222
Midas
Temat założony przez niniejszego użytkownika
» 2014-03-12 23:53:02
Czy po przez modyfikacje wyjścia można uzyskać taki efekt, czy trzeba przebudowywać cały kod ? Bo chciałem zapętlić wyjście i przesuwać wskaźnik o 2 przy każdym przejściu, ale to nie wychodzi. Czy ktoś ma jakąś rade ?
P-106244
Midas
Temat założony przez niniejszego użytkownika
» 2014-03-13 21:09:53
??
P-106314
Midas
Temat założony przez niniejszego użytkownika
» 2014-03-14 00:05:30
To jest mój kod wypisujący tablice, nie wiem jak rozwiązać problem linii, żeby program wypisywał mi co linie co 2 znak. W tym momencie widzi wszystkie znaki jako jeden ciąg i wypisuje co 2 znak nie biorąc pod uwagę wiersz.
C/C++
int liczba = 0;
while( tablica[ liczba ] != NULL )
{
    if( liczba % 2 == 0 )
         cout << tablica[ liczba ];
   
    if( tWiersz == "\r\n" )
         cout << endl;
   
    liczba++;
   
}
P-106337
Midas
Temat założony przez niniejszego użytkownika
» 2014-03-15 12:23:06
Czy ktoś ma jakiś pomysł ?
P-106401
« 1 »
  Strona 1 z 1