Pascalban lekérdezni, hogy a beírt karakter milyen típusú?
Üdv!
Nemrég kezdtem el programozgatni és elakadtam ott, hogy nem tudom hogyan lehetne eldönteni a beírt a szövegről, hogy szám vagy karakter. Igazából a jelenlegi kis programomhoz csak ennyi kéne. Próbáltam keresni, de nekem nem jött össze.
pascalban mindenféleképpen szövegként olvass be és utána megtudod mondani hogy az szöveg vagy szám-e vizsgálattal (mivel ha integerbe olvasol be és szöveget adsz a program kifagy; nincs benne hibakezelési lehetőség ha jól tudom mint a c c++ c# java) - most röviden algoritmikusan elmondom hogy old meg NEM vagy NEM FELTÉTLENÜL a legoptimálisabb választ írom
string beker;
int szam;
int visszater;
Val(beker, szam, visszater);
ha (visszater == 0)
akkor
{
kiir('bekert cucc az egy szám')
}
egyébként
{
kiir('bekert cucc az egy szöveg')
}
ja még annyi hogy
Val(beker, szam, visszater);
beker <= amit bekertel
szam <= a szam megkapja az értéket ha áttudja konvertálni, de ha nem akkor 0 at fog visszaadni
visszater <= ez már érdekesebb, ha 0 át ad vissza akkor nem volt szöveg a bekérésben, ha 0-nál nagyobbat akkor az index poziciót kiírja hogy hol volt benne szöveg
megnéztem lehet hibakezelést csinálni pascalban de azt hagyjuk
Szia.
Pascalban a val () függvénynek néz utánna : [link]
A fenti függvény tudja (többek között) a szövegként beirt számot átalakitani számmá. A Freepascalos mintapélda nagyon korrekt a programnak paraméterként beadott "szövegről" dönti el, hogy hibás-e (a hiba melyik pozicióban van) illetve, hogy a beadott érték mennyi.
Sok sikert.
üdv.
TryStrToInt-tel így:
var
input: string;
szam: Integer;
isNum: Boolean;
begin
Readln(input);
isNum := TryStrToInt(input, szam);
if isNum then begin
Writeln('Szam: ' + IntToStr(szam));
end else begin
Writeln('Nem szam!');
end;
end.
Ha csak egy karakterre vagy kiváncsi akkor így:
var ch : char;
begin
ReadLn(ch); //csak az első karakter számít
if ch in['0'..'9'] then WriteLn ('Szam') else WriteLn ('Karakter');
ReadLn;
end.
#5-nek (SimkoL-nek):
"...és elakadtam ott, hogy nem tudom hogyan lehetne eldönteni a beírt a szövegről, hogy szám vagy karakter."
Tehát nem egy karakterről van szó, ergó a megoldásod, várjál csak, hogy is fogalmaztál? Jaaa igen: "Több karakterrel meg megeteted a húgyos körtét." :-)
Alapkérdés, bár ilyen formában ez is értelmetlen:
'Pascalban lekérdezni, hogy a beírt karakter milyen típusú?' - ha karaktert kérünk be akkor char -
'eldönteni a beírt a szövegről, hogy szám vagy karakter' ez is értelmetlen, helyes(ebb)en: eldönteni a beírt a szövegről, hogy számként lehet-e értelmezni. A karakter az egy ! 'valami' a szám több karakterből is állhat ['0'..'9', '.'] . Technikailag nem mindegy mit, hogyan értékelünk ki. Egy karakterre kiváló a halmazos megoldás, értékadásához az Ord függvény. A Val eljárás nagyon kiváló ha stringet kívánunk számmá alakítani, mivel 'megmondja' a hiba helyét is - ami akár lehet tizedesvessző vagy pont hiba is, bár ezt illik az ilyen jellegűeket már az elején kiszűrni -
De ha elolvastad a válaszom első sorát:
'Ha csak egy karakterre vagy kiváncsi akkor így'
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!