Wyrównanie tekstu z pliku pod linuxem. Parametry w wywołaniu

0

Potrzebuje pomocy [najlepiej wylewnej:) ] w napisaniu programu, który w linuxie po wpisaniu
$ ./wyrownanie x y < tekst.txt > wynik.txt (gdzie x, y to liczby)
czyta tekst ze standardowego wejścia (stdin) i wyrównuje go (czyli dodaje spacje między słowami - najlepiej na przemian, raz z prawej raz z lewej strony - przyjmując, że x to lewy margines, a y to szerokość kolumny).

Przykładowo, podajac mu plik ala.txt z zawartością:

Alicja ma wiele kotów i psa.

i linii polecen:
$ ./wyrownanie 5 17 <ala.txt > ala2.txt
wyprodukuje wynik:

    Alicja  ma  wiele
    kotów   i    psa.

troche oryginalne zalecenia do programu:

  • program wyrównane kolumny tekstu powinien drukować na standardowe wyjście (stdout)
  • parametry sterujące działaniem programu (podawane w wywołaniu programu: szerokość marginesu, szerokość kolumny itd.) powinny być odczytywane w nim dzięki parametrom funkcji main.
  • [ważne] znak nowego wiersza nie kończy akapitu. Jeśli uwzględniać podział tekstu na akapity, to należy założyć, ze lamanie akapitu nastepuje po wierszu, który nie zawiera żadnego słowa.

Interesują mnie dwie możliwe wersje tego programu, ale jesli ktos mialby bardzo dobry humor, to jest tez trzecia, najbardziej skomplikowana..

Wersja pierwsza - to załozenie, że x + y <= 80, z tego co wiem, program taki można zrobić na tablicach zakładając, że standardowego
wyjscia ma ustalona szerokość 80 znaków.

Druga jest trochę bardziej skomplikowana, gdyż dochodzi w niej jeszcze jeden parametr (powiedzmy "z"). Chodzi o to, by program wyrównywał tekst w dwóch kolumnach o równej szerokości i liczbie wierszy (prawa kolumna może mieć jeden wiersz mniej). "Z" określa nam odległość między kolumnami. Tekstem powinna byc wypelniana najpierw lewa kolumna, i tekst potem powinien byc kontynuowany w prawej kolumnie (więc możemy do niej przejść dopiero gdy wiemy, że przetworzyliśmy już połowę tekstu). Tutaj też mozna założyć, że x + 2y + z <= 80 (x - lewy margines, y - szerokość jednej kolumny, z - odstęp między kolumnami). Podobno pożyteczne mogą się okazać struktury dynamiczne, ale nie bardzo wiem w jaki sposób. :/

Proszę pobawcie się trochę i pomóżcie mi. :]

0

generalnie, to takie rzeczy to tylko w Erze albo dziale 'Offtopic/Praca', zakladajac ze chcesz zaplacic za robocizne..

btw. crossforum: http://peb.pl/programowanie/496594-c-c-gcc-linux-wczytywanie-tekstu.html

ps. jakbys raczyl uzyc google, to bys znalazl zrodlo tego zadania i rozwiazanie na nie: http://www.tomaszozga.pl/2008_05_21_programy-cz1-justowanie-tekstu-w-c.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1