עבור לתוכן

תרגיל בשפת C

Featured Replies

פורסם

הגדר פונקציה שמקבלת מחרוזת ומחזירה את ערכה בבסיס 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
}				
	

 

פורסם

תחשוב לדוגמה על המקרה הפשוט. מה אם הייתה רק אות אחת עד הנקודה? מה היית מוסיף שם בשורה שצריך להשלים?

פורסם
  • מחבר
res += (*s)-'a';

 

פורסם

נראה כיוון טוב. אז מה הבעיה?

פורסם
  • מחבר

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

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

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

 

פורסם

אחרי הנקודה פשוט יותר, כי אתה יודע בדיוק מאיזו חזקה של 16 להתחיל. תחשוב שוב על הדוגמה שניתנה.

פורסם
  • מחבר

לא הולך...

פורסם
  • מחבר

את תנאי הלולאה אני מבין. את גוף הלולאה - אין לי שום רעיון שאיתו אני יכול להתקדם לחזקה נמוכה יותר מ 1-

פורסם

וואלה לא יודע מה לומר לך. זה כבר לא תכנות, אלא יותר כמו חשבון די בסיסי. :P

פורסם
  • מחבר

אם היה אפשר להוסיף משתנה עזר אז היה קלי קלות. לכן אין לי רעיון

פורסם

איזה משתנה עזר אתה חושב שאתה צריך ולמה? נסה לפתור עם משתנה עזר ואז תחשוב איך אפשר (אולי) בלי.

פורסם
  • מחבר

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

ארכיון

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

דיונים חדשים