Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct rekord
- {
- double liczba;
- string napis;
- char znak;
- rekord* next;
- };
- double funkcja(rekord* &lista, double l, string n, char z, double& srednia)
- {
- rekord* nowy = new rekord; // alokacja pamięci na nowy rekord
- // przypisywanie wartości z funkcji do nowego rekordu:
- nowy->liczba = l;
- nowy->napis = n;
- nowy->znak = z;
- nowy->next = nullptr;
- srednia = n.size(); // pobieranie do zmiennej średnia długości napisu dodawanego elementu
- int licznik = 1; // zainicjowanie zliczania liczby elementów w liście
- // jeżeli lista jest dotychczas pusta:
- if(lista == nullptr)
- lista = nowy;
- // jeżeli lista nie jest pusta (dopisywanie elementu na koniec)
- else
- {
- rekord* tmp = lista; // tworzenie zmiennej tymczasowej (aby nie nadpisywać listy)
- srednia += tmp->napis.size(); // dodawanie długości napisu z głowy listy
- ++licznik;
- // pętla szukająca końca listy
- while(tmp->next) // dopóki istnieje następny element...
- {
- tmp = tmp->next; // ... przejdź do niego
- srednia += tmp->napis.size();
- ++licznik;
- }
- tmp->next = nowy; // dopisywanie na koniec listy nowo utworzonego elementu
- }
- srednia = srednia / licznik; // zliczenie sredniej (suma długości wszystkich napisów jest podzielona przez liczbę elementów)
- // trzecia część funkcji (usuwanie elementu) - wykonuje się tylko gdy liczba elementów jest co najmniej równa 2
- if(licznik >= 2)
- {
- bool pf = lista->liczba > lista->next->liczba; // zmienna przechowująca informację czy pierwszy element ma wyższą liczbę niż drugi element
- double zwracana; // utworzenie zmiennej, która ma przechowywać liczbę większą z dwóch pierwszych elementów (będzie ona kasowana, więc musimy ją gdzieś przechować)
- if(pf) // jeżeli liczba w pierwszym elemencie jest większa...
- {
- zwracana = lista->liczba;
- lista = lista->next; // nadpisanie na miejscu pierwszego elementu jego syna (w ten sposób pozbywamy się pierwszego elementu)
- }
- // analogicznie jak wyżej:
- else
- {
- zwracana = lista->next->liczba;
- lista->next = lista->next->next;
- }
- return zwracana;
- }
- return 0; // jeżeli lista posiada mniej niż dwa elementy, zwracamy 0
- }
Advertisement
Add Comment
Please, Sign In to add comment