Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Katalog:
- class Plik:
- class Powtorzona_nazwa(Exception):
- pass
- def __init__(self,nazwa,rozmiar,ukryty=False):
- """(Plik,str,int,bool)->NoneType"""
- if rozmiar<0 or type(ukryty) is not bool or type(nazwa) is not str:
- raise ValueError
- self._nazwa=nazwa
- self._rozmiar=rozmiar
- self._ukryty=ukryty
- self._next=None
- def getNazwa(self):
- """(Plik)->str"""
- return self._nazwa
- def getRozmiar(self):
- """(Plik)->Int"""
- return self._rozmiar
- def getUkryty(self):
- """(Plik)->Bool"""
- return self._ukryty
- def setRozmiar(self,rozmiar):
- """(Plik,int)->NoneType"""
- self._rozmiar=rozmiar
- def setUkryty(self,ukryty):
- """(Plik,bool)->NoneType"""
- self._ukryty=ukryty
- def getNext(self):
- """(Plik)->Plik"""
- return self._next
- def setNext(self,next):
- """(Plik,Plik)->NoneType"""
- self._next=next
- def __init__(self):
- """(Katalog)->NoneType"""
- self._head=None
- self._size=0
- def Dodaj_plik(self,plik):
- """(Katalog,Plik)->NoneType"""
- if self._head is None:
- self._head=plik
- self._size+=1
- else:
- if plik.getNazwa()<self._head.getNazwa():
- plik.setNext(self._head)
- self._head=plik
- self._size+=1
- else:
- pred=None
- walker=self._head
- while walker is not None and walker.getNazwa()<plik.getNazwa():
- pred=walker
- walker=walker.getNext()
- if walker is not None and walker.getNazwa()==plik.getNazwa():
- raise Katalog.Plik.Powtorzona_nazwa
- plik.setNext(pred.getNext())
- pred.setNext(plik)
- self._size+=1
- def __str__(self):
- """(Katalog)->str"""
- tekst="----------\n"
- walker=self._head
- while walker is not None:
- tekst+="Nazwa: " + str(walker.getNazwa())
- tekst+="\nRozmiar: " + str(walker.getRozmiar())
- tekst+="\nUkryty: " + str(walker.getUkryty()) + "\n"
- tekst+="----------\n"
- walker=walker.getNext()
- return tekst
- def Kopiuj(self,other):
- """(Katalog,Katalog)->NoneType"""
- pred=None
- walker1=self._head
- walker2=other._head
- while walker2 is not None:
- if walker1 is not None and walker1.getNazwa()==walker2.getNazwa():
- walker1.setRozmiar(walker2.getRozmiar())
- walker1.setUkryty(walker2.getUkryty())
- pred=walker1
- walker1=walker1.getNext()
- walker2=walker2.getNext()
- elif walker1 is None or walker1.getNazwa()>walker2.getNazwa():
- new=Katalog.Plik(walker2.getNazwa(),walker2.getRozmiar(),walker2.getUkryty())
- if walker1 is not None and walker1.getNazwa()==self._head.getNazwa():
- new.setNext(self._head)
- self._head=new
- pred=new
- else:
- new.setNext(pred.getNext())
- pred.setNext(new)
- pred=new
- self._size+=1
- walker2=walker2.getNext()
- else:
- pred=walker1
- walker1=walker1.getNext()
- if __name__=="__main__":
- k=Katalog()
- flaga=1
- while flaga==1:
- nazwa=input("Podaj nazwe pliku pierwszego katalogu: ")
- rozmiar=int(input("Podaj jego rozmiar: "))
- ukryty=bool(input("Czy jest on ukryty?(0-False 1-True): "))
- try:
- p=Katalog.Plik(nazwa,rozmiar,ukryty)
- k.Dodaj_plik(p)
- except ValueError:
- print("Nie mozna dodac pliku - niepoprawna wartosc")
- except Katalog.Plik.Powtorzona_nazwa:
- print("Plik o podanej nazwie już istnieje")
- flaga=int(input("Chcesz dodac kolejny plik do tego katalogu?1-Tak 0-Nie: "))
- k2=Katalog()
- flaga=1
- while flaga==1:
- nazwa=input("Podaj nazwe pliku drugiego katalogu: ")
- rozmiar=int(input("Podaj jego rozmiar: "))
- ukryty=bool(input("Czy jest on ukryty?(0-False 1-True): "))
- try:
- p=Katalog.Plik(nazwa,rozmiar,ukryty)
- k2.Dodaj_plik(p)
- except ValueError:
- print("Nie mozna dodac pliku - niepoprawna wartosc")
- except Katalog.Plik.Powtorzona_nazwa:
- print("Plik o podanej nazwie już istnieje")
- flaga=int(input("Chcesz dodac kolejny plik do tego katalogu?1-Tak 0-Nie: "))
- Katalog.Kopiuj(k,k2)
- print(k)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement