mam urcitu predstavu ako by som to spravil ale uvitam vase navrhy diky moc ...
pomoc s pascalom
-
ja to nebyl
Medium Expert
- Príspevky: 80
- Registrovaný: 27 jún 2008, 19:46
pomoc s pascalom
mam nejake taketo zadanie: Cislo slovom - Vytvorte reazovu funkciu, ktora prevedie celosiselny udaj na jeho slovne vyjadrenie. Hodnotu udaja obmedzte intervalom (0-1000). Osetrite zadanie min. a max. vstupnej celociselnej hodnoty...
mam urcitu predstavu ako by som to spravil ale uvitam vase navrhy diky moc ...
mam urcitu predstavu ako by som to spravil ale uvitam vase navrhy diky moc ...
No ja to chápem tak, že každú číslicu prehodí na jej znak v ASCII kóde. Urobíš to jednoducho tak, že si rozložíš číslo na cifry a potom pomocou príkazu chr, napr. a:=97, s:=chr(a) a potom v s:='a'; Zo znaku na číslo to robíš pomocou príkazu ord.
-
ja to nebyl
Medium Expert
- Príspevky: 80
- Registrovaný: 27 jún 2008, 19:46
nie nie kamo nie tak ... pretoze to ma byt tak aspom ja som to tak pochopil aby spravilo prepis napr 99=deveddesiat devet chapes pretoze asci by ti spravilo z dvoch deviatok napr "bb" (neviem co je v asci 99 tak to bol priklad) ja som sa zatial dostal takto ale nenapise nic pretoze asi x je integer a cislo je string vedel by som to rpeviest aj ked pouzijem prikaz val ale ...
program prepis;
uses crt;
var n,c,x:integer;
cislo:string;
begin
clrscr;
repeat
writeln ('zadaj cislo od 1 do 1000 ak nebude z intervalu spytam sa znova');
readln(n);
until (n>=1) and (n<=999);
if c>200 then
begin
x:=(n div 100);
case x of
2:cislo:=('dve');
3:cislo:=('tri');
4:cislo:=('styri');
5:cislo:=('pat');
6:cislo:=('sest');
7:cislo:=('sedem');
8:cislo:=('osem');
9:cislo:=('devat');
end;
write(cislo);
write('sto');
end;
readln;
end.
tak by som pokracoval desiatkami a jednotkami pls dalsie rady
program prepis;
uses crt;
var n,c,x:integer;
cislo:string;
begin
clrscr;
repeat
writeln ('zadaj cislo od 1 do 1000 ak nebude z intervalu spytam sa znova');
readln(n);
until (n>=1) and (n<=999);
if c>200 then
begin
x:=(n div 100);
case x of
2:cislo:=('dve');
3:cislo:=('tri');
4:cislo:=('styri');
5:cislo:=('pat');
6:cislo:=('sest');
7:cislo:=('sedem');
8:cislo:=('osem');
9:cislo:=('devat');
end;
write(cislo);
write('sto');
end;
readln;
end.
tak by som pokracoval desiatkami a jednotkami pls dalsie rady
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
spomínané riešenie ktoré tu bolo:
Kód: Vybrať všetko
Program SpellNumber;
uses CRT;
var
input, {cislo zadane uzivatelom}
rest : Integer; {pomocna premenna pre urcenie cislic}
continue : Char; {vstup uzivatela pre ukoncenie programu}
digit : array[1..4] of Integer; {pole cislic}
function digitName (digit : Integer): String;
{funkcia vrati slovne pomenovanie cislice vlozenej ako jej parameter}
begin
case digit of
1 : digitName := 'jeden';
2 : digitName := 'dva';
3 : digitName := 'tri';
4 : digitName := 'styri';
5 : digitName := 'pat';
6 : digitName := 'sest';
7 : digitName := 'sedem';
8 : digitName := 'osem';
9 : digitName := 'devat';
end;
end;
begin
repeat
writeln ('Zadaj cislo (max. 9 999):');
readln(input);
{tisicky}
digit[1] := input DIV 1000;
{vypis tisicok}
if (digit[1] > 1) then
write(digitName(digit[1]), 'tisic', ' ')
else
if (digit[1] = 1) then
write('tisic', ' ');
{stovky}
rest := input - (digit[1] * 1000);
digit[2] := rest DIV 100;
{vypis stoviek}
if (digit[2] > 1) then
write(digitName(digit[2]), 'sto', ' ')
else
if (digit[2] = 1) then
write('sto', ' ');
{desiatky}
rest := rest - (digit[2] * 100);
digit[3] := rest DIV 10;
{jednotky}
rest := rest - (digit[3] * 10);
digit[4] := rest;
{vypis desiatok}
if(digit[3] > 1) and (digit[3] < 5) then
write(digitName(digit[3]), 'dsat')
else
if(digit[3] > 4) then
write(digitName(digit[3]), 'desiat');
{vypis jednotiek}
if (digit[4] <> 0) then
if (digit[3] <> 1) then
write(digitName(digit[4]))
else
if (digit[4] = 4) then
write('strnast')
else
if (digit[4] = 1) then
write('jedenast')
else
write(digitName(digit[4]), 'nast')
else if (digit[3] = 1) then
write('desat');
if (input = 0) then
write('nula');
writeln();
writeln('stlacte klavesu <a> pre opakovnie');
readln(continue);
until continue <> 'a';
end.