/*
Wprowadzenie danych do dynamicznej tablicy napisów.
Program prosi o podanie ciągu napisów który użytkownik kończy napisem pustym.
W trakcie wprowadzenia gromadzi napisy w dynamicznej tablice.





















*/
#include <iostream>
#include <malloc>
#include <limits>

using namespace std; // w starszych kompilatorach trzeba zakomentować ten wiersz

void Drukuj(char **T,unsigned N)
  {
   unsigned i=0;
   for(char **K=T+N;T<K;++T) cout<<"T["<<(++i)<<"]=\""<<*T<<"\";"<<endl;
  }

void Zwolnij(char **T,unsigned N)
  {
   char **P=T;
   for(char **K=T+N;T<K;++T) delete[] *T;
   delete[] P;
  }

int main()
  {
   while(true)
     {
      unsigned Ilosc=0;
      char **T=0;
      while(true)
        {
         cout<<"Podaj napis nr "<<(Ilosc+1)<<" (<enter>-koniec): ";
         char bufor[80];
         cin.getline(bufor,80,'\n');
         if(*bufor)
           {
            char **N=new char*[Ilosc+1];
            if(T)
              {
               memcpy(N,T,Ilosc*sizeof(char*));
               delete[] T;
              }
            T=N;
            T[Ilosc++]=strdup(bufor);
           }
         else break;
        }
      if(!Ilosc) break;
      cout<<endl;
      Drukuj(T,Ilosc);
      Zwolnij(T,Ilosc);
      cout<<endl;
     }
   return 0;
  }

