pomoc s pascalom

Programovacie jazyky, rady, poradňa...
ja to nebyl
Medium Expert
Medium Expert
Príspevky: 80
Registrovaný: 27 jún 2008, 19:46

pomoc s pascalom

Príspevok od používateľa ja to nebyl »

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 ... ;)
Pilifo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7001
Registrovaný: 12 okt 2007, 16:41
Kontaktovať používateľa:

Príspevok od používateľa Pilifo »

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
Medium Expert
Príspevky: 80
Registrovaný: 27 jún 2008, 19:46

Príspevok od používateľa ja to nebyl »

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
johny_sk
Professional
Professional
Príspevky: 1343
Registrovaný: 15 máj 2008, 21:56

Príspevok od používateľa johny_sk »

tento priklad tu uz bol rieseny (mozno v obratenom zneni: z cisla na slovo), tusim v teme software, alebo pomoc. Skus hladat.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

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. 
ja to nebyl
Medium Expert
Medium Expert
Príspevky: 80
Registrovaný: 27 jún 2008, 19:46

Príspevok od používateľa ja to nebyl »

dakujem mozte lock ;)
Napísať odpoveď