pomoc w poprawieniu programu :D

0

mam problem z wymyśleniem algorytmu:
napisz program tak aby
umożliwiał znalezienie wszystkich wystąpień danej wartości w tablicy.
Wyniki tego wyszukiwania powinien zapisywać w innej tablicy.

właśnie widze ze z podaniem kodu mam probelem ale powiem co wymyślilem:
najperw przypisze pesudolosowe wartosci tablicy x
następnie posortuje tablice
na koniec zrobił bym tak że zmiennej np. h nadaje wartosć x[i], a w y[h] dodaje 1 (co by zliczało ilość wystąpień wartości),
a gdy zaczynała by sięinna wartość zerował bym n

for i:=low (tab) to high (tab) do
  begin
    h:=x[i];
    y[h]:=n+1;
    if x[i+1]>x[i] then n:=0
end; 

tylko problem w tym ze mój algroytm nie działa jak sądzicie co robie źle??

0

Nie rozumiem..

masz tablice: [1, 2, 3, 7, 9, 22, 4, 6, 3, 1, 5, 3]
i masz wyszukać wystąpienia liczby 3...
jest ich w tej tablicy sztuk 3, wiec
co masz zrobic ? utworzyc tablice [3, 3, 3] ?

0

@up, chyba nie zgadłeś. MA utworzyć tablicę [2,8,11].

1

Coś takiego ?

Const Porownaj = 3;
      IleLiczb = 100;
Var T1, T2   : Array[0..IleLiczb-1] Of Integer;
    I, Q     : Integer;
Begin
 Randomize;
 For I := 0 To High(T1) Do
  T1[i] := Random(1000);
 Q := 0;
 For I := 0 To High(T1) Do
  if (T1[i] = Porownaj) Then
  Begin
   T2[q] := I;
   Inc(Q);
  End;
 WriteLn(Porownaj,' wystepuje ', Q, ' razy w tablicy.');
 WriteLn;
 WriteLn('Wystepuje na pozycjach: ');
 For I := 0 To Q Do
  WriteLn(T2[i]);
End.
0
 program i7e2;
uses crt;
 type matrix = array [0..9] of byte      ;
 var  x,y:matrix;
      l,a:byte ;
FUNCTION randon (f:matrix;b:byte):byte;
begin
  randomize;
  writeln ('randon')  ;
  writeln;
  for b:=0 to 9 do
      begin
           f[b]:=random (9);
           x[b]:=f[b];
            write ('x[',b,']=',x[b],' ');
      end;
   writeln;
end;

procedure selection_sort( t:matrix);
var
   i,j,k,tmp:byte;
begin
  for i:=low(t) to high(t)-1 do
      begin
           k:=i;
           for j:=i+1 to high(t) do
               if t[k] > t[j] then k:=j;
               if i<>k then
                  begin
                       tmp:=t[k];
                       t[k]:=t[i];
                       t[i]:=tmp;
                  end;
               x[i]:=t[i];
               write ('x[',i,']=',x[i],' ');
      end;
end;

begin
     clrscr;
     writeln ('randon');
     randon (x,l);

     writeln ('');
     writeln ('sortowanie');
     selection_sort(x);
     readln;
end.

o zrobiłem to na razie tak dalej nie wiem

0
 program i7e2;
uses crt;
 type matrix = array [0..9] of byte      ;
 var  x,y:matrix;
      l,a:byte ;
FUNCTION randon (f:matrix;b:byte):byte;
begin
  randomize;
  writeln ('randon')  ;
  writeln;
  for b:=0 to 9 do
      begin
           f[b]:=random (9);
           x[b]:=f[b];
            write ('x[',b,']=',x[b],' ');
      end;
   writeln;
end;

procedure selection_sort( t:matrix);
var
   i,j,k,tmp:byte;
begin
  for i:=low(t) to high(t)-1 do
      begin
           k:=i;
           for j:=i+1 to high(t) do
               if t[k] > t[j] then k:=j;
               if i<>k then
                  begin
                       tmp:=t[k];
                       t[k]:=t[i];
                       t[i]:=tmp;
                  end;
               x[i]:=t[i];
               write ('x[',i,']=',x[i],' ');
      end;
end;

begin
     clrscr;
     writeln ('randon');
     randon (x,l);

     writeln ('');
     writeln ('sortowanie');
     selection_sort(x);
     readln;
end.

o zrobiłem to na razie tak dalej nie wiem
mówisz patryk23 tak??
tablicy nadajesz wartosci do 1000
i jezeli jakis element tab równy jest stałej proównaj (tu 3)
potem t2[q] nadajesz wartosci I
potem procedura inc { ona powina zwiększać wartośc 1 podana w nawiasie o wartosc 2 a podałeś tylko q to zwiększa o 1??}
nodopiero pół roku sie ucze :D , aha może tu chodzi o to by dla wskazanej wartości pokazywał ile razy występuje ( hehe ja pomyślałem ze wszystkie ma zbadać i pokazaćile razy sa :D)
hehe jak z indeksami zaczarowałeś ( nie wiedziałęm o tym to co t1 ma 100 indexów??)

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