אז ככה קודם כל אני אומר לכם מראש אני רק מתחיל בתיכנות אז אל תרדו על התיכנות המסריח שלי כי אני יודע שהוא מסריח!
ועוד בקוד הזה במיוחד שעשיתי סתם דברים בלי לחשוב הרבה.. כך שהוא יצא ארוך ומיגע
ואני בטוח שאפשר לקצר אותו פי 2 או יותר...
עכשיו דיי לדבר על התיכנות המסריח והלא מועיל שלי
זה הקוד: program converter; var num,char,base:string; i,char1,index,a,counter,mod1,sum3,sum2:integer; sum,hezka:longint; sum1:real; st: array of string;procedure ToDecimal; begin if base<>'Decimal' then begin 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); if base='Hexa' then begin hezka:=hezka * 16; end; if base='Binary' then begin hezka:=hezka * 2; end; if base='Octal' then begin hezka:=hezka * 8; end; end; writeln('the num: ',num,' in decimal is: ',sum); end; end; procedure ToHexa; begin if base<>'Hexa' then begin a:=0; counter:=0; val(num,sum3,Index); if base='decimal' then begin sum1:=sum3; sum2:=sum3; end else begin sum1:=sum; sum2:=sum; end; repeat mod1:=sum2 mod 16; if mod1=1 then st:='1'; if mod1=2 then st:='2'; if mod1=3 then st:='3'; if mod1=4 then st:='4'; if mod1=5 then st:='5'; if mod1=6 then st:='6'; if mod1=7 then st:='7'; if mod1=8 then st:='8'; if mod1=9 then st:='9'; if mod1=10 then st:='A'; if mod1=11 then st:='B'; if mod1=12 then st:='C'; if mod1=13 then st:='D'; if mod1=14 then st:='E'; if mod1=15 then st:='F'; sum1:=sum1/16; a:=a+1; counter:=counter+1; until (sum1=0) or (sum2=0); for i:=counter downto 1 do begin Writeln('The num in Hexa is:'); Write(St); end; end; end; begin hezka:=1; sum:=0; writeln('Choose from wich base you want to convert:'); writeln('Binary'); writeln('Octal'); writeln('Hexa'); writeln('Decimal'); readln(base); writeln('type a num:'); readln(num); ToDecimal; readln; end.
|
נו אתם רואים למה התכוונתי שאמרתי קוד מחורבן?
עכשיו אני בעצם בונה ממיר בסיסים...
עכשיו זה הולך ככה: המשתמש בוחר מאיזה בסיס הוא רוצה להמיר, והתוכנה ממירה את המספר מהבסיס שהוא בחר לכל שאר הבסיסים!
עד עכשיו עשיתי קוד שבעצם ימיר מכל בסיס לעשרוני (עובד)
הגעתי לחלק של לעשות מכל בסיס להקסה וכמו שאתם רואים יש בעיה!
עכשיו מי שרוצה לבדוק את הקוד בתוכנה ואין לו זיין להעתיק שורה שורה (TP7)
אז שיכנס לתיקייה של התוכנה ושם לתיקייה BIN ושם יפתח קובץ טקסט יעתיק את הקוד וידביק בקובץ וישמור בסיומת PAS (אם אני לא טועה)...
אוקיי עכשיו כל מי שיכול לעזור שיקרא את הקוד (המסריח והלא מובן בגרוש) וינסה להגיד לי מה הבעיה, ומה אפשר לשפר בו (ז"א לצמצם לקצר להוסיף וכו')
נ.ב
אני יודע שהקוד מגעיל, אל תשכחו שאני מתחיל אבל בבוא הזמן התיכנות ישתפר
ומצטער שהקוד מבולגן ולא מובן!
תודה לכל העוזרים.
אני מתבייש בעצמי לפרסם כזה דבר :(