Powtarzanie się elementów

0

Cześć, mam taki mały problem z jednym programem w TP. Mam stworzyć tablicę 3 wymiarową dynamiczną typu rzeczywistego oraz coś takiego, że program ma pokazywać ile razy element się powtórzył, np. element 4 powtórzył się trzy razy, a element 2 dwa razy.
Tyle że nie wiem jak zrobić te powtarzanie. Pomóżcie :/

program zad1;
uses crt;
const ile=20;
var tab : array[1..ile,1..ile,1..ile] of real;
  a,b,c,ile1,ile2,ile3:integer;
begin
  clrscr;
writeln('deklaracja tablicy 3-wymiarowej dynamicznej typu rzeczywistego');
write('podaj ilosc elementow: ');
readln(ile1);
write('podaj ilosc elementow: ');
readln(ile2);
write('podaj ilosc elementow: ');
readln(ile3);
  for a:=1 to ile1 do
begin
  for b:=1 to ile2 do
begin
  for c:=1 to ile3 do
begin
   write('podaj wartosc elementu: ');
   readln(tab[a,b,c]);
  end;
  end;
  end;
  for a:=1 to ile1 do
begin
for b:=1 to ile2 do
begin
for c:=1 to ile3 do
begin
   writeln('wartosc elementu tablicy: ',tab[a,b,c]:0:2);
   end;
   end;
   end;
  readln;
 end.
0

Nie możesz zrobić tak:

const ile=20;
var tab : array[1..ile,1..ile,1..ile] of real;
  a,b,c,ile1,ile2,ile3:integer;

Bardziej elegancko jest

Tab : array of array of array of Real;

A potem ustawiasz długość tablicy przy pomocy SetLength();


edit:

Ale niech Ci będzie, napisze Ci to:
```pascal
program Zad1;

uses 
  crt;
var 
  Tab : array of array of array of Real;
  A, B, C, I, K  : Integer;
  Ile1, Ile2, Ile3 : Integer;
begin
  clrscr;
  Writeln('Deklaracja tablicy 3-wymiarowej dynamicznej typu rzeczywistego');
  Writeln('podaj ilosc elementow: ');
  Readln(ile1);
  Writeln('podaj ilosc elementow: ');
  Readln(ile2);
  Writeln('podaj ilosc elementow: ');
  Readln(ile3);
  SetLength(Tab, Ile1);
  SetLength(Tab[A], Ile2);
  SetLength(Tab[A, B], Ile3);
  for A := 0 to Ile1 - 1 do
    for B := 0 to Ile2 - 1 do
      for C := 0 to Ile3 - 1 do
        begin
          Write('Podaj wartosc elementu ' + IntToStr(A) + '/' + IntToStr(B) + '/' + IntToStr(C));
          Readln(tab[A, B, C]);
        end;

  Writeln('Podaj wartość elementu do sprawdzenia');
  Readln(I);
  K := 0;
  for A := 0 to Ile1 - 1 do
    for B := 0 to Ile2 - 1 do
      for C := 0 to Ile3 - 1 do
        begin
          if Tab[A, B, C] = I then 
            K := K + 1;
        end; 
  Writeln('Element ' + IntToStr(I) + ' znaleziono ' + IntToStr(K) + ' razy.');
  readln;
 end.

Nie gwarantuje działania tego:

  SetLength(Tab, Ile1);
  SetLength(Tab[A], Ile2);
  SetLength(Tab[A, B], Ile3);

Wpadłem na to przed chwilą.

0

Nie wiem, skopiowałem program do siebie i nie działa, error 92 w linijce gdzie są array'e :/

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