baza w c++

Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

baza w c++

Post autor: Fristajler »

Witam. Moim zadaniem było napisanie prostej bazy. Stworzyłem cć takiego, ale niestety nie usuwa mi rekordów. Będę bardzo wdzięczny za pomoc co z tym zrobić...

Kod: Zaznacz cały

#include <cstdlib>
#include <iostream>
#include <conio.h>

using namespace std;

struct dane_osobowe
{
       char imie[15];
       char nazwisko[30];
       char data_ur[12];
       char ulica[50];
       char numer_domu[7];
       char numer_mieszk[4];
       char kod_poczt[7];
       char miasto[16];
       char pesel[11];
       };                                                                                                                                              

int main(int argc, char *argv[])
{
    
struct dane_osobowe *tab;
tab = new dane_osobowe[3];  //3 rekordy tablicy i przydzielona dla nich pamięć
int znak, n = 0, i, j, nr_rek;
char szukaj;
char sign,sign1;
        do
        {
             system("cls");
             printf("1 - WPROWADZANIE DANYCH OSOBOWYCH (MAKSYMALNIE 3 REKORDY)\n");
             printf("2 - MODYFIKACJA DANYCH OSOBOWYCH\n");
             printf("3 - USUWANIE DANYCH OSOBOWYCH\n");
             printf("4 - WYSZUKANIE REKORDU PO NUMERZE PESEL\n");
             printf("5 - KONIEC PROGRAMU\n\n");
             znak=getch(); 
    if(znak == '1') {
                   do{
                   cout << "WPROWADZASZ REKORD NUMER "<< n <<"\n\n";
                   cout << "Wprowadz imie: ";
                   cin >> tab[n].imie;
                   cout << "Wprowadz nazwisko: ";
                   cin >> tab[n].nazwisko;
                   cout << "Wprowadz date urodzenia w formacie DDMMRRRR: ";
                   cin >> tab[n].data_ur;
                   cout << "Ulica : ";
                   cin >> tab[n].ulica;
                   cout << "Numer domu: ";
                   cin >> tab[n].numer_domu;
                   cout << "Numer mieszkania: ";
                   cin >> tab[n].numer_mieszk;
                   cout << "Kod pocztowy w formacie XX-XXX: ";
                   cin >> tab[n].kod_poczt;
                   cout << "Miasto: ";
                   cin >> tab[n].miasto;
                   cout << "PESEL: ";
                   cin >> tab[n].pesel;
                   cout << "\nWprowadzono pomyslnie rekord numer " << n << ". Wprowadzone dane: \n\n";
                   cout << tab[n].imie;
                   cout << " " << tab[n].nazwisko;
                   cout << "\nUl. " << tab[n].ulica;
                   cout << " " << tab[n].numer_domu;
                   cout << "/" << tab[n].numer_mieszk;
                   cout << "\n" << tab[n].kod_poczt;
                   cout << " " << tab[n].miasto;
                   cout << "\n\nPESEL: " << tab[n].pesel;
                   cout << "\nData urodzenia: " << tab[n].data_ur;
                   cout << "\n\n";
                   n++;
                   cout << "CZY CHCESZ WPROWADZIC KOLEJNY REKORD?\n1 - TAK, 0 - NIE (POWROT DO MENU): ";
                   cin >> sign;
                   }
                   while(sign!='0');
        }
        else if(znak == '2') {
                   cout << "Podaj numer rekordu do modyfikacji: ";
                   cin >> i;
                   cout << "\nJakie pole chcesz zmodyfikować? 1 - Imie, 2 - Nazwisko, 3 - Ulica, 4 - Numer domu, 5 - Numer mieszkania, 6 - Kod pocztowy, 7 - Miasto, 8 - PESEL, 9 - Data urodzenia: ";
                   cin >> j;
                   if (j==1) 
                   {
                           cout << "\n\nWprowadz nowe imie: ";
                           cin >> tab[i].imie;
                           cout << "\nZmieniono pomyslnie imie w rekordzie " << i << "\n";
                   }
                   else if (j==2) 
                   {
                           cout << "\n\nWprowadz nowe nazwisko: ";
                           cin >> tab[i].nazwisko;
                           cout << "\nZmieniono pomyslnie nazwisko w rekordzie " << i << "\n";
                   }
                   else if (j==3) 
                   {
                           cout << "\n\nWprowadz nowa ulice: ";
                           cin >> tab[i].ulica;
                           cout << "\nZmieniono pomyslnie ulice w rekordzie " << i << "\n";
                   }
                   else if (j==4) 
                   {
                           cout << "\n\nWprowadz nowy numer domu: ";
                           cin >> tab[i].numer_domu;
                           cout << "\nZmieniono pomyslnie numer domu w rekordzie " << i << "\n";
                   }
                   else if (j==5) 
                   {
                           cout << "\n\nWprowadz nowy numer mieszkania: ";
                           cin >> tab[i].numer_mieszk;
                           cout << "\nZmieniono pomyslnie numer mieszkania w rekordzie " << i << "\n";
                   }
                   else if (j==6) 
                   {
                           cout << "\n\nWprowadz nowy kod pocztowy w formacie XX-XXX: ";
                           cin >> tab[i].kod_poczt;
                           cout << "\nZmieniono pomyslnie kod pocztowy w rekordzie " << i << "\n";
                   }
                   else if (j==7) 
                   {
                           cout << "\n\nWprowadz nowe miasto: ";
                           cin >> tab[i].miasto;
                           cout << "\nZmieniono pomyslnie miasto w rekordzie " << i << "\n";
                   }
                   else if (j==8) 
                   {
                           cout << "\n\nWprowadz nowy  numer PESEL: ";
                           cin >> tab[i].pesel;
                           cout << "\nZmieniono pomyslnie numer PESEL w rekordzie " << i << "\n";
                   }
                   else if (j==9) 
                   {
                           cout << "\n\nWprowadz nowa date urodzenia w formacie DDMMRRRR: ";
                           cin >> tab[i].data_ur;
                           cout << "\nZmieniono pomyslnie date urodzenia w rekordzie " << i << "\n";
                   }
                   }
        else if(znak == '3') {
                     cout << "\nPodaj numer rekordu, ktory chcesz, aby zostal usuniety: ";
                     cin >> nr_rek;
                     delete tab[nr_rek].imie;
                     delete tab[nr_rek].nazwisko;
                     delete tab[nr_rek].ulica;
                     delete tab[nr_rek].numer_domu;
                     delete tab[nr_rek].numer_mieszk;
                     delete tab[nr_rek].kod_poczt;
                     delete tab[nr_rek].miasto;
                     delete tab[nr_rek].pesel;
                     delete tab[nr_rek].data_ur;
                     cout << "\nZawartosc rekordu " << nr_rek << " pomyslnie usunieta";
                     }
                     
        else if(znak == '4') {
        printf("\nPodaj PESEL szukanej osoby: ");
         cin >> szukaj;
         for(int i=0;i<4;i++) {
             if(*tab[i].pesel==szukaj) {
                 printf("WYNIK WYSZUKIWANIA: \n\n");
                 printf("%s %s", tab[i].imie, tab[i].nazwisko);
                 printf("\nUl. %s %s/%s", tab[i].ulica, tab[i].numer_domu, tab[i].numer_mieszk);
                 printf("\n%s %s\n", tab[i].kod_poczt, tab[i].miasto);
                 printf("\nPESEL: %s", tab[i].pesel);
                 printf("\nData urodzenia: %s\n", tab[i].data_ur);
             }
         }
         printf("\nPowyzej ukazal sie wynik wyszukiwania. \nJesli go nie ma, oznacza to, ze osoby o takim numerze PESEL nie ma w bazie. \nNacisnij jakis klawisz by wrocic do menu glownego ...\n\n");
         system("PAUSE");
         }
         
}
    while
    (znak!='5');
    system("PAUSE");
    return EXIT_SUCCESS;
}
Laurearel

baza w c++

Post autor: Laurearel »

szczerze to spojrzałem tylko na nagłówki ... spróbuj użyć jakiegoś sensownego kontenera z STL ; )
Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

baza w c++

Post autor: Fristajler »

o kurcze.. a można jakoś inaczej.. nie znam czegos takiego a nie chce, żeby u wykładowcy wygladalo, ze zerżnniete skądś - piszę coś czego nie rozumiem ;p
snajper0208
Użytkownik
Użytkownik
Posty: 128
Rejestracja: 26 paź 2008, o 22:24
Płeć: Mężczyzna
Lokalizacja: Wawrzeńczyce
Podziękował: 11 razy
Pomógł: 14 razy

baza w c++

Post autor: snajper0208 »

Kod: Zaznacz cały

#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<string>
#include<sstream>

using namespace std;

struct osoba
{
	int id;
	string imie;
	string nazwisko;
	string urodzony;
	string kierunek;
	int rok;
	osoba *dalej;
	osoba *wstecz;
};

osoba *start=NULL;
osoba *koniec=NULL;
osoba *aktualny=NULL;

void wczytaj()
{
	ifstream plik;
	plik.open("zapis.txt");
		
	while(!plik.eof())
	{
		if(start==NULL)
		{
			aktualny=new osoba;
			aktualny->wstecz=NULL;
			aktualny->dalej=NULL;
			start=aktualny;
			koniec=start;
		}
		else
		{
			aktualny->dalej=new osoba;
			aktualny->dalej->wstecz=aktualny;
			aktualny=aktualny->dalej;
			aktualny->dalej=NULL;
			koniec=aktualny;
		}
		string napis;
		getline(plik,napis);
		if(napis=="0")
		{
			delete aktualny;
			start=NULL;
			koniec=NULL;
			return;
		}
		istringstream iss(napis);
		iss >>	aktualny->id;
		getline(plik,aktualny->imie);
		getline(plik,aktualny->nazwisko);
		getline(plik,aktualny->kierunek);
		getline(plik,napis);
		istringstream iss2(napis);
		iss2 >>	aktualny->rok;
		getline(plik,aktualny->urodzony);
	}
	plik.close();
}

int id()
{
	int id;
	ifstream pli;
	pli.open("id.txt");
	pli>>id;
	pli.close();
	id++;
	ofstream plik;
	plik.open("id.txt");
	plik<<id;
	plik.close();
	return id;
}
void wypisz(osoba *aktualny)
{
	cout<<"\nId        "<<aktualny->id;
	cout<<"\nImie      "<<aktualny->imie;
	cout<<"\nNazwisko  "<<aktualny->nazwisko;
	cout<<"\nKierunek  "<<aktualny->kierunek;
	cout<<"\nUrodzony  "<<aktualny->urodzony;
	cout<<"\nRok       "<<aktualny->rok;
}


bool wieksze (string ter,string pop)
{	
	char t,p;							
	for(int i=0;;i++)
	{					
		t=char(ter[i]);					
		if (t==NULL)
		{ 
			return true; 
		}
		p=char(pop[i]);
		if (t==NULL)
		{ 
			return false;
		}
		if (t<p)
		{   	
			return true; 
		}	
		if (t>p)
		{
			return false;
		}
	}
}

void sort(char z)
{
	osoba *pomocniczy=new osoba;
	pomocniczy=koniec;
	osoba *teraz=new osoba;
	teraz=start->dalej;
	while(teraz!=NULL)
	{
		pomocniczy=teraz;	
		if (teraz==NULL) 
		{
			koniec=teraz;
		}
		else
		{
		teraz=teraz->dalej;
		}

		while( (pomocniczy->wstecz!=NULL) && ( ((z=='d')&&(pomocniczy->id<pomocniczy->wstecz->id))||((z=='r') &&( 
pomocniczy->rok<pomocniczy->wstecz->rok)) || ((z=='i')&&(wieksze(pomocniczy->imie,pomocniczy->wstecz->imie))) 
|| ((z=='n')&&(wieksze(pomocniczy->nazwisko,pomocniczy->wstecz->nazwisko))) || ((z=='k')
&&(wieksze(pomocniczy->kierunek,pomocniczy->wstecz->kierunek)))	   ))
		{
			if (pomocniczy->dalej!=NULL)
			{
				pomocniczy->dalej->wstecz=pomocniczy->wstecz;
			}
			pomocniczy->wstecz->dalej=pomocniczy->dalej;
			osoba *pom=pomocniczy->wstecz->wstecz;
			if(pomocniczy->wstecz->wstecz!=NULL)
			{
				pomocniczy->wstecz->wstecz->dalej=pomocniczy;
			}
			pomocniczy->wstecz->wstecz=pomocniczy;
			pomocniczy->dalej=pomocniczy->wstecz;
			pomocniczy->wstecz=pom;
			if (pomocniczy->wstecz==NULL)
			{
				start=pomocniczy;
			}
		}
	}
	aktualny=start;
	}

