[ Alexandar_R92 @ 16.02.2010. 16:50 ] @
Pozdrav...
Treba mi pomoc:
Kako da napravim program takav da od korisnika trazi broj unosa (maksimalan broj unosa 1000,unose se brojevi),zatim ako korisnik pri unosu upise broj koji je vec negde prethodno upisao dobija obavestenje npr. BROJ XXX JE VEC UPISAN.
Ovo je neko moje resenje kojim nisam zadovoljan:

Code:
program xxxxx;
uses crt;
var broj:array[1..1000]of integer;
    i,komada,provera:integer;

begin
Writeln('Broj unosa');Readln(komada);

for i:=1 to komada do begin
   writeln('Unesi broj');
   readln(broj[i]);

   for provera:=1 to i-1 do begin

    if (broj[i]=broj[provera]) then begin
        writeln('PONOVLJEN UPIS')
    end
   end
   end;

while not KeyPressed do
end.



[ krle_zr @ 16.02.2010. 19:12 ] @
Pazi, ja bas mislim da ti je solidan algoritam, unosis brojeve i odmah po unosu proveravas. Jedino sto bih ja izmenio tu je da monotoni posao prebrojavanja ostavis racunaru (korisnik ne mora da na pocketku zna koliko ce clanova biti).

Inace imam neki predlog ali ne zadovoljava kriterijum (ne radi vise od 256 unosa )

Code:


var
  Brojevi: set of byte; //ovde je problem sto ide najvise do 256 unosa
  broj:Integer;

begin
  Brojevi := [];
  I := 0;
repeat
  Writeln('Unesi broj(9999 za kraj) ', I, ': ');
  Readln(broj);
  if broj in Brojevi then
  begin
    writeln('Broj ', Broj, ' postoji.');
    readln;
    exit;
  end;
  Brojevi := Brojevi + [Broj];
  Inc (I);
until
  (Broj = 9999) or (I = 255);



Pozdrav
[ Alexandar_R92 @ 16.02.2010. 22:43 ] @
Ok tvoj predlog mi se dopada :) ,uz male izmene to je ono sto mi treba al je problem tih 256 unosa,potrebno mi je bar 500 i neophodno je da korisnik na pocetku odredi broj unosa.U mom kodu jedino mi se ne svidja sto npr. nakon trece provere odredjenog broja koji je upisan tri puta izbacuje 3 poruke da vec postoji a ne jednu.
Hvala...
[ krle_zr @ 17.02.2010. 07:21 ] @
Može ovako?

Code:


var
  Broj: array [1..1000] of Integer;
  I, Komada, Provera: integer;
  Nadjeno: set of Byte;
begin


  Nadjeno := [];

  Writeln('Broj unosa');
  Readln(komada);
  for I := 1 to komada do
  begin
    writeln('Unesi broj ', I, ':');
    readln(Broj[I]);

    for Provera := 1 to I - 1 do
    begin

    if broj[I] = broj[provera] then
    begin
      if not (broj[I] in Nadjeno) then
        Nadjeno := Nadjeno + [Broj[i]];


    end

   end

  end;
  writeln('Ponovljeni brojevi:');

  for I := 1 to Komada do
  begin
    if broj[I] in Nadjeno then
    begin
      writeln(Broj[I]);
      Nadjeno := Nadjeno - [Broj[I]];
    end;
  end;
  readln;

end.
[ Alexandar_R92 @ 17.02.2010. 14:31 ] @
Da ovakav cod mi odgovara i jos jednom hvala na pomoci.