תרגיל בשפת C - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תרגיל בשפת C


Dolmiti

Recommended Posts

הגדר פונקציה שמקבלת מחרוזת ומחזירה את ערכה בבסיס 16 כאשר a=0, b=1, c=3...z=25

דוגמה, עבור cczz.dd נקבל

get cczz.dd and return:
3*16^3 +3*16^2 +25*16^1 +25*16^0 + 4*16^-1+ 4*16^-2 = 13481.265625

נתון: מחרזות תמיד יופיעו עם אות אחת לפחות לפני ואחרי הנקודה

והפונק' צריכה לסרוק את המחרוזת פעם אחת בלבד, ובעזרת 2 משתני עזר בלבד

double str2float (char *s)				
{				
double b = 1, result = 0;				

/* TODO */

}

מודה לעוזרים

קישור לתוכן
שתף באתרים אחרים

דבר ראשון, לדעתי מה שמחשבים שם זה לא נראה כמו מעבר לבסיס 16. ניסיתי להמיר את המספר הנתון בבסיס 26 (כאשר a=0 ו-z=25) לבסיס 16 ויצא לי משהו אחר אבל וואטאבר.

 

בהנחנה ובכל זאת רוצים לחשב את הדבר הזה, תנסה לדמיין מה קורה אם אתה מוציא 16 בחזקה כלשהי בתור גורם משותף של הביטוי הזה.

קישור לתוכן
שתף באתרים אחרים

זה פשוט תרגיל מטומטם, שאין לו באמת קשר ל"בסיסים", אבל לא קשה במיוחד. קוראים תו-תו, מחסירים מהערך את 'a' (כדי לקבל טווח ערכים בין 0 ל25 במקום בין a לz), ומכפילים בחזקה מתאימה של 16 (במקום 16 היה אפשר לשים שם כל מספר). הטריק היחיד זה לדעת נמצאת הנקודה כדי לדעת מאיזו חזקה להתחיל. בשביל זה אפשר פשוט לסרוק את המחרוזת פעם אחת ולזכור את מיקום הנקודה.

קישור לתוכן
שתף באתרים אחרים

@QttP מרגיש לי תרגיל מטומטם כמו שאתה אומר. אבל משום מה אני לא מצליח להשלים את נתון עד לנקודה

double str2float  (char *s)				
{				
d = 1, res = 0;		//given row
				
while  (*s !='.')   
{				
	res *=16;	//given row		
	
	res += __________________;		//please complete
	s++; //given row
}				
	

 

קישור לתוכן
שתף באתרים אחרים

א. רק עכשיו שמתי לב שזה עובד חחח ותודה

ב. לגבי המשך המחרוזת משלב הנקודה. יש רעיון?

int b = 1;
...
while (_________ !=0 ) //after dot cczz.aea
{				
	_______		//please complete
	res +=____*b;			//please complete
return res; //given row
}	

 

קישור לתוכן
שתף באתרים אחרים

אכן משתנה עזר לא עוזר. מה שלא ברור לי זה מה השורה האחרונה מרמזת. למה מכפילים את b בסוף. האם זה אומר ששורה לפני כן הוא אמור להשתנות?

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...