עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

בניית תוכנית

Featured Replies

פורסם

חשבתי על בניית תוכנית שבודקת אתה המספר עם היא שלמה או לא:

בתוכנית הישמשתי ב

int

שמחזיר רק שלמים

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

double

והיא תיבדוק עם ערך שלם או לא

כי אני חושב שמה שעשתי זה כאילו להישתמש בבאג

כאילו אני קולט 34.5 אבל זה מקבל רק את 34 במיספר

וזה כאילו ניצול באג כי בטח שפות תיכנות אחרות עם

מישתנה שקולט רק שלמים מקבל

מיספר נגיד 34.4

אז ביגלל שהוא קולט רק שלמים אז התוכנית תקרוס או משהוא.

#include<iostream>

using namespace std;

int main()

{

int x;

double t;

double y;

double p;

double r;

cout<<"put 2 number"<<endl;

cin>>p;

x=p/1;

t=p/1;

y=x+1;

if(t>x&&t<y)

{

cout<<"lo shalem:"<<t<<endl;

}

else

{

cout<<"shalem:"<<x<<endl;

}

return 0;

}

פורסם

קודם כל כשאתה כותב כאן קוד, תשתמש בכפתור של קוד:

code.gif

ככה הקוד ייראה נורמלי:


#include<iostream>
using namespace std;
int main()
{

int x;
double t;
double y;
double p;
double r;
cout<<"put 2 number"<<endl;
cin>>p;
x=p/1;
t=p/1;
y=x+1;
if(t>x&&t<y)
{
cout<<"lo shalem:"<<t<<endl;

}
else
{
cout<<"shalem:"<<x<<endl;

}
return 0;
}

לא הבנתי מה ניסית לעשות פה עם p/1 (לחלק מספר ב-1 לא משנה אותו...).

מה שעשית זה לא באג, זה פשוט ניצול של השפה (עיגול למטה של מספרים). זה חוקי לחלוטין, רק שקומפיילרים מסויימים יזהירו אותך מפני זה (כי אתה מאבד כאן מידע, והקומפיילר לא יודע אם התכוונת לעשות את זה). בסופו של דבר, הפתרון שלך גם מאוד מסובך... מספיק לך לבדוק אם t>x.

פורסם
  • מחבר

קודם כל כשאתה כותב כאן קוד, תשתמש בכפתור של קוד:

code.gif

ככה הקוד ייראה נורמלי:


#include<iostream>
using namespace std;
int main()
{

int x;
double t;
double y;
double p;
double r;
cout<<"put 2 number"<<endl;
cin>>p;
x=p/1;
t=p/1;
y=x+1;
if(t>x&&t<y)
{
cout<<"lo shalem:"<<t<<endl;

}
else
{
cout<<"shalem:"<<x<<endl;

}
return 0;
}

לא הבנתי מה ניסית לעשות פה עם p/1 (לחלק מספר ב-1 לא משנה אותו...).

מה שעשית זה לא באג, זה פשוט ניצול של השפה (עיגול למטה של מספרים). זה חוקי לחלוטין, רק שקומפיילרים מסויימים יזהירו אותך מפני זה (כי אתה מאבד כאן מידע, והקומפיילר לא יודע אם התכוונת לעשות את זה). בסופו של דבר, הפתרון שלך גם מאוד מסובך... מספיק לך לבדוק אם t>x.

כן אני יודע שלא צריך חלקי אחד וגם y=x+1 .

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

דרך הגב אפשר ליבדוק גם עם אתה מגדיר מישתנים רק בdouble?

פורסם

אתה לא צריך לצטט את ההודעה מעליך.

יש שני פתרונות:

1. להשתמש בהמרה ל-int ללא משתנה ביניים, כלומר:

double x = (int)p;

שזה בעצם שקול לקוד הזה:

int y = p;
double x = y;

(השורמה הראשונה מעגלת את המספר ל-int, השנייה מחזירה אותו ל-double אבל כשהוא כבר מעוגל)

2. הפונקציה floor:

double x = floor(p);

שים לב שכדי להשתמש בה, אתה צריך להגדיר

#include <cmath>

פורסם

למה פשוט לא לכתוב:

x == (int)x ? puts ("shalem") : puts ("lo shalem");

x הוא float כמובן...

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.