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/
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;
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.
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.
A co to ma wspólnego z zadaniem? Język programowania?
- Brakuje Randomize
- Tablica ma zawierać liczby od 10 do 90 wiec dlaczego Random(256) ?
- 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ć.
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.
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ść.
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.
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?
prawie, min:=t[i];
przed pętlą, co masz na myśli ?
tak samo max:=t[i];
przed pętlą.
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.
I formatuj kod. Nieważne czy program ma okołó 4 linijkek czy kilka tysięcy. Kod powinien być sformatowany!