void opcje()
{
	cout<<"\n\n\n";
	cout<<"\t[0] Koniec\n";
	cout<<"\t[1] Dodaj wpis\n";
	cout<<"\t[2] W lewo\n";
	cout<<"\t[3] W prawo\n";
	cout<<"\t[4] Zapis\n";
	cout<<"\t[5] Usun baze\n";
	cout<<"\t[6] Usun wpis\n";
	cout<<"\t[7] Wyszukaj\n";
	cout<<"\t[8] Sortuj\n";
	cout<<"\t[9] Edytuj\n";
	cout<<"\n\n";
	cout<<"\t\tWybierasz opcje nr: ";
}

int main()
{
	char znak;
	aktualny=start;
	wczytaj();
	do
	{
		system("cls");
		if(start==NULL)
		{
			cout<<"Brak wpisow";
		}
		else
		{
			wypisz(aktualny);		
		}
		opcje();
		cin>>znak;
		switch(znak)
		{
			case '1':
			{
				system("cls");
				osoba *pomocniczy=new osoba;
				pomocniczy->id=id();
				cout<<"Podaj imie\n"; 
				cin>>pomocniczy->imie;
				cout<<"Podaj nazwisko\n";
				cin>>pomocniczy->nazwisko;
				cout<<"Podaj kierunek\n";
				cin>>pomocniczy->kierunek;
				cout<<"Podaj date urodzenia (rrrrmmdd)\n";
				cin>>pomocniczy->urodzony;
				cout<<"Podaj rok studiow\n";
				cin>>pomocniczy->rok;
				pomocniczy->dalej=NULL;
				if (start==NULL)
				{
					pomocniczy->wstecz=NULL;
					start=pomocniczy;
					koniec=start;
				}
				else
				{
					pomocniczy->wstecz=koniec;
					koniec->dalej=pomocniczy;
					koniec=koniec->dalej;
				}
				aktualny=start;
			}
			break;

			case '2': 
				if(aktualny!=NULL) 
				{
					if(aktualny->wstecz==NULL)
					{
						aktualny=koniec;
					}
					else
					{
						aktualny=aktualny->wstecz;
					}				
				}
			break;
			
			case '3': 
				if(aktualny!=NULL) 
				{
					if(aktualny->dalej==NULL)
					{
						aktualny=start;
					}
					else
					{
						aktualny=aktualny->dalej;
					}					
				}
			break;
			
			case '4':
				{	
					if(start!=NULL)
					{
						osoba *pomocniczy=start;
						std::ofstream file;
						file.open("zapis.txt");
						do
						{
							if(pomocniczy!=start)
							{
								file<<"\n";
							}
							file<<pomocniczy->id<<"\n";
							file<<pomocniczy->imie<<"\n";
							file<<pomocniczy->nazwisko<<"\n";
							file<<pomocniczy->kierunek<<"\n";
							file<<pomocniczy->rok<<"\n";
							file<<pomocniczy->urodzony;
							pomocniczy=pomocniczy->dalej;
						}
						while(pomocniczy!=NULL);
						file.close();
					}
				}
			break;
			
			case '5':
				if(start!=NULL)
				{
						osoba *pomocniczy=start;
						do
						{
							osoba *pomocniczy2=pomocniczy;
							pomocniczy=pomocniczy->dalej;
							delete pomocniczy2;
						}
						while(pomocniczy!=NULL);
						aktualny=NULL;
						start=NULL;
						koniec=NULL;
						std::ofstream file;
						file.open("zapis.txt");
						file<<"0";
						file.close();
				}
			break;
			
			case '6':
				if(aktualny!=NULL)
				{
					osoba *pomocniczy=aktualny;
					if(aktualny==start)
					{
						if(aktualny!=koniec)
						{
							aktualny=aktualny->dalej;
							aktualny->wstecz=NULL;
							start=aktualny;
							delete pomocniczy;
						}
						else
						{
							start=NULL;
							koniec=NULL;
							aktualny=NULL;
							delete pomocniczy;
						}
					}
					else if(aktualny==koniec)
					{
						aktualny=aktualny->wstecz;
						aktualny->dalej=NULL;
						koniec=aktualny;
						aktualny=start;
						delete pomocniczy;
					}
					else
					{
						aktualny->dalej->wstecz=aktualny->wstecz;
						aktualny->wstecz->dalej=aktualny->dalej;
						aktualny=aktualny->dalej;
						delete pomocniczy;
					}
				}		
			break;
			
			case '7':
				{	
					std::ofstream file;
					system("cls");
					char z;
					cout<<"\t[0] Powrot\n";
					cout<<"Wyszukaj wg:\n[1] id \n[2] imie \n[3] nazwisko \n[4] rok \n[5] kierunek \n[6] data urodzenia";
					cin>>z;
					char z2;
					cout<<"Podaj wartosc";
					string w;
					cin>>w;
					cout<<"Zapis do pliku?? t/n";
					cin>>z2;
					if((z2=='t')||(z2=='T'))
					{	
						file.open("zapiswyszukiwania.txt");
					}
					osoba *pomocniczy=start;
					do
					{
						bool znalezione=false;
						switch(z)
						{
							case '1':
								{
									ostringstream ss;
									ss << pomocniczy->id;						
									if(w== ss.str()) znalezione=true;
								}
							break;
							case '2':	if(w==pomocniczy->imie)	znalezione=true; break;
							case '3':	if(w==pomocniczy->nazwisko)	znalezione=true; break;
							case '4':
								{
								ostringstream ss;
								ss << pomocniczy->rok;		
								if(w== ss.str()) znalezione=true;
								}
							break;
							case '5':	if(w==pomocniczy->kierunek)	znalezione=true; break;
							case '6':	if(w==pomocniczy->urodzony)	znalezione=true; break;
						}
							if(znalezione==true)
							{
								wypisz(pomocniczy);
								if((z2=='t')||(z2=='T'))
								{
									file<<pomocniczy->id<<"\n";
									file<<pomocniczy->imie<<"\n";
									file<<pomocniczy->nazwisko<<"\n";
									file<<pomocniczy->kierunek<<"\n";
									file<<pomocniczy->rok<<"\n";
									file<<pomocniczy->urodzony;
								}
							}
						pomocniczy=pomocniczy->dalej;
					}
					while(pomocniczy!=NULL);
					if((z2=='t')||(z2=='T'))
					{
						file.close();
					}
					cout<<endl;
					system("pause");
				}
			break;
			
			case '8':
				{
					system("cls");
					char z;
					cout<<"0 Powrot \nSortuj wg: \n[d] id \n[i] imie \n[n] nazwisko \n[r] rok \n[k] kierunek\n";
					cin>>z;
					sort(z);
				}

			break;
			
			case '9':
				if (aktualny!=NULL)
				{
					char z;
					system("cls");
					cout<<"Edytuj:\n[1] imie \n[2] nazwisko \n[3] rok \n[4] kierunek \n[5] data urodzenia\n";
					cin>>z;
					switch (z)
					{
						case '1':
						cout<<"Podaj imie";
						cin>>aktualny->imie;
						break;
						
						case '2':
						cout<<"Podaj nazwisko";
						cin>>aktualny->nazwisko;
						break;

						case '3':
						cout<<"Podaj rok";
						cin>>aktualny->rok;
						break;
						
						case '4':
						cout<<"Podaj kierunek";
						cin>>aktualny->kierunek;
						break;
						
						case '5':
						cout<<"Podaj date urodzenia";
						cin>>aktualny->urodzony;
						break;
					}
				}
			break;
		}
	}
	while(znak!='0');
	cout<<endl;
	return 0;
}
C++ jest podobny do C, więc może na podstawie mojej bazy znajdziesz właściwe rozwiązanie dla siebie ? :)
Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

baza w c++

Post autor: Fristajler »

no bez przesady.. mi chodziło tylko o małą modyfikacje mojego...
Laurearel

baza w c++

Post autor: Laurearel »

o kurcze.. a można jakoś inaczej.. nie znam czegos takiego a nie chce, żeby u wykładowcy wygladalo, ze zerżnniete skądś - piszę coś czego nie rozumiem ;p


ja nie znam Twojego wykładowcy ; )
Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

baza w c++

Post autor: Fristajler »

No dokładnie. Ja na prawdę nie wymagam wiele... I to jestem juz całkiem blisko rozwiązania..a nie moge tego rozpracować no... ;/
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

baza w c++

Post autor: kadiii »

Niestety twoje wyobrażenie w jaki sposób powinno się usunąć to co chcesz jest błędne. Zauważ jaki element alokujesz w pamięci za pomoca operatora new a jaki chcesz usunąć za pomoca delete. Jeśli chcesz usunąć w taki sposób element to muisz użyć struktury, w której elementy są ze soba powiązane wskaźnikami(np.lista) a nie jedynie indeksem(tablica). Oczywiście zamiana tablicy na liste powoduje przyśpieszenie usuwania, jednak tracisz dostep do elementów poprzez indeks - tu zalecam zapoznanie się ze sposobem przechowywania w pamieci różnych typów danych.
Podsumowując - tak jak robisz teraz zrobić się tego nie da ponieważ jest to niepoprawne użycie dynamicznej alokacji - albo zamienisz tablicę na listę albo jeśli usuwasz i-ty element musisz przepisać elementy od i+1 do ostatniego na pozycje o indeksie o 1 niższym oraz zmniejszyć rozmiar tablicy o 1(możesz dodać do tego jakąś zmienną bądź zaalokować nowy obszar pamięci).
Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

baza w c++

Post autor: Fristajler »

oki. a jak by to wyglądało w postaci kodu? musiałbym to zobaczyc, bo nie bardzo wiem o co be ... no i który sposób (najprostszy) ewentualnie mógłbym wybrać....
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

baza w c++

Post autor: kadiii »

Rozumiem, że chodzi ci o rozwiązanie tablicowe bo listowe masz zaprezentowane z grubsza powyzej.
najprościej to można np. tak

Kod: Zaznacz cały

dane osobowe *temp= new dane osobowe[n-1]  <-oczywiście jeśli zdefiniujesz wcześniej n i nie wpiszesz na sztywno
//usuwamy i-ty element
for(j=0;j<i;j++)
temp[j].*=tab[j].* // '*' oznacza skrót myślowy musisz wypisać wszystkie pola struktury
for(j=i+1;j<n;j++)
 temp[j-1]=tab[j];
for(j=0;j<n-1;j++)
 tab[j]=temp[j];
delete [] temp; 
oczywiście można użyć też np. funkcji memcpy jak wiesz jak - to jedynie przykładowe rozwiązanie, które ma zobrazować sposób wykonania
Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

baza w c++

Post autor: Fristajler »

oki. dzieki:) spróbuje to sobie przeanalizować w wolnym czasie.
ODPOWIEDZ