עבור לתוכן

שאלת חילוק ללא שימוש באופרטורים % \ בשפת C

Featured Replies

פורסם

שלום,

שאלה, אני צריך לכתוב תכנית שתחלק שני משתנים, יש אתגר בשאלה

אסור לי להשתמש באופרטורים / %

למי יש רעיון איך לעשות את זה??

תודה רבה

פורסם

תמיד אפשר לעשות פעולה מתמטית של X בחזקת y-

נאמר 4 לחלק ב 2 = 4 בחזקת מינוס שתיים = 4 * 1/2 = 2

פורסם
  • מחבר

הרעיון יפה, אבל איך אני כותב בקוד חזקת מינוס אחד למשל?

פורסם

כשמדובר באספקט התיכנותי אז אני לא ממש מבין, sorry! :nixweiss:

פורסם

אם היית מציין שפה שבא אתה כותב היה לנו יותר נוח לענות.

בכל מקרה ב C++ יש את pow שאני מאמין שמקבל גם מספר שלילי וגם שברים.

ב JAVA אם אני לא טועה יש את Math.Pow

שפות אחרות אני לא מכיר.

בכל המקרה החלוקה היא על כל מספר? כי אם זה רק חלוקה ב 2 אפשר להשתמש ב BITWISE SHIFT.

פורסם

אתה רוצה להחליף את / ?

אם כן אז תשתמש בחיסור + רקרוסיה.

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

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

פורסם

efod26, שנה בבקשה את הכותרת כך שתכיל את תמצית השאלה, והשפה בה אתה מתכנת.

בכל מקרה, תן עוד קצת פרטים - אתה צריך להיות מסוגל לחלק רק שלם בשלם או גם ממשי בממשי? התוצאה צריכה להיות ממשית או רק שלמה?

פורסם

בעצם אפשר לוותר על רקרוסיה

הינה זאת פונקציה שעושה / למספרים שלמים ומחזירה ערך שלם (רק4 צריך לבדוק חלוקה ב0.

זה בשפת C++.

int chilouk (int a, int b){
int c = 1;
int d = 0;
if (b == 0 ) return NULL;
if (a == 0 ) return 0;
if (b < 0 ) {
b = 0 - b;
c = 0 - c;
}
if (a < 0 ) {
a = 0 - a;
c = 0 - c;
}
while (a > b) {
++d;
a = a - b;
}
return d*c;
}

פורסם

תמיד אפשר לעשות פעולה מתמטית של X בחזקת y-

נאמר 4 לחלק ב 2 = 4 בחזקת מינוס שתיים = 4 * 1/2 = 2

הפעולה המתמטית היא X כפול Y- (ולא בחזקת...)

[שים לב ש-4 בחזקת מינוס שתיים זה ממש לא 2 אלא 1/16]

בכל מקרה, זה תרגיל נחמד שאפשר לעשות בלולאה (או ברקורסיה) כפי שירח מלא תיאר (מה שנשאר בסוף הלולאה במשתנה a זו השארית).

פורסם

הפעולה המתמטית היא X כפול Y- (ולא בחזקת...)

או ליתר דיוק, X כפול Y בחזקת 1-.

פורסם

או ליתר דיוק, X כפול Y בחזקת 1-.

כמובן (אופס...)

פורסם
  • מחבר

כתבתי את הקוד אבל יש בעיה אני לא מצליח לקלוט גם אפס וגם תו

שאני קולט 0 אני נזרק וזה בסדר זה אחד התנאים לעבודה.

שאני קולט תו אני אמור לחזור חזרה ללולאה ולבקש מס' נוסף

#include<stdio.h>

#include<math.h>

int main()
{
int x = 0 ,y = 0;
double c = 0;

do
{
printf("enter two numbers\n");
if (scanf("%d%d",&x,&y)==2)
{
if((x==0) || (y==0))
break;
c=(double)(x*pow(y,-1));
printf("%.5lf\n",c);
}

else
printf("Error Type Again\n");
fflush(stdin);

}while(c!=0);
return 0;



}

פורסם

אבל המטלה היתה לא להשתמש ב-% ו-/, ויש לך מלא כאלה בתוכנית.

פורסם
  • מחבר

אתה צוחק נכון????

אני מקןןה שכן, הכוונה הייתה לא להשתמש במודולו וחילוק ה% זה הסימון לפני הD לאינטג'ר לא פעולת

שארית

ן- \n לרדת שורה אין בעיה איתה רק לא לחלק בעזרת האופרטורים!!!

מישו יכול לעזור בבקשה בשאלה

תודה מראש/

פורסם

מה עדיין לא נתתם את התשובה?

אם רוצים X = Q/D + R: תאפס את X. תעשה לולאה שמפחיתה את D מ-Q ומקדמת את X באחד עד אשר Q<D ואז X הוא תוצאת החילוק, ומה שנשאר ב-Q זה השארית ®.

יותר בסיסי מזה לא יכול להיות.

ארכיון

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

דיונים חדשים