Laboratorium programowania zad 5

Zadanie 5 z laboratorium programowania na Informatyce UW. Zadanie 5 (termin wysylania rozwiazan: 15 II 2008, godz. 23:59) (Komentarze) Komentarze zaczynaja sie od pary znakow / i koncza na koncu wiersza. Napisz program, ktory skopiuje plik tekstowy, wyrownujac wszystkie komentarze tak, by zaczynaly sie w tej samej kolumnie. Komentarz, ktorego poczatek jest najbardziej wysuniety w…

Zadanie 5 z laboratorium programowania na Informatyce UW.

Zadanie 5 (termin wysylania rozwiazan: 15 II 2008, godz. 23:59)

(Komentarze)

Komentarze zaczynaja sie od pary znakow / i koncza na koncu wiersza.

Napisz program, ktory skopiuje plik tekstowy, wyrownujac wszystkie
komentarze tak, by zaczynaly sie w tej samej kolumnie. Komentarz,
ktorego poczatek jest najbardziej wysuniety w prawo, ma pozostac w
tym samym miejscu wiersza, a poczatki wszystkich, ktore zaczynaja
sie wczesniej, maja zostac przesuniete poprzez poprzedzenie ich
odpowiednia liczba spacji.

Program bedzie wywolywany z jednym parametrem - nazwa pliku tekstowego,
a wynikowy tekst wypisze na standardowe wyjscie.

Np. dla danych umieszczonych w pliku dane.txt:

wiersz pierwszy // to jest komentarz
drugi// to tez komentarz
tu nie ma komentarza
4 wiersz // ten komentarz zaczal sie od // a konczy tu

program wywolany poleceniem:

./zadanie5 dane.txt

powinien wypisac na wyjscie:

wiersz pierwszy // to jest komentarz
drugi           // to tez komentarz
tu nie ma komentarza
4 wiersz        // ten komentarz zaczal sie od // a konczy tu

Wskazowka:

Program powinien przejsc po pliku tekstowym dwa razy - raz, by poznac
pozycje najbardziej wysunietego komentarza i drugi raz, by stworzyc
kopie.

A oto rozwiązanie:

program zad5;
USES crt;
//Program napisany na zajęcia z Laboratorium Języka Pascal i C. Zadania nr 5.


var
argumentow,dlugosc,i,j,najdluz:integer;
parametr,wiersz:string;
znaleziono:boolean;
plik:text;



begin

	//Przechwutujemy liczbe argumentow
	argumentow:=ParamCount();

	if (argumentow=1) then
	begin
		//Czytamy parametr
		parametr:=ParamStr(1);

		//Otwieramy plik
		assign(plik, parametr);
		reset(plik);
		najdluz:=0;
		while not EOF(plik) do
		begin
			//Wczytujemy po wierszu
			readln(plik,wiersz);
			dlugosc:=length(wiersz);
			i:=1;
			while ((inajdluz) then
						najdluz:=i;
					znaleziono:=true;
				end;
				i:=i+1;
			end;

		end;
		//wczytane. Teraz najdluz to pierwszy najdalej wysuniety / 

		//Przeskakujemy do poczatku.
		reset(plik);
				
		while not EOF(plik) do
		begin
			//Po wierszu
			readln(plik,wiersz);
			dlugosc:=length(wiersz);
			for i:=1 to dlugosc-1 do
			begin
				//Znalezlismy znak komentarza
				if ((wiersz[i]='/') AND (wiersz[i+1]='/')) then
				begin
					//Dodajemy spacje
					for j:=i to najdluz-1 do
					begin
						write(' ');
					end;
				end;
				//Piszemy znak
				write(wiersz[i]);
			end;
			//Piszemy ostatni znak z wiersza
			write(wiersz[i+1]);
			//I znak nowego wiersza.
			writeln();
		end;
		
	end
end.

Follow the thread

Start here

Eight essays connecting disciplines, useful progress, and deliberate choices.

Writing archive

Browse the complete archive, including technical, personal, travel, and book writing.

Projects

Tools and experiments where the ideas meet practical work.

Leave a Reply

Discover more from Artur Piszek

Subscribe now to keep reading and get access to the full archive.

Continue reading