/* 
   Laboratorium Praktyki Programowania  
   Program przykładowy 
*/


/* Należ pozostawić definicję tylko jednej ze stałych : */
/* dla nowszych kompilatorów */
#define ANSI
/* dla starszych kompilatorów */
//#define ARM


#ifdef ANSI
#include <iostream>
#include <cstring>
using namespace std;
#endif

#ifdef ARM
#include <iostream.h>
#include <string.h>
#endif

#define LS 200


// deklaracje  funkcji
char **wczytaj(int);
void wypisz(char **,int);
void zniszcz(char **,int);

int main(){

  char **T;  // deklaracja wskaznika na wskaznik na char
  int N;

  cout << "ile lancuchow wprowadzisz?" << endl;
  cin >> N;
  
  // wczytanie tablicy
  T=wczytaj(N);
  
  cout << endl << "wprowadzone lancuchy: " << endl;
  wypisz(T,N);
  
  // zwolnienie pamieci
  zniszcz(T,N);
  return 0;
}

void wypisz(char** T,int N){
  for ( int i=0; i<N ; i++ )
    cout << T[i] << endl;
}


char ** wczytaj(int N){
  
  char **T=new char*[N];  // utworzenie nowego wskaznika z alokacja pamieci na tablice N-elementowa
  char L[LS]; 
  
  for ( int i=0 ; i<N ; i++ ){
    cout << "Podaj lancuch " << i+1 << " : ";
    cin >> L;
    
    T[i]=new char[strlen(L)+1]; // alokacja tablicy mieszczacej wczytany lancuch
    strcpy(T[i],L);  // skopiowanie wszytanego lancucha do T[i]
  }
  return T;
}

void zniszcz(char **T,int N){
  for ( int i=0 ; i<N ; i++ )
    delete []T[i];
  delete []T;
}

