עבור לתוכן

איך ניתן לכתוב פונ' שמקבלת את המספר שלוש או &

Featured Replies

פורסם

ומחזירה שבע אם קלטה שלוש וההפך

פורסם
#include <stdio.h>

int func(int num)
{
int k = (num == 3);
return (k * 7 + !k * 3);
}

int main()
{
printf("%d", func(3));
return 0;
}

פורסם
  • מחבר
:xyxthumbs:
פורסם
:xyxthumbs:
פורסם
int func (int num) { return (num == 3) ? 7 : 3; }

פורסם

int func (int num) { return (num == 3) ? 7 : 3; }

זה סוג של תנאי ..

פורסם

איפה רשום שיש מגבלה ?

פורסם

איפה רשום שיש מגבלה ?

You bastard...

פורסם
  • מחבר

טעות שלי

יש מגבלה

אבל אני לא יודע האם המגבלה היא "איפ" או מגבלה של אין תנאי בכלל

בכל מקרה תודה על 2 התשובות

למדתי מהן!

פורסם

אם אסור להשתמש בתנאי (איפה זה כתוב?) אז אפשר לעשות: return (x*9)%10

במקרה של 3 ו-7 זה יעשה את העבודה.

פורסם
  • מחבר

אם אסור להשתמש בתנאי (איפה זה כתוב?) אז אפשר לעשות: return (x*9)%10

במקרה של 3 ו-7 זה יעשה את העבודה.

איזה מגניב

איך הגעת לפתרון הזה?

פורסם

התחלתי לחשוב אם יש איזשהו קשר מתמטי בין 3 ל-7 שניתן להגיע מאחד לשני. חיבור/חיסור בערך מוחלט לא עבד, אז הלכתי לכיוון של המודולו - פעולה מאוד שימושית במקרים רבים. העובדה שכפל בספרה מסוימת נותן תמיד ספרות ספציפיות היא גם משהו שכדאי לדעת.

במקרה הזה הפתרון קפץ לי לראש די מהר.

פורסם

נראה לי שיותר פשוט כאן:

return 10-x;

זה גם יעבוד באותה מידה.

פורסם

חחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחח

גאון

למעשה אפשר להפוך את זה למשהו כללי

return x+y - a;

x,y זה שני המספרים במקרה שלנו 3 ו-7 ו-a זה מה שמובא כפרמטר ואז הוא נחסר ונשאר הגורם השני בחיבור..

אגב שיפור ההצעה הקודמת שלי

int func(int a)
{
int k = a / 7;
return k * 7 + !k * 3;
}

פורסם

אכן יותר פשוט...

ארכיון

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

דיונים חדשים