TABLICE
WPISYWANIE DANYCH DO TABLIC OPERACJE NA DANYCH ZAWARTYCH W TABLICACH
program telefon;
uses crt;
var i,j:word;
begin
for j:=1 to 5 do begin;
for i:=0 to 8 do
begin
sound(523); asm hlt
end; Delay(50);
sound(659); asm hlt
end; Delay(50);
end;
nosound;
delay(1000);
end;
end.
Jak wpisywać dane we właściwe
miejsce w tabeli wiersz po wierszu danych zostanie teraz pokazane na poniższym
przykładzie:
program tabliczka;
uses crt;
const
mw=20;
mk=20 ;
var
i,j,n,m:integer;{i,j zmienne
kontrolne pętli, m, n wymiar tablicy}
tab: array [1..mw,1..mk] of integer;
begin
writeln(' podaj wymiary
tablicy');
readln(n,m);
writeln('podaj elementy tablicy
w kolejności wiersz po wierszu');
for i:=1 to m do
for j:=1 to n do
read(tab[i,j]);{ wydruk
tablicy}
clrscr;
writeln('elementy tablicy');
writeln;
for i:=1 to m do
begin
for j:= 1 to n do
write(tab[i,j]:5);
writeln;
end;
readln(tab[i,j]);
end.
Jako zadanie teraz proszę
zmodyfikować program wpisywać w kolejności kolumna po kolumnie.
Jeżeli
już potrafimy wpisać dane do tabeli to teraz postaramy się dodawać dane w
wierszu wykorzystując powyższy program
program suma;
uses crt;
const
mw=20;
mk=20 ;
var
i,j,n,m:integer;{i,j zmienne
kontrolne petli,m,n wymiar tablicy}
tab: array [1..mw,1..mk] of integer;
suma:integer;
begin
writeln(' podaj wymiary
tablicy');
readln(n,m);
for i:=1 to m do
begin
textcolor(green);
writeln('podaj elementy ', i ,'
wiersza');
for j:=1 to n do
read(tab[i,j]);{ wydruk tablicy}
end;
for j:=1 to n do
begin
suma:=0;
for i:=1 to m do
suma:=
suma+tab[i,j];
textcolor(6);
writeln( 'suma elementów w ',j,' kolumnie wynosi ',suma);
readln;
end
end.
A jeszcze w jaki sposób możemy wpisywać dane do
tabeli oto kolejny przykład
PROGRAM Tablica_jednowymiarowa;
USES Crt;
CONST
n_max=10; (* maksymalna liczba
elementów *)
TYPE
Dane = ARRAY [1..n_max] OF
INTEGER;
VAR
n : INTEGER;
T_1 : Dane;
(**********************************)
PROCEDURE Wprowadzanie(VAR
t:Dane);
VAR
i :INTEGER; (* zmienna
kontrolna *)
BEGIN
Writeln(' Wprowadzanie danych do tablicy ');
Writeln;
Write (' Podaj ilość elementów (n<=20), n=
');
Readln (n);
Writeln;
Write (' Podaj elementy tablicy w kolejności');
Writeln;
Writeln;
FOR i:=1 TO n DO
BEGIN
Write(' element nr= ',i,',
T_1[ ' , i ,' ] = ');
Readln (T_1[i]);
END;
END;
(**********************************)
PROCEDURE Odczyt_tablicy(VAR
t:Dane);
VAR
i :INTEGER; { zmienna kontrolna
}
BEGIN
Writeln;
Write (' Odczytaj elementy tablicy w kolejności');
Writeln;
Writeln;
FOR i:=1 TO n DO
BEGIN
Write(' element nr= ',i,',
T_1[ ' ,i ,' ] = ');
Writeln (T_1[i])
END;
END;
(***********************************)
BEGIN
ClrScr;
Wprowadzanie(T_1);
Odczyt_tablicy(T_1);
Writeln;
REPEAT UNTIL KeyPressed
END.
A tak wpisujemy dane do tabeli dwuwymiarowej
PROGRAM Tablica_dwuwymiarowa;
USES
Crt;
CONST
w_max=10; (* maksymalna liczba
wierszy *)
k_max=10; (* maksymalna liczba
kolumn *)
TYPE
Dane = ARRAY [1..w_max,
1..k_max] OF INTEGER;
VAR
m,n : INTEGER;
TAB : Dane;
(**********************************)
PROCEDURE Wprowadzanie(VAR
T:Dane);
VAR
i,j :INTEGER; (* zmienna
kontrolna *)
BEGIN
Writeln(' Wprowadzanie danych do tablicy ');
Writeln;
Write (' Podaj ilość wierszy (m<=10), m= ');
Readln (m);
Write (' Podaj ilość kolumn
(n<=10), n= ');
Read (n);Writeln;
Write (' Podaj elementy tablicy w kolejności');
Writeln (' wiersz po wierszu ');Writeln;
FOR i:=1 TO m DO
FOR j:=1 TO n DO
BEGIN
Write(' w= ',i,', k= ',j,', TAB[',i ,',',j,'] = ');
Readln (T[i,j]);
END;
END;
(**************************************************)
PROCEDURE Odczyt_tablicy (VAR
T:Dane);
VAR
i,j :INTEGER; { zmienna
kontrolna}
BEGIN
Writeln;
Write (' Odczytaj elementy tablicy w kolejności');
Writeln (' wiersz po wierszu ');
Writeln;
FOR i:=1 TO m DO
FOR j:=1 TO n DO
BEGIN
Write(' w= ',i,', k= ',j,',
TAB[',i ,',',j,'] = ');
Writeln (T[i,j])
END;
END;
(**************************************************)
BEGIN
ClrScr;
Wprowadzanie(TAB);
Odczyt_tablicy(TAB);
Writeln;
REPEAT UNTIL KeyPressed
END.
Przedstawiam teraz dwa
proste programy z wykorzystaniem danych zawartych w tablicach
program para_liczb;
const
max=100;
var
n,i,j:integer;
t:array[1..max]of integer;
begin
writeln('podaj liczbę elementów n= ' );
readln(n);
writeln('podaj elementy');
for i:=1 to n do
read(t[i]);
for i:=1 to n do
for j:=i+1 to n do
if t[i]=t[j] then
{begin}
writeln('istnieje para liczb jednakowych')
readln;
halt
end;
writeln('nie istnieje para elementów jednakowych');
readln;
end.
PROGRAM Toto_Multi_Lotek;
USES
Crt;
TYPE
t_zakres = 0..80; (* zakres
liczb w totku; zero dodatkowo z uwagi na sortowanie z wartownikiem *)
CONST
(* Z tej tablicy będziemy losowali liczby; wylosowane usuwamy, aby ich ponownie nie
losować *)
Liczby : ARRAY[1..80] OF
t_zakres =
( 1, 2, 3, 4, 5, 6, 7, 8, 9,10,
11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,
31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50,
51,52,53,54,55,56,57,58,59,60,
61,62,63,64,65,66,67,68,69,70,
71,72,73,74,75,76,77,78,79,80);
VAR
i,j,nr_los,n,x : t_zakres;
wylosowane : ARRAY[0..20] OF t_zakres;
(********************************)
BEGIN
ClrScr;
Randomize;
(* losujemy liczby *)
FOR i:=1 TO 20 DO
BEGIN
nr_los:=RANDOM(80-i)+1;
(* losujemy numer liczby z tablicy 'Liczby' *)
wylosowane[i]:=Liczby[nr_los];
FOR n:=nr_los TO 79-i DO
Liczby[n]:=Liczby[n+1];
(* wylosowana liczba jest usuwana z tablicy 'Liczby'
a pozostałe przesuwamy do przodu *)
END;
(* sortujemy wylosowane liczby *)
FOR i:=2 TO 20 DO
BEGIN
x:=wylosowane[i];
wylosowane[0]:=x; (*
'wylosowane[0]' pełni role wartownika *)
j:=i-1;
WHILE x<wylosowane[j] DO
BEGIN
wylosowane[j+1]:=wylosowane[j];
j:=j-1; (*
zmniejszamy j o 1 *)
END;
wylosowane[j+1]:=x
END;
Writeln(' Wylosowano następujące liczby w Multi_Lotku: ');
Writeln;
FOR i:=1 TO 20 DO
Write(wylosowane[i]:4);
Readln;
END.