Matematické Fórum

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

#1 22. 11. 2011 21:53

PureL
Zelenáč
Příspěvky: 16
Reputace:   
 

Pascal pocet ruznych cifer

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í :

Code:

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

 

#2 22. 11. 2011 22:10

jindra
Příspěvky: 78
Reputace:   
 

Re: Pascal pocet ruznych cifer

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

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson