ABA


"יש לי בעיה בבניית ממיר מהקסה לעשרוני...."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #7001 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 7001
Hell-Boy

דרג אמינות חבר זה
   21:06   20.09.03   
אל הפורום  
  יש לי בעיה בבניית ממיר מהקסה לעשרוני....  
 
   אז ככה, זה הקוד שעשיתי עד כה, עכשיו הבעיה היא שהוא מצליח להמיר רק חלק מהמספרים וחלק לא, תבדקו מספרים בארכים שונים, עם תווים שונים ותראו...
עכשיו לא יצא לי להבין מה הבעיה.
ויש לי עוד שאלה, ניסיתי לעשות את כל החלק של הבדיקה אם יש את אחד האותיות ואם כן להעביר למספר הדרוש, הכוונה החלק של ה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.

תודה.

ותהפכו כמובן לימין כדי שתבינו הכל.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  תנסה להשתמש במשתנים szargel 20.09.03 21:15 1
     ... Hell-Boy 20.09.03 22:03 2
         אה עכשיו הבנתי את הקטע של הקוד.... Hell-Boy 20.09.03 22:31 3
             זה עדיין מאוד מבולגן szargel 20.09.03 22:49 4
             אתה לא מנצל רציפות תווי ASCII dryice 21.09.03 00:02 5
                 שלום לך dryice תודה שענית לי אבל לא הבנתי Hell-Boy 21.09.03 14:51 6
                     UP Hell-Boy 22.09.03 07:56 7

       
szargel

דרג אמינות חבר זה
   21:15   20.09.03   
אל הפורום  
  1. תנסה להשתמש במשתנים  
בתגובה להודעה מספר 0
 
   מסוג char וinteger בהתאמה.
הקוד שלך יצא מאוד מבולגן, תשתמש ב

{code}
{/code}

רק עם סוגריים מרובעות, ואז אם מה שאמרתי לא עזר, אני מוכן לנסות להבין איפה התקלה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Hell-Boy

דרג אמינות חבר זה
   22:03   20.09.03   
אל הפורום  
  2. ...  
בתגובה להודעה מספר 1
 
   לא הבנתי את מה שאמרת לגבי המשתנים, אנא תסביר את עצמך.
ולא הבנתי מה זה ה
 הזה?
ומה מבולגן בקוד שלי?
תנסה להסביר את עצמך יותר.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Hell-Boy

דרג אמינות חבר זה
   22:31   20.09.03   
אל הפורום  
  3. אה עכשיו הבנתי את הקטע של הקוד....  
בתגובה להודעה מספר 2
 
   אז הנה זה הקוד המלא שעשיתי עד כה בפסקל, כמו שהבנת מקודם זה אמור להיות ממיר מהקסה לעשרוני...
הנה הקוד:

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.

עכשיו אתה יכול לעזור לי?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
szargel

דרג אמינות חבר זה
   22:49   20.09.03   
אל הפורום  
  4. זה עדיין מאוד מבולגן  
בתגובה להודעה מספר 3
 
   על "תכנות מבני" שמעת?
דוגמא לקטע קוד מסודר:

begin
writeln('blah blah');
for i:= 1 to 10 do
begin
writeln(i);
end;
readln;
end.

זה עושה המון הבדל, חוץ מזה - נסה את מה שהצעתי לך.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

דרג אמינות חבר זה
   00:02   21.09.03   
אל הפורום  
  5. אתה לא מנצל רציפות תווי ASCII  
בתגובה להודעה מספר 3
 
   עבור כל תו, אתה בודק אם הוא ספרה, אות גדולה או אותה קטנה.
אתה לוקח את הערך המספרי שלו, אם מדובר בספרה אתה מפחית
את הערך של 0 אם מדובר באות גדולה אתה מפחית את הערך של A
ומוסיף 10, בדומה לגבי אות קטנה.

אתה מאתחל צובר ל0, אתה עובר משמאל לימין, מכפיל את הצובר
ב10 ומוסיף את הערך של הספרה שעברת עליה(לפי החישוב לעיל).

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Hell-Boy

דרג אמינות חבר זה
   14:51   21.09.03   
אל הפורום  
  6. שלום לך dryice תודה שענית לי אבל לא הבנתי  
בתגובה להודעה מספר 5
 
   מה אמרת.
אתה תוכל לתת קוד למה שאמרת או לתקן את הטעות שלי מהקוד שלי?
תודה רבה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Hell-Boy

דרג אמינות חבר זה
   07:56   22.09.03   
אל הפורום  
  7. UP  
בתגובה להודעה מספר 6
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net