Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Pascal: Etsi numero merkkijonosta

sqwiik [20.03.2004 14:28:56]

#

Eli... koodaatessani manageripeliäni, en löytänyt funktiota joka etsisi merkkijonosta siihen tungetun luvun. Jos sekalaista tekstiä tungetaan normaaliin StrToInt-funktioon, niin tulee errori ja ohjelma kaatuu. Estääkseni tällaisen häiriköinnin, kasasin seuraavan funktion joka etsii kokonaislukua merkkijonosta. Jos ei löydy, palauttaa 0. EI huomioi mahdollisuutta, että numero olisi negatiivinen.
Myöskin errorittaa, jos numero paisuu liian suureksi.

Jollekulle ainakin tästä on hyötyä, eniten ehkä minulle itse :)

function EtsiNumero(s : string) : Integer;
var
  a, b, c, d : integer;
  num : LongInt;
begin
  a := Length(s); c := 0; num := 0;
  for b := 1 to a do begin
    if ((s[b] >= '0') and (s[b] <= '9')) and (c = 0) then begin //numeron alkukohta
      c := b;
    end else if ((s[b] < '0') or (s[b] > '9')) and (c <> 0)  then begin //numeron loppukohta
      Break;
    end;
  end;
  b := b - 1;
  if c <> 0 then begin //löytyi numero, c on alkukohta ja b loppu
    d := 1;
    for a := b downto c do begin //lopusta alkuun
      num := num + d*(Integer(s[a])-Integer('0'));
      d := d * 10; //nousee nousee...
    end;
    Result := num;
  end
  else Result := 0;
end;

zacura [24.03.2004 14:01:37]

#

Val proceduuri tekee melkein saman mutta ei löydä numeroa jos merkkijono alkaa kirjaimella.

sqwiik [24.03.2004 14:47:35]

#

..ja juuri sen vuoksi väsäsinkin tuon.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta