Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím, chtěl bych se zeptat jestli by se danná úloha nedala vyřešit jednodušeji. Díky :)
Zadání (příklad pravděpodobně na použití pole) :
Určete počet různých cifer daného přirozeného čísla, které uživatel zadá z klávesnice.
Moje řešení :
var i,x,cifra,nula,jedna,dva,tri,ctyri,pet,sest,sedm,osm,devet : integer;
cisla : string;
begin
cifra := 0;
nula := 0;
jedna := 0;
dva := 0;
tri := 0;
ctyri := 0;
pet := 0;
sest := 0;
sedm := 0;
osm := 0;
devet := 0;
write('Zadejte cislo : ');
readln(cisla);
for i := 1 to length(cisla) do
begin
x := Ord(cisla[i]) - 48;
case x of
0: begin
nula := nula + 1;
end;
1: begin
jedna := jedna + 1;
end;
2: begin
dva := dva + 1;
end;
3: begin
tri := tri + 1;
end;
4: begin
ctyri := ctyri + 1;
end;
5: begin
pet := pet + 1;
end;
6: begin
sest := sest + 1;
end;
7 : begin
sedm := sedm + 1;
end;
8 : begin
osm := osm + 1;
end;
9 : begin
devet := devet + 1;
end;
end;
end;
if nula > 0 then
cifra := cifra + 1;
if jedna > 0 then
cifra := cifra + 1;
if dva > 0 then
cifra := cifra + 1;
if tri > 0 then
cifra := cifra + 1;
if ctyri > 0 then
cifra := cifra + 1;
if pet > 0 then
cifra := cifra + 1;
if sest > 0 then
cifra := cifra + 1;
if sedm > 0 then
cifra := cifra + 1;
if osm > 0 then
cifra := cifra + 1;
if devet > 0 then
begin
cifra := cifra + 1;
end;
writeln('Pocet ruznych cisel je ',cifra);
end.PS : Jsem začátečník
Offline
Ano dalo.
Stačí si vytvořit pole o velikosti 0-9 (včetně krajních bodů). Na začátku ho nastavíš nulami.
Pak procházet ten vstup (tak jako máš ten for) a vždycky zvětšíš položku pole, které náleží příchozí číslo o 1.
Možná že budeš muset z charu měnit na int, nevím jestli to pascalu dojde samo.
A pak jen vypíšeš výsledky tak že projdeš to pole, vypíšeš velikost iterátoru (to je to i co máš třeba v tom forycklu) a hodnotu na té íté pozici.
Od oka nějak takto.
pole of integer (0..9)
for i := 1 to length(cisla) do
begin
pole[cisla[i]]:= pole[cisla[i]] + 1;
end;
Vypiš výsledky();
Offline