כותב |
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 22 May 2005 בשעה 08:27 | | IP רשוּם
|
|
|
|
תעזרו לי בבקשה עם השאלה
תוכנית תקלוט מספר שלם. על התוכנית לברר ולהדפיס הודעה מתאימה : האם כל הספרות מהן מורכב המספר נמצאות בתוכו בסדר עולה, בסדר יורד או ללא סדר
תודה תודה
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 22 May 2005 בשעה 12:34 | | IP רשוּם
|
|
|
|
נסי את האלגוריתם הבא:
1. כל עוד הספרה הבאה (מימין) קטנה מהקודמת וגם המספר שונה מ-0, חלק את המספר ב-10
2. אם הגענו בסוף הלולאה ל-0, סיים והחזר "עולה"
3. התחל שוב עם המספר המקורי.
4. כל עוד הספרה הבאה (מימין) גדולה מהקודמת וגם המספר שונה מ-0, חלק את המספר ב-10
5. אם הגענו בסוף הלולאה ל-0, סיים והחזר "יורד"
6. אם לא החזרנו כלום עד כה, החזר "אין סדר"
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 22 May 2005 בשעה 14:11 | | IP רשוּם
|
|
|
|
תודה על התגובה המהירה, והשאלה שלי איך אני מתרגמת את "הסיפרה הבאה מימין" ??
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 22 May 2005 בשעה 14:25 | | IP רשוּם
|
|
|
|
קוד:
if (num % 10 > (num / 10) % 10) |
|
|
ככה, לדוגמא
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 23 May 2005 בשעה 16:09 | | IP רשוּם
|
|
|
|
האם זה נכון? ואם לא, מה הטעויות בבקשה
קוד:
include <studio. h>
void main ()
int num;
{
printf ("enter number\n");
scanf ("%d, &num");
while (num=!0)
{
&nbs p;
if
(num%10>num/10)%10)
num=num/10;
printf
("up");
else
if
(num%10<num/10)%10)
num=num/10;
printf
("down");
else
printf ("no
order");
}
}   ; ; |
|
|
תודה, דפנה
|
חזרה לתחילת העמוד |
|
|
pitbull משתמש חבר
הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת הודעות: 209
|
נשלח בתאריך: 23 May 2005 בשעה 16:27 | | IP רשוּם
|
|
|
|
שימי את כל הקוד בין התגיות
אבל בלי הרווחים,
ככה יהיה יותר נוח לעזור לך..
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 23 May 2005 בשעה 17:00 | | IP רשוּם
|
|
|
|
[
#include stdio .h>
void main ()
int num;
{
printf ("enter number\n");
scanf ("%d, &num");
while (num=!0)
{ if (num%10>num/10)%10)
num=num/10;
printf ("up");
else
if (num%10<num/10)%10)
num=num/10;
printf ("down");
else
printf ("no order");
}
}
]
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 23 May 2005 בשעה 17:17 | | IP רשוּם
|
|
|
|
חסר סולמית לפני ה-include
וגם יש בו שגיאת כתיב:
אחרי הmain צריך סוגריים מסולסלות, ולפני ה-num
בנוסף שימי לב שאת מדפיסה up ו-down הרבה פעמים ולא פעם אחת
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 23 May 2005 בשעה 17:31 | | IP רשוּם
|
|
|
|
הוספתי את הסוגריים והסולמית
ובקשר להדפסה של הלמעלה והלמטה המון פעמים, מה אני צריכה לעשות? איך אני עושה את בחירת שלושת ההדפסות בנפרד - פעם אחת?
תודה תודה
[
#include <stdio .h>
void main ()
{
int num;
printf ("enter number\n");
scanf ("%d, &num");
while (num=!0)
{ if (num%10>num/10)%10)
num=num/10;
printf ("up");
else
if (num%10<num/10)%10)
num=num/10;
printf ("down");
else
printf ("no order");
}
}]
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 23 May 2005 בשעה 18:21 | | IP רשוּם
|
|
|
|
האם כדי שלא יהיו הרבה הדפסות של למעלה ולמטה, אני צריכה לולאות נפרדות, ולאחר שאני יוצאת מכל אחת מהן אני מדפיסה את התשובה המתאימה?
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 23 May 2005 בשעה 19:28 | | IP רשוּם
|
|
|
|
את צריכה לשים את מה שאת רושמת בC (או כללית באנגלית)
בתגי code
כלומר תג שמתחיל ב
ונגמר ב
(רק בלי הרווחים)
לא להכניס את זה לסוגריים מרובעים!
עכשיו הבנת?
וגם, אם תרשמי לפורום יהיה לך הרבה יותר נוח, תוכלי לערוך את ההודעות שלך(וגם תעזרי להתפתחות הפורום)
וזה לוקח רק שנייה
__________________ The highest knowledge is to know that we are surrounded by mystery - Albert Schweitzer
He who will not take the hint, must take the consequence - Glenn v. Covey (1854)
ShadowBeast
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 23 May 2005 בשעה 20:09 | | IP רשוּם
|
|
|
|
עכשיו הבנתי, ומה בקשר לשאלה שלי, איפה לשים את ההדפסה כדי שהעולה ויורד לא יצא הרבה פעמים??
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 23 May 2005 בשעה 20:15 | | IP רשוּם
|
|
|
|
את צריכה רק אחרי החישוב להודיע האם הוא עולה או יורד.
תחשבי על זה שכל עוד המספר עולה, את לא יודעת אם הוא ימשיך לעלות,
ולכן זה לא נכון באותו רגע שראית שספרה אחת גדולה מהקודמת להדפיס "עולה".
את צריכה לבדוק שכל הספרות עולות, ורק אם כן, אחרי הלולאה, להדפיס "עולה"
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
feint משתמש פעיל
הצטרף / הצטרפה: 01 March 2005
משתמש: מנותק/ת הודעות: 53
|
נשלח בתאריך: 23 May 2005 בשעה 22:06 | | IP רשוּם
|
|
|
|
רעיון.
להמיר את המספר למחרוזת (itoa(number)). ומשם להתעסק עם זה.
לדעתי יהיה לך יותר קל להתעסק עם מחרוזת מאשר עם המספר עצמו.
__________________ -feint
|
חזרה לתחילת העמוד |
|
|
אורח אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 23 May 2005 בשעה 22:16 | | IP רשוּם
|
|
|
|
feint - לא מסכים איתך. חלוקה ב-10 זו פעולה מספיק פשוטה כדי לעשות ככה. לא צריך להסתבך עם מחרוזות
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 24 May 2005 בשעה 10:15 | | IP רשוּם
|
|
|
|
עשיתי את זה ככה כדי שלא ידפיס הרבה פעמים. זה נראה פחות יעיל אבל אני לא מצליחה אחרת. האם זה נכון?
קוד:
#include stdio .h>
void main ()
int num;
{
printf ("enter number\n");
scanf ("%d", &num);
while (num=!0)
{ if (num%10>num/10)%10)
num=num/10
}
printf ("ole");
scanf
("% d",num) & n
bsp;   ;&n
bsp;
while num!=0
{
if (num%10<num/10)%10)
num=num/10;
}
printf ("down");
else
printf ("no order");
}
}
|
|
|
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 24 May 2005 בשעה 14:49 | | IP רשוּם
|
|
|
|
האם התוכנית בסדר?
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 24 May 2005 בשעה 15:21 | | IP רשוּם
|
|
|
|
לא בסדר.
חסר נקודה פסיק.
חוץ מזה את מדפיסה תמיד "עולה" בלי קשר לתוצאה.
הנה פתרון לחלק של ה"עולה", תראי אם את מבינה:
קוד:
int main()
{
int num, temp, isGoingUp;
... /* value from the user is in num */
temp = num;
isGoingUp = 1;
while (temp != 0 && temp / 10 > 0)
{
if (temp % 10 < ( (temp / 10) % 10 ) ) isGoingUp = 0;
}
if (isGoingUp) printf("Up\n");
...
}
|
|
|
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 24 May 2005 בשעה 15:56 | | IP רשוּם
|
|
|
|
מקווה שהבנתי, הוספתי גם את "יורד למטה" וגם את "אין סדר" זה בסדר?
# include <stdio.h>
int main() { int num, temp, isGoingUp, isGoingDown; temp = num; isGoingUp = 1; while (temp != 0 && temp / 10 > 0) { if (temp % 10 < ( (temp / 10) % 10 ) ) isGoingUp = 0; } if (isGoingUp) printf("Up\n");
while (temp!=0 && temp/10>0)
{ if (temp% 10 > (temp / 10 ) % 10 ) ) isGoingDown = 0;
if (isGoingDown) printf("down"/n);
else
printf("no order"); }
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 24 May 2005 בשעה 16:30 | | IP רשוּם
|
|
|
|
שכחתי את סגירת הסוגריים
# include <stdio.h>
int main() { int num, temp, isGoingUp, isGoingDown; temp = num; isGoingUp = 1; while (temp != 0 && temp / 10 > 0) { if (temp % 10 < ( (temp / 10) % 10 ) ) isGoingUp = 0; } if (isGoingUp) printf("Up\n");
while (temp!=0 && temp/10>0)
{ if (temp% 10 > (temp / 10 ) % 10 ) ) isGoingDown = 0;
}
if (isGoingDown) printf("down"/n);
else
printf("no order"); }
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 24 May 2005 בשעה 22:31 | | IP רשוּם
|
|
|
|
את עדיין לא משתמשתי ב"קודי הפורום". קודי הפורום
תעיפי מבט :) הקוד שלך לא קריא... תסתכלי על התג "code"
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
דפנה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 25 May 2005 בשעה 08:06 | | IP רשוּם
|
|
|
|
תודה על ההערה, מקווה שעכשיו זה ברור יותר
קוד:
include <stdio.h>
int main() { int num, temp, isGoingUp, isGoingDown; temp = num; isGoingUp = 1; while (temp != 0 && temp / 10 > 0) { if (temp % 10 < ( (temp / 10) % 10 ) ) isGoingUp = 0; } if (isGoingUp) printf("Up\n");
while (temp!=0 && temp/10>0)
{ if (temp% 10 > (temp / 10 ) % 10 ) ) isGoingDown = 0;
}
if (isGoingDown) printf("down"/n);
else
printf("no order"); }
|
חזרה לתחילת העמוד |
|
| |
|
|
|
חזרה לתחילת העמוד |
|
|
Nameless אחראי פורומים
הצטרף / הצטרפה: 08 March 2005 מדינה: Armenia
משתמש: מנותק/ת הודעות: 69
|
נשלח בתאריך: 25 May 2005 בשעה 22:31 | | IP רשוּם
|
|
|
|
קוד:
#include <stdio.h>
int main() { int num = 0, temp = num, isGoingUp = 1, isGoingDown; while ((temp != 0) && ((temp / 10) > 0)) { if ((temp % 10) < ((temp / 10) % 10 )) isGoingUp = 0; } if (isGoingUp) printf("Up\n");
while ((temp!=0) && ((temp/10) > 0))
{ if ((temp% 10) > ((temp / 10 ) % 10 )) isGoingDown = 0;
}
if (isGoingDown) printf("down\n");
else
printf("no order");
}
|
|
|
לא בדקתי אם התוכנית עושה את מה שהיא אמורה לעשות.
__________________ meow
|
חזרה לתחילת העמוד |
|
|