zdravim tu všechny potřeboval bych pomoct s úkolem. máme pěknej úkol, slyšte: Je dán počet vstupních hodnot N a dále posloupnost N čísel a1, a2, ?, aN. Všechna zadaná čísla jsou celá a jsou z rozsahu datového typu integer, počet čísel N není větší než 10000. Určete, kolik různých hodnot se nachází v zadaní posloupnosti. Například pro vstup ve tvaru
10
4 7 5 5 7 7 20 25 7 30
bude výsledkem číslo 6.
Jsem v programování naprostej nováček a vůbec to nechápu, prosím pomozte někdo, díky moc všem :(.
kdyžtak icq 325250246, nabo sem do fora, mějte se
Fórum › Pascal
Help s úkol (klišeé?)
Rozhodně sem na fórum. Až z toho mají užitek i ostatní
Nepoznam Pascal, ale napr v C++ by sa to dalo velmi lahko vyriesit set-om.
Proste datovou strukturov, ktora uklada z kazdeho exemplaru iba jeden (tj tie zvysne 5, 7 by sa neulozili. potom by stacilo iba spocitat pocet prvkov v sete a bolo by).
To je velmi pěkná úloha. Dá se totiž řešit dvěma způsoby - s použitím pomocného pole (rychlejší, ale náročnější na paměť) nebo bez něj (pomalejší, ale nepotřebuje tolik paměti). Takže vyvstává klasické programátorské dilema :-)
Provedení bez pomocného pole:
uses crt; {abychom mohli pouzivat funkce RANDOMIZE a RANDOM}
const maxprvku=18;
maxhodnota=6;
var pole:array[1..maxprvku] of integer;
i,j,k,p:integer;
b:boolean;
begin
randomize;
writeln('V teto posloupnosti:...');
for i:=1 to maxprvku do
begin
pole[i]:=random(maxhodnota); {naplneni pole}
writeln(pole[i]);
end;
p:=0;
for i:=1 to maxprvku do
begin
k:=pole[i];
b:=false;
for j:=1 to i-1 do
if pole[j]=k then
begin
b:=true;
Break;
end;
if b=false then inc(p);
end;
writeln('...se vyskytuje ',p,' hodnot.');
readln;
end.
Provedení s pomocným polem:
uses crt; {abychom mohli pouzivat funkce RANDOMIZE a RANDOM}
const maxprvku=18;
maxhodnota=6;
var pole:array[1..maxprvku] of integer;
zname:array[1..maxprvku] of integer;
i,j,k,p:integer;
b:boolean;
begin
randomize;
writeln('V teto posloupnosti:...');
for i:=1 to maxprvku do
begin
pole[i]:=random(maxhodnota); {naplneni pole}
writeln(pole[i]);
end;
p:=0;
for i:=1 to maxprvku do
begin
k:=pole[i];
b:=false;
for j:=1 to p do
if zname[j]=k then
begin
b:=true;
Break;
end;
if b=false then inc(p);
end;
writeln('...se vyskytuje ',p,' hodnot.');
readln;
end.
To Laaca: Ten druhý program je špatně, zapomněl jsi tam dát ukládání do pomocného pole.
Část programu
if b=false then inc(p);
bych nahradil
if b=false then
begin
inc(p);
zname[p]:=k;
end;
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 11 hostů
Podobná vlákna
Moderátoři diskuze