Advertisement
freeye

Untitled

Nov 27th, 2015
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.20 KB | None | 0 0
  1. Dokumentacja programu sortword.c
  2. Wymagania
  3. Program ma za zadanie pobierać od użytkownika pojedyncze słowa po jednym w każdej linii, zaś linia pusta – zawierająca jedną lub więcej spacji na początku, powinna zakończyć wprowadzanie danych. Następnie sortuje owe wprowadzone słowa alfabetycznie, nie rozróżniając wielkich liter od małych i eliminując powtarzające się słowa, a następnie wyświetla je użytkownikowi.
  4. Wprowadzanie innego znaku niż litera (np. liczba, znak specjalny) lub więcej niż jednego wyrazu w jednej linii, powoduje wyświetlenie komunikatu o błędnych danych, wyłączając spacje na początku, która kończy wprowadzanie danych, zaś maksymalna ilość słów wprowadzonych przez użytkownika to 49 (50 linii danych – 49 słów i pusta linia), która to może być zmieniona w razie potrzeby.
  5. Użytkownik winien mieć na względzie to, iż słowa wyświetlane na wyjściu przekształcone będą do postaci, w której użyte są jedynie małe litery. Słowo nie może składać się z więcej niż 30 znaków, jednakże możliwe jest ustawienie innych długości wyrazów w razie potrzeby.
  6. Architektura
  7. Program napisany jest w języku C, kompilowany przy użyciu kompilatora GNU GCC. Składa się z 3 funkcji, z których każda ma określone zadanie.
  8. Program korzysta z dwóch bibliotek – stdio.h do obsługi danych wejścia wyjścia oraz podstawowych operacji; string.h do mierzenia długości słów wprowadzanych przez użytkownika (strlen) oraz kopiowania tablic znaków (słów) między tablicami (strcpy).
  9. Funkcja main: szkielet całego programu; sprawdza poprawność wprowadzanych danych, jednocześnie przekształcając wielkie litery na małe; wykrywa linie pustą, która kończy wprowadzanie danych; tworzy z danych wejściowych tablicę dwuwymiarową temp_array, gdzie pierwsza współrzędna oznacza numer linii poczynając od 0, zaś druga jest tablicą znaków (wyrazem) wpisanym przez użytkownika przekształconym na słowo złożone tylko z małych liter; wywołuje pozostałe funkcje; na koniec wypisuje posortowane słowa.
  10. Funkcja erase_duplicates: otrzymuje tablicę słów wprowadzoną przez użytkownika i przekształconą przez funkcję main (temp_array); szuka powtarzających się słów, które 'usuwa' z otrzymanej tablicy; wszystkie niepowtarzające się słowa zapisuje do nowej tablicy main_array;
  11. Funkcja selection_sort: otrzymuje tablicę main_array; sortuje wyrazy w owej tablicy metodą prostego wybierania.
  12.  
  13.  
  14.  
  15. Szczegółowy opis działania funkcji
  16. Funkcja main(void):
  17. 1. Sprawdza długość linii wejściowej
  18. 2. Sprawdza czy linia nie zaczyna się od znaku spacji oraz czy nie zaczyna się od znaku nowej linii; jeśli zaczyna się od znaku nowej linii program wyświetli komunikat o błędzie, zaś jeśli zaczyna się od znaku spacji to przerywa wczytywanie linii wejściowych i przechodzi do dalszej części programu
  19. 3. Wpisuje podane przez użytkownika słowo do kolejnych tablic w dwuwymiarowej tablicy tymczasowej, zastępując znak nowej linii pobrany wraz z nią, znakiem końca wyrazu oraz zamieniając wielkie litery na małe
  20. 4. Jeśli został wprowadzony tylko jeden wyraz, funkcja od razu go wyświetli i przerwie działanie, w przeciwnym wypadku przechodzi do funkcji usuwającej dublikaty
  21. 5. Gdy zostanie wykonana funkcja usuwające powtarzające się słowa, przechodzi do funkcji sortującej je alfabetycznie
  22. 6. Gdy zostanie wykonana funkcja sortująca, wyświetla wyniki z tablicy głównej na ekranie terminala, po czym program kończy działanie
  23. Funkcja erase_duplicates(int m, int n, char array[m][n]):
  24. 1. Otrzymuje na wejściu dwuwymiarową tablicę tymczasową o określonych parametrach
  25. 2. Porównuje słowa w tablicy tymczasowej i jeśli są one takie same, to nadpisuje początkowy znak drugiego z nich znakiem NULL, zaś oryginalny wyraz kopiuje do tablicy głównej programu
  26. 3. Po sprawdzeniu pierwszego słowa z każdym następnym i nadpisaniu powtarzających się, zwiększa licznik o 1 i przechodzi do następnego słowa, jeśli nie zaczyna się ono od znaku NULL
  27. 4. Po wykonaniu funkcji, globalna tablica główna jest zapisana niepowtarzającymi się wyrazami, indeksowanymi od 0 do n, gdzie n jest ilością oryginalnych słów
  28. Funkcja selection_sort(int m, int n, char array[m][n]):
  29. 1. Otrzymuje na wejściu tablicę główną zapełnioną niepowtarzającymi się wyrazami, o określonych parametrach
  30. 2. Funkcja ustawia jako 'minimum' pierwszy wyraz w tablicy i przeszukuje ją pod kątem 'mniejszych' pod względem alfabetu słów, po czym jeśli taki wyraz znajdzie zapamiętuje jego indeks
  31. 3. Następnie jeśli zostanie znalezione 'mniejsze' słowo, zamienia miejscami 'minimalne' słowo z owym znalezionym, postępuje tak aż do końca tablicy, tzn. do przedostatniego elementu, gdyż ostatni element jest już wtedy posortowany
  32. Założenia
  33. (1) wprowadzane znaki są literami alfabetu łacińskiego
  34. (2) każde słowo ma maksymalnie 30 znaków, gdyż limit znaków w linii określony jest na 32, gdzie przedostatnim znakiem jest znak nowej linii (0x0a), a ostatnim znakiem NULL (0x00)
  35. (3) linia gdzie na początku występuje znak spacji jest linią kończącą wprowadzanie danych
  36. (4) linia gdzie nie występuje żaden wyraz uznawana jest za linię złożoną z dwóch znaków (0x0a i 0x00) gdzie żaden z nich nie jest literą więc wyświetlany jest komunikat o błędzie wprowadzonych danych
  37. (5) wielkie i małe litery nie są rozróżniane, co więcej, wielkie litery przekształcane są do małych przez co na wyjściu słowa nie składają się z wielkich liter, mimo iż na wejściu mogły je zawierać
  38. (6) jeśli linia zawiera inny znak niż litera alfabetu łacińskiego, włączając w to liczby i znaki białe, zostanie wyświetlony komunikat o błędzie i program zakończy działanie
  39. (7) jeśli na pierwszym miejscu linii stoi spacja to możliwe jest wpisanie po niej innych znaków, które nie zostaną wzięte pod uwagę
  40.  
  41. Przykładowe pakiety danych wejściowych i wyjściowych
  42. Wejściowe:
  43. Wyjściowe:
  44. Abecadlo
  45. abecadlo
  46. Mama
  47. brat
  48. tata
  49. jezyk
  50. brat
  51. komputer
  52. siostra
  53. mama
  54. programowanie
  55. programowanie
  56. JEZYK
  57. przescieradlo
  58. Komputer
  59. siostra
  60. PRZEscieRADLO
  61. tata
  62. <znak spacji> asdfjlsalda';
  63.  
  64.  
  65.  
  66. array
  67. Blad danych
  68. template
  69.  
  70. L;;dfa Df
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement