Wątek przeniesiony 2014-03-15 17:25 z Delphi i Pascal przez olesio.

Znajdowanie największego elementu w tablicy.

0

Proszę o pomoc mam problem z takim zadaniem:
Napisz program znajdujący element największy w jednowymiarowej tablicy złożonej z 30 losowo wygenerowanych liczb całkowitych z zakresu od 10 do 90.
Proszę o pomoc i z góry dziękuje/

0

Aby tobie pomóc potrzebujemy informacji o tym z czym masz problem, no chyba że pomyliłeś pojęcie "pomóc" z pojęciem "odwalenie pracy za nieroba".
Z tytułu wynika że masz problem z tablicą, możesz zadeklarować ją np tak:

var Tb:array[1..30] of 10..90;
0

Dokładnie, opisz z czym problem. Pokaż własny kod. Bo zadanie jest banalne. Dlatego wątek przenoszę do działu Newbie. I na przyszłość tam zadawaj pytania o takie podstawy. Nadawaj też sensowne tagi i tytuły swoim wątkom. Pisanie problem jest bez sensu. Wiadomo, że skoro piszesz w takim dziale, to raczej z czymś masz problem.

0

Tak jest to zadanie łatwe, jestem początkujący stworzyłem coś takiego:

uses crt;

var
 tablica:array[1..30] of 10..90;
  pom,i,l:byte;


procedure sortuj;
begin

for i:=1 to 30 do
 begin
 l:=i;
  repeat
  if tablica[l]<tablica[l-1] then begin
  pom             :=tablica[l];
  tablica[l]  :=tablica[l-1];
  tablica[l-1]:=pom;
  end;
  Dec(l);
 until(l=1);
 end;
end;


begin

 for i:=1 to 30 do tablica[i]:=random(256);
 for i:=1 to 30 do  write('  ',tablica[i]);
 sortuj;
 writeln;
 writeln;
 writeln;
 for i:=1 to 30 do write('  ',tablica[i]);


end.
0

A co to ma wspólnego z zadaniem? Język programowania?

  1. Brakuje Randomize
  2. Tablica ma zawierać liczby od 10 do 90 wiec dlaczego Random(256) ?
  3. Z tego co napisałeś w treści zadania nie ma nic o sortowaniu... masz tylko znaleźć największą liczbę więc chyba masz tylko wypisać wylosowane liczby i na końcu napisać która z nich jest największa. W treści zadania nie podano czy wylosowane liczby mogą się powtarzać.
0

Nie mam pojęcia skąd wiozłem tam ten Random(256), gdzieś musiało się zaplątać. Nie wiem w jaki inny sposób znaleźć największą i najmniejszą liczbę wiec uznałem że je posortuje to będzie wiadomo.

0

A czy nie jest najprościej ustawić jakąś zmienną na zero i w pętli sprawdzać wartość elementów tablicy i tę zmienną wcześniej ustawioną na zero porównywać z elementami tablicy? I jeżeli wartość elementu jest wyższa od tej zmiennej, to ustawić zmienną na wartość elementu tablicy. Może to i dłuższe od niektórych algorytmów sortowania, ale dla tak małej talicy operacja ta i tak zajmnie na pewno poniżej jednej milisekundy. Czyli problemu nie ma.

A i szkoda, że od razu "smarujesz" posta na forum. Bo jakbyś najpierw poszukał za pewne znalazł byś gotowe kody do takiego zadania tylko z inną wielkością tablicy oraz zakresem losowanych liczb. Taki temat został wielokrotnie "oklepany", ponieważ tego typu zadanie często się wyznacza dla kogoś kto zaczyna z danym językiem, ponieważ jest ono banalnie proste. Wymaga tylko znajomości podstaw danego języka i logicznego przemyślenia problemu. Pisanie na fora to ostateczność.

1

Wyobraź sobie że masz kolejkę ludzi stojących do czegoś i musisz odnaleźć największą oraz największą datę urodzin (bez roku). Zastanów się jak to zrobisz. Masz to zrobić tak aby każdego odpytywać o datę urodzin nie więcej niż raz.

0

Czyli jakoś tak:

var t:array[1..30] of 10..90;
max,min,i:integer;
begin
randomize; 
for i:=1 to 30 do
begin
t[i]:=random(89);
write(t[i]:7);
end;

writeln;
for i:=2 to 30 do
min:=t[1];
if (t[i] < min) then min:=t[i];
writeln('Najmniejsza wartość to ',min);

writeln;
for i:=2 to 30 do
max:=t[1];
if (t[i] > max) then max:=t[i];
writeln('Największa wartość to ',max);
end.

Racja, powieliłem bezmyślnie błędna składnie z min do max. Teraz już gra?

1

prawie, min:=t[i]; przed pętlą, co masz na myśli ?
tak samo max:=t[i]; przed pętlą.

0

W komentarzach uwagi co do kodu (nie wszystko mogłem zauważyć bo bez kompilatora i kod nie sformatowany}

var t:array[1..30] of 10..90;
max,min,i:integer;
begin
randomize; 
for i:=1 to 30 do
begin
t[i]:=random(90); {tu losujesz tylko od 0 do 89}
write(t[i]:7);
end;
writeln;
min:=t[i]; {raczej nie i-ty tylko pierwszy element tablicy poza tym nie ma nic o szukaniu minimum}
for i:=2 to 30 do
if (t[i] < min) then min:=t[i];
writeln('Najmniejsza wartość to ',min);
writeln;
max:=t[i]; {nie i-ty tylko pierwszy}
for i:=2 to 30 do
if (t[i] > max) then max:=t[i];
writeln('Największa wartość to ',max);
end.
0

I formatuj kod. Nieważne czy program ma okołó 4 linijkek czy kilka tysięcy. Kod powinien być sformatowany!

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