[ 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 | 3
NapísalOffline : 02.12.2008 16:43 | Pascal - podprogram

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 | 31
Bydlisko: Ružomberok&...
NapísalOffline : 02.12.2008 20:28 | Pascal - podprogram

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 | 3
Napísal autor témyOffline : 03.12.2008 21:08 | Pascal - podprogram

diki.. funguje :)


 [ Príspevkov: 3 ] 


Pascal - podprogram



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

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

1475

11.12.2016 22:08

viki

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

pascal

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

2

1108

09.03.2007 14:08

misolax

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

pascal

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

6

732

08.01.2009 17:45

majka090

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

pascal

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

0

707

03.05.2009 12:35

ebb

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

Pascal

v Kôš

1

30

06.11.2018 14:38

werwest

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

pascal...

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

5

907

18.10.2008 19:02

redog

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

Pascal

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

7

634

09.10.2011 21:30

F3RY

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

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

pascal

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

19

3061

30.04.2007 19:54

nikita

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

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

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

Pascal

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

4

2077

01.03.2018 8:02

MTK

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

Pascal hudba

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

6

605

18.04.2012 20:43

kemperik

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

turbo pascal

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

3

945

24.12.2007 23:00

TrSek

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

Pascal otázka

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

3

365

24.01.2011 14:41

prohibit



© 2005 - 2024 PCforum, edited by JanoF