program v pascale

Programovacie jazyky, rady, poradňa...
pidrik
Expert
Expert
Príspevky: 195
Registrovaný: 08 feb 2007, 15:51
Bydlisko: NO

program v pascale

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

neviem ci to tu patri ale potrebujem zdrojak vytvoreny v pascale ktory bude premienat cisla medzi dvojkovou , 10tkovou a 16stkovou sustavou
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

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

Tuto mas pervod z desiatkovej do dvojkovej sustavy:
program prevodz10na2;
var desiatkove,vys,zvint,i:integer;
zvstr,zv,dvojkove:string;
begin
write('Zadaj cislo v dekadickej sustave: ');
readln(desiatkove);
vys:=desiatkove;
repeat
zvint:=vys mod 2;
vys:=vys div 2;
str(zvint,zvstr);
zv:=zv+zvstr;
until vys=0;


for i:=length(zv) downto 1 do
begin
zvstr:=zv;
dvojkove:=dvojkove+zvstr;
end;

write(desiatkove,' v desiatkovej sustave=',dvojkove,' v dvojkovej sustave');
readln;
end.
Podla tohoto ak mas viac skusenosti, tak spravis aj ine prevody.. Mne sa prave nechce :D
pidrik
Expert
Expert
Príspevky: 195
Registrovaný: 08 feb 2007, 15:51
Bydlisko: NO

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

zdar, z 10kovej do 2kovej mi to ide len naopak to nejake halusky pocita....a tu sesnastkovu nevim vobec , can u help me?
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 »

pidrik napísal:zdar, z 10kovej do 2kovej mi to ide len naopak to nejake halusky pocita....a tu sesnastkovu nevim vobec , can u help me?
tu máš šestnástkovú, zachvýľku ti sem pridám aj z dvojkovej do desiatkovej

Kód: Vybrať všetko

program dectohex;
uses crt;
var sestnast,desat:integer;
    vysledok,pomocna:string;
begin
  write('Zadaj cislo v 10 sustave: ');
  readln(desat);
  vysledok:='';
  while desat>0 do begin
   sestnast:=desat mod 16;
   case sestnast of
    10: vysledok:='A'+vysledok;
    11: vysledok:='B'+vysledok;
    12: vysledok:='C'+vysledok;
    13: vysledok:='D'+vysledok;
    14: vysledok:='E'+vysledok;
    15: vysledok:='F'+vysledok;
    0..9: begin
          str(sestnast,pomocna);
          vysledok:=pomocna+vysledok;
          end;
    end;
   desat:=desat div 16;
   end;
writeln(vysledok);
repat until keypressed;
end.

//edit:

Kód: Vybrať všetko

program bintodec;
var dva:string;
    desat,I,mocnina,cislo:integer;
begin
 desat:=0;
 mocnina:=1;
 write ('Zadaj dvojkove cislo: ');
 readln(dva);
 for I:=length(dva) downto 1 do begin
  str(dva[I],cislo);
  desat:=desat+cislo*mocnina;
  mocnina:=mocnina*2;
 end;
 writeln(desat);
end.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

Tu je môj príspevok (ale neskúšal som to [mám zapnutý Linux]):

Kód: Vybrať všetko

function toint(c: Char): Integer;
var
        i: Integer;
begin
	case upcase(c) of
	'0'..'9': i := Integer(c) - $30;
	'A'..'Z': i := Integer(c) - $37;
	else i := -1;
	end;
        toint := i;
end;

function tochar(i: Integer): Char;
var
        c: Char;
begin
	case i of
	0..9: c := Char(i + $30);
	10..35: c := Char(i + $37);
        else c := '?';
	end;
        tochar := c;
end;

function atoi(s: String; n: Integer): Integer;
var
	r: Integer;
        i: Integer;
        c: Integer;

begin
	if ((n < 2) OR (n > 36)) then
	begin
		Writeln('Vstupna sustava moze byt 2-36 (', n, ')');
		exit;
	end;
	r := 0;
	for i := 1 to length(s) do
	begin
		c := toint(s[i]);
		if (c = -1) then
		begin
			Writeln(n, ' nie je cislo');
			exit;
		end;
		if (c >= n) then
		begin
			Writeln('Cislica musi byt v rozsahu 1-', n-1, '(', c, ')');
			exit;
		end;
		r := r * n + c;
	end;
	atoi := r;
end;

function itoa(i: Integer; n: Integer): String;
var
	s: String;

begin
	if ((n < 2) OR (n > 36)) then
	begin
		Writeln('Vystupna sustava moze byt 2-36 (', n, ')');
		exit;
	end;
	s := '';
	while i > 0 do
	begin
		s := tochar(i mod n) + s;
		i := i div n;
	end;
	if s = '' then itoa := '0'
	else itoa := s;
end;

function convert(n: String; f, t: Integer): String;
var
	i: Integer;

begin
	i := atoi(n, f);
	convert := itoa(i, t);
end;

begin
	Writeln('16: 29a - 10: ', convert('29a', 16, 10));
        Writeln('10: 666 - 2: ', convert('666', 10, 2));
end.
pidrik
Expert
Expert
Príspevky: 195
Registrovaný: 08 feb 2007, 15:51
Bydlisko: NO

re

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

som to skusal dat dokopy vsetky tie sustavy bo mam urobit taky vacsi prevodnik medzi sustavami a pri volbe z ktorej sustavy do ktorej som pouzil case k of pricom k som dal char a ked to cele skompilujem tak mi pise dole ze Warning: Variable k does not seem to be initialized
cize zaciatok programu ide ale potom hned po zadani volby to zhavaruje a uz ma to zacina srat
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: re

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

pidrik napísal:som to skusal dat dokopy vsetky tie sustavy bo mam urobit taky vacsi prevodnik medzi sustavami a pri volbe z ktorej sustavy do ktorej som pouzil case k of pricom k som dal char a ked to cele skompilujem tak mi pise dole ze Warning: Variable k does not seem to be initialized
cize zaciatok programu ide ale potom hned po zadani volby to zhavaruje a uz ma to zacina srat
A čo to sem nepošleš? Možno sa niekto na to pozrie a poradí ti.
pidrik
Expert
Expert
Príspevky: 195
Registrovaný: 08 feb 2007, 15:51
Bydlisko: NO

re

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

2 chrono: hodil som to do devpascalu, pise mi compiled succesfully ale ked to dam spustit tak to len preblikne sakra ....nemam nahodou posahany pascal?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: re

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

A ktorý program si dal do toho dev-pascal?
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 »

šak sem normálne zkopíruj zdroják
pidrik
Expert
Expert
Príspevky: 195
Registrovaný: 08 feb 2007, 15:51
Bydlisko: NO

re

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

este to nie je celkom hotove ale tu je aspon nieco

Kód: Vybrať všetko

program prevod;
uses crt;
type pole=array[1..100] of integer;
var a,i,p,u,g,desat,sestnast,mocnina,cislo:integer;
    k,s:char;
    b:pole;
    z,f,dva,vysledok,pomocna:string;
label c;
begin
writeln('+++++    Spustil si program na prevody medzi sustavami    +++++');
writeln('---------------------------------------------------------------');
writeln;
c:writeln('1: prevod z desiatkovej sustavy do dvojkovej sustavy');
writeln('2: prevod z desiatkovej do sesnastkovej sustavy');
writeln('3: prevod z dvojkovej sustavy do desiatkovej sustavy');
writeln('4: prevod z dvojkovej sustavy do sesnastkovej sustavy');
writeln('5: prevod zo sesnastkovej sustavy do dvojkovej sustavy');
writeln('6: prevod zo sesnastkovej sustavy do desiatkovej sustavy');
writeln('7: koniec');
writeln;
writeln('--------------------------------------------------------------');
writeln('Zadaj svoju volbu');


case k of
'1':begin
writeln('Zadaj cislo ');
readln(a);
repeat begin
i:=i+1;
a:=a div 2;
b[i]:= a mod 2;
p:=i;
end;
until a=0;
for i:=p downto 1 do begin
write(b[i],' ');
end;
writeln(a,' v desiatkovej sustave je ',b[i],' v dvojkovej sustave');
writeln('ak chces pokracovat v programe, stlac 1');
readln(s);
if s='1' then goto c;
end;
'2':
begin
  write('Zadaj cislo  ');
  readln(desat); 
  vysledok:=''; 
  while desat>0 do begin 
   sestnast:=desat mod 16; 
   case sestnast of 
    10: vysledok:='A'+vysledok; 
    11: vysledok:='B'+vysledok; 
    12: vysledok:='C'+vysledok; 
    13: vysledok:='D'+vysledok; 
    14: vysledok:='E'+vysledok; 
    15: vysledok:='F'+vysledok; 
    0..9: begin 
          str(sestnast,pomocna); 
          vysledok:=pomocna+vysledok; 
          end; 
    end; 
   desat:=desat div 16; 
   end; 
writeln(desat,'v sesnastkovej sustave je',vysledok);
writeln('ak chces pokracovat v programe, stlac 1');
readln(s);
if s='1' then goto c;
end;
'3':
begin 
 desat:=0; 
 mocnina:=1; 
 write ('Zadaj dvojkove cislo: '); 
 readln(dva); 
 for I:=length(dva) downto 1 do begin 
  str(dva[i],cislo);
  desat:=desat+cislo*mocnina; 
  mocnina:=mocnina*2; 
 end; 
 writeln(dva,'v desiatkovej sustave je',desat);
 writeln('ak chces pokracovat v programe, stlac 1');
readln(s);
if s='1' then goto c;
end;
end;
repeat until keypressed;
end.
btw este by som tam chcel dat osmickovu :D
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 »

medzi tieto riadky:
writeln('Zadaj svoju volbu');


case k of
daj riadok
read(k);
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

Vidíš, tú chybu som si tam ani nevšimol. :)
pidrik
Expert
Expert
Príspevky: 195
Registrovaný: 08 feb 2007, 15:51
Bydlisko: NO

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

audiotrack napísal:medzi tieto riadky: daj riadok
uff na to som fakt nepomyslel :D dikes
Napísať odpoveď