Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program WdP_L5_Projekt9a_Olech_Robert;
- uses SysUtils;
- const N = 255;
- type matrix = array [1..N, 1..N] of char;
- var X:Integer;
- procedure generuj(var M:matrix;X:integer);
- var i, j: Byte;
- begin
- Randomize;
- for i:=1 to N do
- begin
- if i<=X then
- begin
- for j:=1 to N do
- begin
- if j<=X then M[i,j]:= char(random(93)+33)
- else M[i,j]:= #0;
- end;
- end
- else
- for j:=1 to N do M[i,j]:= #0;
- end;
- end;
- procedure wyswietl (M:matrix;X:integer);
- var i,j:Byte;
- begin
- for i:=1 to X do
- begin
- for j:=1 to X do write(M[i,j]:4);
- writeln;
- end;
- end;
- procedure zapisz (M:matrix;X:integer;nazwa_pliku:string);
- var i,j:Byte;
- plik : TextFile;
- begin
- AssignFile(plik,nazwa_pliku);
- Rewrite(plik);
- for i:=1 to X do
- begin
- for j:=1 to X do
- begin
- Write(plik,M[i,j],' ');
- end;
- Writeln(plik);
- end;
- CloseFile(plik);
- end;
- procedure wczytaj (var M:matrix;nazwa_pliku:string;var X:integer);
- var i,j,z:Byte;
- znak, space: char;
- plik : textFile;
- begin
- AssignFile(plik, nazwa_pliku);
- if not FileExists(nazwa_pliku) then
- begin
- writeln('Plik nie istnieje!');
- writeln;
- exit;
- end;
- Reset(plik);
- if Eof(plik) then
- begin
- writeln('Plik pusty!');
- writeln;
- exit;
- end;
- while not Eof(plik) do
- Begin
- for i:=1 to N do
- begin
- for j:=1 to N do
- begin
- read(plik,znak,space);
- if znak=#13 then
- begin
- X:=j-1;
- for z:=j to N do
- begin
- M[i,z]:=#0;
- end;
- break;
- end
- else
- begin
- M[i,j]:=znak;
- end
- end;
- if Eof(plik) then break
- end;
- end;
- CloseFile(plik);
- writeln;
- writeln('Rozmiar wczytanej macierzy kwadratowej to N=',X);
- writeln;
- end;
- procedure nowy_rozmiar(var X:integer);
- begin
- writeln;
- writeln('Podaj nowy rozmiar macierzy kwadratowej N:');
- write('N=');
- readln(X);
- end ;
- procedure suma(M:matrix; X:integer);
- var i,j:Byte;
- var result:integer;
- begin
- result:=0;
- for i:=1 to X do
- begin
- for j:=1 to X do
- begin
- if M[i,j] in['0'..'9'] then
- result:=result+ord(M[i,j])-48;
- end;
- end;
- writeln;
- writeln('Suma wszystkich cyfr 0..9 w macierzy wynosi: ',result );
- writeln;
- end;
- procedure diagonal(M:matrix; X:integer);
- var i,j:Byte;
- begin
- writeln;
- write('Ciag znakow z glownej przekatnej macierzy to: ');
- for i:=1 to X do
- begin
- for j:=1 to X do if i=j then write(M[i,j]);
- end;
- writeln;
- writeln;
- end;
- procedure ilosc_znakow(M:matrix; X:integer);
- var i,j:Byte;
- var licznik:integer;
- begin
- licznik:=0;
- for i:=1 to X do
- begin
- for j:=1 to X do
- if (not (M[i,j] in ['a'..'z','A'..'Z'])) then licznik:=licznik+1;
- end;
- writeln;
- writeln('Liczba znakow roznych od liter w macierzy to ',licznik);
- writeln;
- end;
- procedure samogloski(M:matrix; X:integer);
- var i,j:Byte;
- var licznik:integer;
- begin
- licznik:=0;
- for i:=1 to X do
- begin
- for j:=1 to X do
- if M[i,j] in ['a','e','i','o','u','y','A','E','I','O','U','Y'] then licznik:=licznik+1;
- end;
- writeln;
- writeln('Liczba samoglosek w macierzy to ',licznik);
- writeln;
- end;
- procedure maxslowo(M:matrix; X:integer);
- var i,j:Byte;
- var licznik,max,maxw:integer;
- begin
- licznik:=0;
- max:=0;
- maxw:=0;
- for i:=1 to X do
- begin
- for j:=1 to X do
- begin
- if M[i,j] in ['a'..'z','A'..'Z'] then
- begin
- licznik:=licznik+1;
- if licznik>max then
- begin
- max:= licznik;
- maxw:=i;
- end;
- end
- else licznik:=0;
- end;
- licznik:=0;
- end;
- writeln;
- writeln('Najdluzsze slowo znajduje sie w ',maxw,' wierszu i ma ',max, ' znakow');
- writeln;
- end;
- var M: matrix;
- znak : char;
- nazwa_pliku: string;
- begin
- writeln('Podaj rozmiar macierzy kwadratowej N:');
- write('N=');
- readln(X);
- repeat
- writeln('Menu:'#13#10'a - generuj macierz'#13#10'b - zapisz macierz do pliku'#13#10'c - wczytaj macierz z pliku'#13#10'd - wyswietl macierz'#13#10'e - nowy rozmiar macierzy'#13#10'f - ciag znakow z glownej przekatnej'#13#10'g - ilosc samoglosek'#13#10'h - ilosc znakow roznych od liter'#13#10'i - suma cyfr w macierzy'#13#10'j - numer wiersza o najdluzszym slowie'#13#10'q - wyjscie');
- readln(znak);
- case znak of
- 'a': generuj(M,X);
- 'b': begin
- writeln;
- write('Podaj nazwe pliku: ');
- readln(nazwa_pliku);
- writeln;
- zapisz(M,X,nazwa_pliku);
- end;
- 'c': begin
- writeln;
- write('Podaj nazwe pliku do odczytu macierzy: ');
- readln(nazwa_pliku);
- writeln;
- wczytaj(M,nazwa_pliku,X);
- end;
- 'd': wyswietl(M,X);
- 'e': nowy_rozmiar(X);
- 'f': diagonal(M,X);
- 'g': samogloski(M,X);
- 'h': ilosc_znakow(M,X);
- 'i': suma(M,X);
- 'j': maxslowo(M,X);
- 'q': break;
- else
- writeln('Wpisano inny znak');
- end;
- until znak = 'q';
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement