אז ככה, זה הקוד שעשיתי עד כה, עכשיו הבעיה היא שהוא מצליח להמיר רק חלק מהמספרים וחלק לא, תבדקו מספרים בארכים שונים, עם תווים שונים ותראו...
עכשיו לא יצא לי להבין מה הבעיה.
ויש לי עוד שאלה, ניסיתי לעשות את כל החלק של הבדיקה אם יש את אחד האותיות ואם כן להעביר למספר הדרוש, הכוונה החלק של הif:"
if (char='a') or (char='A') then
begin
char:='10';
end;
"
אז ניסיתי לעשות אותו בcase ככה:
"
case char of
'a': char:= '10';
'A': char:= '10';
'b': char:= '11';
'B': char:= '11';
'c': char:= '12';
'C': char:= '12';
'd': char:= '13';
'D': char:= '13';
'e': char:= '14';
'E': char:= '14';
'f': char:= '15';
'F': char:= '15';
end;
"
אבל תנסו להחליף בין החלק הגדול של הif לcase ותראו שזה לא מצליח
למה זה לא מצליח?
בגלל שזה משתנה מסוג מחרוזת?
בcase אי אפשר לעשות עם מחרוזת?
אוקיי אחרי כל הדיבורים קבלו את הקוד הנחמד שעשיתי...
אם יש דרכים קיצור או בעיות שמצאתם או כל דבר אחר אנא הגיבו...
program converter;
var
num,char:string;
hezka,i,char1,index,sum:integer;
begin
writeln('type a num:');
readln(num);
hezka:=1;
sum:=0;
for i:= length(num) downto 1 do
begin
char:=copy (num,i,1);
if (char='a') or (char='A') then
begin
char:='10';
end;
if (char='b') or (char='B') then
begin
char:='11';
end;
if (char='c') or (char='C') then
begin
char:='12';
end;
if (char='d') or (char='D') then
begin
char:='13';
end;
if (char='e') or (char='E') then
begin
char:='14';
end;
if (char='f') or (char='F') then
begin
char:='15';
end;
val(char,char1,Index);
sum:=sum + (char1*hezka);
hezka:=hezka * 16;
end;
writeln('the num: ',num,' in decimal is: ',sum);
readln;
end.
תודה.
ותהפכו כמובן לימין כדי שתבינו הכל.