Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.22 KB | None | 0 0
  1. program WdP_L5_Projekt9a_Olech_Robert;
  2.  uses SysUtils;
  3.  const N = 255;
  4.  type matrix = array [1..N, 1..N] of char;
  5.  var X:Integer;
  6.  
  7.  procedure generuj(var M:matrix;X:integer);
  8.  var i, j: Byte;
  9.    begin
  10.      Randomize;
  11.      for i:=1 to N do
  12.          begin
  13.            if i<=X then
  14.               begin
  15.                 for j:=1 to N do
  16.                 begin
  17.                 if j<=X then M[i,j]:= char(random(93)+33)
  18.                 else M[i,j]:= #0;
  19.                 end;
  20.               end
  21.            else
  22.              for j:=1 to N do M[i,j]:= #0;
  23.              end;
  24.    end;
  25.  
  26. procedure wyswietl (M:matrix;X:integer);
  27. var i,j:Byte;
  28.   begin
  29.     for i:=1 to X do
  30.         begin
  31.           for j:=1 to X do write(M[i,j]:4);
  32.           writeln;
  33.         end;
  34.   end;
  35. procedure zapisz (M:matrix;X:integer;nazwa_pliku:string);
  36. var i,j:Byte;
  37.   plik : TextFile;
  38.   begin
  39.   AssignFile(plik,nazwa_pliku);
  40.   Rewrite(plik);
  41.   for i:=1 to X do
  42.       begin
  43.          for j:=1 to X do
  44.              begin
  45.              Write(plik,M[i,j],' ');
  46.              end;
  47.          Writeln(plik);
  48.       end;
  49.   CloseFile(plik);
  50.   end;
  51. procedure wczytaj (var M:matrix;nazwa_pliku:string;var X:integer);
  52.   var i,j,z:Byte;
  53.    znak, space: char;
  54.    plik : textFile;
  55.   begin
  56.    AssignFile(plik, nazwa_pliku);
  57.    if not FileExists(nazwa_pliku) then
  58.       begin
  59.       writeln('Plik nie istnieje!');
  60.       writeln;
  61.       exit;
  62.       end;
  63.    Reset(plik);
  64.    if Eof(plik) then
  65.       begin
  66.       writeln('Plik pusty!');
  67.       writeln;
  68.       exit;
  69.       end;
  70.   while not Eof(plik) do
  71. Begin
  72.  for i:=1 to N do
  73.       begin
  74.         for j:=1 to N do
  75.         begin
  76.          read(plik,znak,space);
  77.          if znak=#13 then
  78.             begin
  79.               X:=j-1;
  80.               for z:=j to N do
  81.               begin
  82.                M[i,z]:=#0;
  83.               end;
  84.               break;
  85.             end
  86.          else
  87.          begin
  88.          M[i,j]:=znak;
  89.          end
  90.       end;
  91.         if Eof(plik) then break
  92.       end;
  93.   end;
  94.    CloseFile(plik);
  95.    writeln;
  96.    writeln('Rozmiar wczytanej macierzy kwadratowej to N=',X);
  97.    writeln;
  98.   end;
  99. procedure nowy_rozmiar(var X:integer);
  100. begin
  101. writeln;
  102. writeln('Podaj nowy rozmiar macierzy kwadratowej N:');
  103. write('N=');
  104. readln(X);
  105. end ;
  106. procedure suma(M:matrix; X:integer);
  107. var i,j:Byte;
  108. var result:integer;
  109. begin
  110. result:=0;
  111. for i:=1 to X do
  112.  begin
  113.   for j:=1 to X do
  114.    begin
  115.     if M[i,j] in['0'..'9'] then
  116.         result:=result+ord(M[i,j])-48;
  117.    end;
  118.  end;
  119. writeln;
  120. writeln('Suma wszystkich cyfr 0..9 w macierzy wynosi: ',result );
  121. writeln;
  122. end;
  123. procedure diagonal(M:matrix; X:integer);
  124. var i,j:Byte;
  125. begin
  126. writeln;
  127. write('Ciag znakow z glownej przekatnej macierzy to: ');
  128. for i:=1 to X do
  129.  begin
  130.   for j:=1 to X do if i=j then write(M[i,j]);
  131.  end;
  132. writeln;
  133. writeln;
  134. end;
  135. procedure ilosc_znakow(M:matrix; X:integer);
  136. var i,j:Byte;
  137. var licznik:integer;
  138. begin
  139. licznik:=0;
  140. for i:=1 to X do
  141.  begin
  142.   for j:=1 to X do
  143.     if (not (M[i,j] in ['a'..'z','A'..'Z'])) then licznik:=licznik+1;
  144.  end;
  145. writeln;
  146. writeln('Liczba znakow roznych od liter w macierzy to ',licznik);
  147. writeln;
  148. end;
  149. procedure samogloski(M:matrix; X:integer);
  150. var i,j:Byte;
  151. var licznik:integer;
  152. begin
  153. licznik:=0;
  154. for i:=1 to X do
  155.  begin
  156.   for j:=1 to X do
  157.     if M[i,j] in ['a','e','i','o','u','y','A','E','I','O','U','Y'] then licznik:=licznik+1;
  158.  end;
  159. writeln;
  160. writeln('Liczba samoglosek w macierzy to ',licznik);
  161. writeln;
  162. end;
  163. procedure maxslowo(M:matrix; X:integer);
  164. var i,j:Byte;
  165. var licznik,max,maxw:integer;
  166. begin
  167. licznik:=0;
  168. max:=0;
  169. maxw:=0;
  170. for i:=1 to X do
  171.  begin
  172.   for j:=1 to X do
  173.    begin
  174.     if M[i,j] in ['a'..'z','A'..'Z'] then
  175.        begin
  176.          licznik:=licznik+1;
  177.          if licznik>max then
  178.             begin
  179.               max:= licznik;
  180.               maxw:=i;
  181.             end;
  182.        end
  183.     else licznik:=0;
  184.    end;
  185.   licznik:=0;
  186.  end;
  187. writeln;
  188. writeln('Najdluzsze slowo znajduje sie w ',maxw,' wierszu i ma ',max, ' znakow');
  189. writeln;
  190. end;
  191.   var  M: matrix;
  192.   znak : char;
  193.   nazwa_pliku: string;
  194.  
  195. begin
  196.      writeln('Podaj rozmiar macierzy kwadratowej N:');
  197.      write('N=');
  198.      readln(X);
  199.      repeat
  200.  
  201.    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');
  202.    readln(znak);
  203.    case znak of
  204.    'a': generuj(M,X);
  205.    'b': begin
  206.        writeln;
  207.        write('Podaj nazwe pliku: ');
  208.        readln(nazwa_pliku);
  209.        writeln;
  210.        zapisz(M,X,nazwa_pliku);
  211.    end;
  212.    'c': begin
  213.         writeln;
  214.         write('Podaj nazwe pliku do odczytu macierzy: ');
  215.         readln(nazwa_pliku);
  216.         writeln;
  217.         wczytaj(M,nazwa_pliku,X);
  218.         end;
  219.    'd': wyswietl(M,X);
  220.    'e': nowy_rozmiar(X);
  221.    'f': diagonal(M,X);
  222.    'g': samogloski(M,X);
  223.    'h': ilosc_znakow(M,X);
  224.    'i': suma(M,X);
  225.    'j': maxslowo(M,X);
  226.    'q': break;
  227.  
  228.     else
  229.       writeln('Wpisano inny znak');
  230.    end;
  231.    until znak = 'q';
  232.  
  233. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement