Advertisement
bazmikel

OOP | LAB 04. Zadanie 2

Mar 30th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.56 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4.  
  5. namespace Lab04
  6. {
  7.  
  8.     class Osoba
  9.     {
  10.         private string imie, nazwisko;
  11.  
  12.         public string Imie
  13.         {
  14.             get => imie;
  15.             set => imie = value;
  16.         }
  17.  
  18.         public string Nazwisko
  19.         {
  20.             get => nazwisko;
  21.             set => nazwisko = value;
  22.  
  23.         }
  24.  
  25.         public Osoba(string imie_, string nazwisko_) { imie = imie_; nazwisko = nazwisko_; }
  26.      
  27.         public string Wypiszinfo()
  28.         {
  29.             return imie + " " + nazwisko;
  30.         }
  31.        
  32.  
  33.     }
  34.  
  35.     class Element
  36.     {
  37.        public Osoba wartosc { get; set; }
  38.        public Element nastepnyElement;
  39.  
  40.  
  41.  
  42.         public override string ToString()
  43.         {
  44.             return wartosc.Wypiszinfo();
  45.         }
  46.  
  47.         public Element() { nastepnyElement = null; }
  48.        public Element(Osoba wartosc_) {
  49.             nastepnyElement = null;
  50.             wartosc = wartosc_;
  51.        
  52.         }
  53.  
  54.         public Element(Osoba wartosc_, Element nastepnyElement_) {
  55.             nastepnyElement = nastepnyElement_;
  56.             wartosc = wartosc_;
  57.         }
  58.          
  59.        
  60.     };
  61.  
  62.     class Lista
  63.     {
  64.         private Element pierwszyElement = null;
  65.         public int liczbaElementow = 0;
  66.        
  67.  
  68.         public void Dodaj(Osoba wartosc_)
  69.         {
  70.             liczbaElementow++;
  71.             if (pierwszyElement == null)
  72.             {
  73.                 pierwszyElement = new Element(wartosc_);
  74.             }
  75.             else
  76.             {
  77.                 Element temp = pierwszyElement;
  78.                 while (temp.nastepnyElement !=null)
  79.                     temp = temp.nastepnyElement;
  80.  
  81.                 temp.nastepnyElement = new Element(wartosc_);              
  82.  
  83.             }
  84.  
  85.         }
  86.  
  87.         public void Wstaw(Osoba wartosc_, int i)
  88.         {
  89.             if (i >= liczbaElementow) throw new IndexOutOfRangeException(); // czy index nie jest poza zakresem
  90.  
  91.             if(i == 0) // jesli element jest pierwszym
  92.             {
  93.                 var tempNastepny = pierwszyElement.nastepnyElement;
  94.                 pierwszyElement = new Element(wartosc_, tempNastepny);
  95.                 //pierwszyElement.nastepnyElement = tempNastepny;
  96.             }
  97.            
  98.             if(i >= 1)
  99.             {
  100.                 var temp = pierwszyElement;
  101.                
  102.                 int j = 0;
  103.                
  104.                 while(temp != null) // szukam element on podanym indeksie
  105.                 {
  106.                     if (j == i)
  107.                     {
  108.                        
  109.                         break; // jesli j == i, znalazlem element
  110.                     }
  111.  
  112.                     temp = temp.nastepnyElement;
  113.                     j++;
  114.  
  115.                 }
  116.                 var tempReferencja = temp.nastepnyElement;
  117.                
  118.                 temp.wartosc = wartosc_;
  119.                 temp.nastepnyElement = tempReferencja;
  120.              
  121.             }
  122.         }
  123.  
  124.         public Element Pobierz(int i)
  125.         {
  126.             Element elementDoZwrocenia = null;
  127.             if (i >= liczbaElementow) {
  128.                 throw new IndexOutOfRangeException();
  129.                
  130.             }
  131.  
  132.             if (i == 0)
  133.             {
  134.                 elementDoZwrocenia = pierwszyElement;
  135.                 Console.WriteLine("Udalo sie pobrac element z indeksem [" + i + "]. Byla to persona: " + pierwszyElement.ToString());
  136.                 pierwszyElement = pierwszyElement.nastepnyElement;
  137.                 liczbaElementow--;
  138.                
  139.             }
  140.  
  141.             else if (i >= 1)
  142.             {
  143.                 int j = 0;
  144.                 var temp = pierwszyElement;
  145.  
  146.                 while(temp != null)
  147.                 {
  148.                     if ((j + 1) == i) break; // jesli udalo mi sie znalesc poprzedni element, wychodze z petli
  149.  
  150.                     temp = temp.nastepnyElement;
  151.                     j++;
  152.                 }
  153.  
  154.                 // jezeli usuwamy ostatni element listy
  155.                 if (temp.nastepnyElement.nastepnyElement == null)
  156.                 {
  157.                     elementDoZwrocenia = temp.nastepnyElement;
  158.                     Console.WriteLine("Udalo sie pobrac element z indeksem [" + i + "]. Byla to persona: " + temp.nastepnyElement.ToString());
  159.                     temp.nastepnyElement = null;
  160.                    
  161.                 }
  162.                 // jezeli usuwamy srodkowy element
  163.                 else
  164.                 {
  165.                     elementDoZwrocenia = temp.nastepnyElement;
  166.                     Console.WriteLine("Udalo sie pobrac element z indeksem [" + i + "]. Byla to persona: " + temp.nastepnyElement.ToString());
  167.                     var usuwana = temp.nastepnyElement;
  168.                     temp.nastepnyElement = temp.nastepnyElement.nastepnyElement;
  169.                    
  170.                 }
  171.  
  172.                
  173.  
  174.                 liczbaElementow--;
  175.                
  176.             }
  177.  
  178.             return elementDoZwrocenia;
  179.         }
  180.  
  181.         public void WypiszLiczbeElementow()
  182.         {
  183.             Console.WriteLine(liczbaElementow);
  184.         }
  185.        
  186.         public void Wypisz()
  187.         {
  188.             Element temp  = pierwszyElement;
  189.             Console.WriteLine("*Lista wszystkich osob w liscie:");
  190.             while(temp != null)
  191.             {
  192.                 Console.WriteLine("*" +temp.ToString());
  193.                 temp = temp.nastepnyElement;
  194.             }
  195.             Console.WriteLine("*");
  196.         }
  197.     };
  198.  
  199.  
  200.     class Program
  201.     {
  202.         static void Main(string[] args)
  203.         {
  204.             // indeksy sie zaczynaja od zera
  205.             Osoba o = new Osoba("Alicja", "Nowak");
  206.             Osoba o2 = new Osoba("Karolina", "Kowalska");
  207.             Osoba o3 = new Osoba("Michal", "Jablonski");
  208.             Osoba o4 = new Osoba("Karol", "Wisniewski");
  209.  
  210.             Lista lista = new Lista();
  211.             lista.Dodaj(o);
  212.             lista.Dodaj(o2);
  213.             lista.Dodaj(o3);
  214.             lista.Dodaj(o4);
  215.  
  216.             lista.Wypisz();
  217.            
  218.             lista.Pobierz(2);
  219.             lista.Pobierz(0);
  220.             lista.Pobierz(1);
  221.  
  222.             lista.Wypisz();
  223.  
  224.  
  225.             lista.Dodaj(o);
  226.             lista.Dodaj(o3);
  227.             lista.Dodaj(o2);
  228.  
  229.             lista.Wstaw(o3, 0);
  230.             lista.Wstaw(o4, 1);
  231.             lista.Wstaw(o, 2);
  232.  
  233.             lista.Wypisz();
  234.  
  235.             // W podanym przez Pana kodzie testujacym wywolanie metody Wstaw nie jest mozwile, o ile indeks przekracza rozmiar kolekcji
  236.             Console.ReadKey();
  237.         }
  238.     }
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement