Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.09.08
Prihlásený: 02.12.08
Príspevky: 5
Témy: 3
Príspevok NapísalOffline : 02.12.2008 16:43

Prosím Vás, poradil by mi niekto, kde robím chybu?

Tento program na prevody...

Kód:
program prevody;

uses crt;

var vic,dec,sustava1,zbytok,sustava,y,i:longint;
    x:integer;
    vysledok,cislo:string;
    znak:char;

begin
     clrscr;
     writeln('Napiste cislo: ');
     readln(cislo);
     writeln('Zadaj sustavu, v ktorej je toto cislo');
     readln(sustava1);
     writeln('Zadajte sustavu, do ktorej chcete cislo prevadzat'); {od 2 do 200}
     readln(sustava);
     if sustava<2 then sustava:=2;
     y:=1;
     x:=0;
     for i:=1 to length(cislo) do
         begin
              znak:=cislo(.length(cislo)-x.);
              if ord(znak)<58 then vic:=48
              else vic:=55;
              dec:=dec+(ord(znak)-vic)*y;
              y:=sustava1*y;
              x:=x+1;
         end;
     while dec>0 do
         begin
              zbytok:=dec mod sustava;
              dec:=dec div sustava;
              if zbytok<10 then vysledok:=chr(48+zbytok)+vysledok
              else vysledok:=chr(55+zbytok)+vysledok;
         end;
     writeln('Vami zadane cislo vyzera v ',sustava,'-kovej sustave takto: ');
     writeln(vysledok);
end.


...som chcel spraviť ako podprogram - funkciu:


Kód:
uses crt;

var vic,dec,sustava1,zbytok,sustava,y,i:longint;
    x:integer;
    vysledok,cislo,u:string;
    znak,klaves:char;

FUNCTION prevod(sustava1,sustava:longint; cislo:string):string;
         var x:integer;
             i,y:longint;
             vic,dec,zbytok:longint;
             vysledok:string;
             znak:char;

         begin
           if sustava<2 then sustava:=2;
           y:=1;
           x:=0;
           for i:=1 to length(cislo) do
               begin
                    znak:=cislo(.length(cislo)-x.);
                    if ord(znak)<58 then vic:=48
                    else vic:=55;
                    dec:=dec+(ord(znak)-vic)*y;
                    y:=sustava1*y;
                    x:=x+1;
               end;
           while dec>0 do
               begin
                    zbytok:=dec mod sustava;
                    dec:=dec div sustava;
                    if zbytok<10 then vysledok:=chr(48+zbytok)+vysledok
                    else vysledok:=chr(55+zbytok)+vysledok;
               end;
               prevod:=vysledok;
           end;



.. ale potom hlavny program:

Kód:
BEGIN
     clrscr;
     write('Napiste cislo: ');
     readln(cislo);
     write('Zadaj sustavu, v ktorej je toto cislo: ');
     readln(sustava1);
     write('Zadajte sustavu, do ktorej chcete cislo prevadzat: '); {od 2 do 200}
     readln(sustava);
     u:=prevod(sustava,sustava1,cislo);
     writeln('Vami zadane cislo vyzera v ',sustava,'-kovej sustave takto: ',u);
     readln;
END.


vypisuje uplnu inu hodnotu ako ten prvý program bez podprogramu(kt. ju vypisuje spravne)..

napr:
5(10tkova sustava) by mal byť dvojkovej 10110
ale funkcia piše vysledok 5

asi viem, kde by mohla byť chyba, skusim to ešte poskušať sam, ale pre istotu sa pýtam.. dakujem


Offline

Užívateľ
Užívateľ
Pascal - podprogram

Registrovaný: 19.09.06
Prihlásený: 21.04.24
Príspevky: 749
Témy: 31
Bydlisko: Ružomberok&...
Príspevok NapísalOffline : 02.12.2008 20:28

Kód:
uses crt;

var vic,dec,sustava1,zbytok,sustava,y,i:longint;
    x:integer;
    vysledok,cislo,u:string;
    znak,klaves:char;

FUNCTION prevod(sustava1,sustava:longint; cislo:string):string;
         var x:integer;
             i,y:longint;
             vic,dec,zbytok:longint;
             vysledok:string;
             znak:char;

         begin
           if sustava<2 then sustava:=2;
dec:=0; //////////////////////////////////////////////////////////////////////////////
           y:=1;
           x:=0;
           for i:=1 to length(cislo) do
               begin
                    znak:=cislo(.length(cislo)-x.);
                    if ord(znak)<58 then vic:=48
                    else vic:=55;
                    dec:=dec+(ord(znak)-vic)*y;
                    y:=sustava1*y;
                    x:=x+1;
               end;
vysledok:=''; ///////////////////////////////////////////////////////////////////////////////////////////
           while dec>0 do
               begin
                    zbytok:=dec mod sustava;
                    dec:=dec div sustava;
                    if zbytok<10 then vysledok:=chr(48+zbytok)+vysledok
                    else vysledok:=chr(55+zbytok)+vysledok;
               end;
               prevod:=vysledok;
           end;



BEGIN
     clrscr;
     write('Napiste cislo: ');
     readln(cislo);
     write('Zadaj sustavu, v ktorej je toto cislo: ');
     readln(sustava);
     write('Zadajte sustavu, do ktorej chcete cislo prevadzat: '); {od 2 do 200}
     readln(sustava1);
     u:=prevod(sustava,sustava1,cislo);
     writeln('Vami zadane cislo vyzera v ',sustava1,'-kovej sustave takto: ',u);
     readln;
END.

mal si tam myslim prehodene nacitavanie sustavy v hl. programe, nevynulovany dec a neprazdny retazec vysledok.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.09.08
Prihlásený: 02.12.08
Príspevky: 5
Témy: 3
Príspevok Napísal autor témyOffline : 03.12.2008 21:08

diki.. funguje :)


Odpovedať na tému [ Príspevkov: 3 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Free Pascal a Turbo Pascal

v Assembler, C, C++, Pascal, Java

0

385

19.12.2014 13:18

Styracoz Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

19

3060

30.04.2007 19:54

nikita Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal

v Assembler, C, C++, Pascal, Java

7

832

14.05.2011 20:04

F3RY Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

2

573

24.06.2010 20:17

KatjushaMan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

2

1106

09.03.2007 14:08

misolax Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

6

731

08.01.2009 17:45

majka090 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

0

704

03.05.2009 12:35

ebb Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal...

v Assembler, C, C++, Pascal, Java

5

906

18.10.2008 19:02

redog Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal

v Assembler, C, C++, Pascal, Java

4

2066

01.03.2018 8:02

MTK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

11

1289

07.04.2007 16:50

programator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal

v Assembler, C, C++, Pascal, Java

7

632

09.10.2011 21:30

F3RY Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Assembler, C, C++, Pascal, Java

40

1473

11.12.2016 22:08

viki Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal uloha

v Assembler, C, C++, Pascal, Java

6

485

03.05.2010 7:42

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal HELP

v Assembler, C, C++, Pascal, Java

13

599

07.10.2012 10:58

faraon Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal otazky

v Assembler, C, C++, Pascal, Java

9

633

17.01.2011 21:18

F3RY Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal pomoc

v Assembler, C, C++, Pascal, Java

7

689

31.08.2009 14:04

juho Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra