ABA


"בעיה בשפת C- אני צריך לכתוב תוכנית שתרכיב לי מספר כלשהו אופרטור ועוד מספר"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21640 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21640
Guygu
חבר מתאריך 31.10.15
377 הודעות, דרג אמינות חבר זה
   02:40   05.04.16   
אל הפורום  
  בעיה בשפת C- אני צריך לכתוב תוכנית שתרכיב לי מספר כלשהו אופרטור ועוד מספר  
 
   התוכנית צריכה להיות בסטרינג ומתורגמת למספר רגיל.

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



וזה ההדפסה, תשימו לב שרושמים
89+ 56 זה עובד
אבל צריך שזה יהיה עם רווחים בין מספר לאופרטור
89 + 56 ככה.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  לפני שאני מסתכלת בבעיה - אין שגיאה בתנאי ה while? - לא אמור להיות !isspace? הרבנית דוטנט 05.04.16 07:47 1
  הבנתי למה התכוונת הרבנית דוטנט 05.04.16 08:50 2
     הקובץ לא עלה - מנסה שוב הרבנית דוטנט 05.04.16 08:52 3
  אתה בטוח שזה עובד עם איך שרשמת? simond15  05.04.16 22:57 4
     קודם כל תודה אבל אני רוצה לתקן את הקוד הקיים שהעלתי ולא לכתוב אלגוריתם אחר Guygu 05.04.16 23:54 5
         בעקרון בלי ה- getchar בהתחלה נראה שזה אמור לעבוד simond15  06.04.16 01:10 6
             די הגיוני הרבנית דוטנט 06.04.16 07:40 7
  כנס רגע barakm 06.04.16 09:00 8
     שמים את זה כשרוצים שרק התנאי של while יתבצע בלי שום תוכן simond15  06.04.16 09:20 9
         תמהני שהתוכנית עובדת גם עבור האפשרות הראשונה הרבנית דוטנט 06.04.16 09:28 12
         אהה טוב לדעת :) בהחלט בלבל אותי. אז אני מסכים איתך שה-c=getchar() הראשון barakm 06.04.16 09:30 13
             הוא מחזיר 0 הרבנית דוטנט 06.04.16 09:42 15
     זה בסדר... spidey1   06.04.16 09:26 10
  מציע שתעלה את הקוד שלך spidey1   06.04.16 09:27 11
  אהה לא חשוב barakm 06.04.16 09:34 14
     נכון אבל הרבנית דוטנט 06.04.16 09:44 16
         בדיוק.. חח זה מה שבלבל אותי אבל סבבה.. בסופו של דבר מושווה הקוד אסקי :) barakm 06.04.16 09:50 17
             אני מעלה את הקובץ השני שיש בתוך את הMAIN ומשם אני מפעיל את התפריט Guygu 06.04.16 12:22 18
                 תעלה את הקוד עצמו אחי barakm 06.04.16 13:46 19
                 הכוונה היתה שתעלה את הקוד באפשרות של ''לחץ כאן להעלאת קובץ'' הרבנית דוטנט 06.04.16 13:52 20
                     העלתי Guygu 06.04.16 16:41 21
                         עכשיו חסר לך את ה-while שהיה לך שבודק רווחים אחרי האופרטור simond15  06.04.16 17:43 22
                             זה לא הבעיה אבל.. יש משהו שגורם לי לאפס את המספר אחרי האופרטור Guygu 06.04.16 17:45 23
                                 כן ניסיתי להריץ simond15  06.04.16 17:53 24
                                     תודה רבה זה באמת עובד! ממש תודה Guygu 06.04.16 18:25 25
                                         צר לי להיות משביתת שמחות הרבנית דוטנט 07.04.16 08:16 26
                                             כן אני עדיין לומד ואז אוכל להיות יותר אלגנטי :) Guygu 07.04.16 20:17 27
  אם אתה כבר כותב תפריט אינטרקטיבי אז קח טמפלייט שיהיה קצת יותר אלגנטי simond15  07.04.16 20:54 28
     וואי ניראה ממש טוב, יש שם דברים שעוד לא למדתי כמו %Ud Guygu 08.04.16 13:51 29

       
הרבנית דוטנט
חבר מתאריך 10.3.16
21 הודעות
   07:47   05.04.16   
אל הפורום  
  1. לפני שאני מסתכלת בבעיה - אין שגיאה בתנאי ה while? - לא אמור להיות !isspace?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
הרבנית דוטנט
חבר מתאריך 10.3.16
21 הודעות
   08:50   05.04.16   
אל הפורום  
  2. הבנתי למה התכוונת  
בתגובה להודעה מספר 0
 
   אני הייתי משנה את התוכנית שתעבוד קצת אחרת:

* קולטת מספר אחד,ממירה ושומרת במשתנה.
* קולטת את האופרטור ושומרת אותו.
* קולטת מספר שני,ממירה ושומרת במשתנה.
* לבסוף מבצעת את החישוב לפי האופרטור.

מצ"ב קובץ עם התוכנית שכתבתי.
לא הרצתי כדי לבדוקאם עובד.

}https://rotter.name/User_files/nor/570351e424733ffd.txt


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
הרבנית דוטנט
חבר מתאריך 10.3.16
21 הודעות
   08:52   05.04.16   
אל הפורום  
  3. הקובץ לא עלה - מנסה שוב  
בתגובה להודעה מספר 2
 
   https://rotter.name/User_files/nor/57035282259f7397.txt

הוספתי גם את התוכנית עצמה

#include<stdio.h>

int StringToInt();
void Calculate(int n1,int n2,char op);

int main(){

int n1,n2;
char c,op;

printf("Enter any integer as a string: ");

n1 = StringToInt(); // convert first num
op = getchar(); // read the operator
n2 = StringToInt();

Calculate(n1,n2,op)

return 0;
}

int StringToInt()
{

int i=0,sum=0;

while(isspace(c = getchar()); // skipping spaces

do
{
if(c < 48 || c > 57)
{
printf("Unable to convert it into integer.\n");
return 0;
}
else
{
sum = sum*10 + (c - 48);
}

} while(!isspace(c = getchar()) || c != '\n') // in the end of the function c contains the space between first num and operator

return sum;
}

void Calculate(int n1,int n2,char op)
{
switch(op)
{
case '+' : printf("\n%d + %d = %d",n1,n2,n1+n2); break;
case '-' : printf("\n%d - %d = %d",n1,n2,n1-n2); break;
case '*' : printf("\n%d * %d = %d",n1,n2,n1*n2); break;
case '/' : printf("\n%d / %d = %d",n1,n2,n1/n2); break;
default: printf("invalid operator %c",op);
}
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
simond15  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 21.8.10
1144 הודעות, 3 פידבק, 6 נקודות
   22:57   05.04.16   
אל הפורום  
  4. אתה בטוח שזה עובד עם איך שרשמת?  
בתגובה להודעה מספר 0
 
   עושה רושם ששיש לך getchar מיותר בתחילת הפונקציית num
בשורה 15 בתמונה שצילמת

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



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Guygu
חבר מתאריך 31.10.15
377 הודעות, דרג אמינות חבר זה
   23:54   05.04.16   
אל הפורום  
  5. קודם כל תודה אבל אני רוצה לתקן את הקוד הקיים שהעלתי ולא לכתוב אלגוריתם אחר  
בתגובה להודעה מספר 4
 
   וניסיתי להוריד את ה getchar הזה ועדיין לא עובד

מה אני צריך לשנות בקוד כדי שזה יעבוד טוב?

@simond15@


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
simond15  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 21.8.10
1144 הודעות, 3 פידבק, 6 נקודות
   01:10   06.04.16   
אל הפורום  
  6. בעקרון בלי ה- getchar בהתחלה נראה שזה אמור לעבוד  
בתגובה להודעה מספר 5
 
   כל עוד מכניסים ערך חוקי מבחינת רווחים (אם לא תשים רווח אחרי המספר הראשון אז זה אמור להתקע ב while בפונקציה num)

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

@Guygu@



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
הרבנית דוטנט
חבר מתאריך 10.3.16
21 הודעות, דרג אמינות חבר זה
   07:40   06.04.16   
אל הפורום  
  7. די הגיוני  
בתגובה להודעה מספר 6
 
   שזה עובד במקרה שאין רווח בין האופרטור למספר השני כי אז זה בדיוק כמו קליטת המספר הראשון.
לדעתי אם תוסיף עוד קליטה של תו בשביל הרווח בתחילת הפונק' זה יעבוד.

לא בדקתי.
ומצטרפת למה שקודמי כתב - תעלה קוד שניתן להריץ.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
barakm לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.5.08
4642 הודעות, 1 פידבק, 2 נקודות
   09:00   06.04.16   
אל הפורום  
  8. כנס רגע  
בתגובה להודעה מספר 0
 
יכול להיות שאני לא זוכר, אבל ממתי שמים נקודה פסיק על תנאי של לולאת while?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
simond15  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 21.8.10
1144 הודעות, 3 פידבק, 6 נקודות
   09:20   06.04.16   
אל הפורום  
  9. שמים את זה כשרוצים שרק התנאי של while יתבצע בלי שום תוכן  
בתגובה להודעה מספר 8
 
   במקרה הזה פשוט שיחכה על ה- while כל עוד הוא מקבל רווחים.
מסכים שההזחה שהוא שם אחרי ה-while בהחלט מבלבלת ולא נכונה



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
הרבנית דוטנט
חבר מתאריך 10.3.16
21 הודעות, דרג אמינות חבר זה
   09:28   06.04.16   
אל הפורום  
  12. תמהני שהתוכנית עובדת גם עבור האפשרות הראשונה  
בתגובה להודעה מספר 9
 
   יש לך כמה getchar מיותרים.
בשורה 15 ובשורה 35.

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
barakm לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.5.08
4642 הודעות, 1 פידבק, 2 נקודות
   09:30   06.04.16   
אל הפורום  
  13. אהה טוב לדעת :) בהחלט בלבל אותי. אז אני מסכים איתך שה-c=getchar() הראשון  
בתגובה להודעה מספר 9
 
בפונקציה num הוא מיותר. למרות שאני עדיין לא מבין למה זה מחזיר לו 0..
מחכה שהוא יעלה את הקוד כדי להריץ..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
הרבנית דוטנט
חבר מתאריך 10.3.16
21 הודעות, דרג אמינות חבר זה
   09:42   06.04.16   
אל הפורום  
  15. הוא מחזיר 0  
בתגובה להודעה מספר 13
 
   כי הוא לא נכנס לתנאי של הלולאה במידה וקרא רווח ואז מחזיר את התוצאה של החיבור בין num1 ל num2 והם מאופסים בהתחלה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
spidey1  
חבר מתאריך 1.7.02
25536 הודעות, דרג אמינות חבר זה
   09:26   06.04.16   
אל הפורום  
  10. זה בסדר...  
בתגובה להודעה מספר 8
 
   שים לב שללואות while האלה אין גוף.
מה שקורה זה שהוא בודק אם הwhile מקבל רווח.
במידה וכן, הפונקצ' מחזירה TRUE והלולאה תרוץ שוב.
ברגע שמישהו יפסיק להזין רווח, אז הפונקצ' תחזיר FALSE ואז הלולאה תיפסק.


Tears Will Get You Sympathy,
Sweat Will Get You Results!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
spidey1  
חבר מתאריך 1.7.02
25536 הודעות, דרג אמינות חבר זה
   09:27   06.04.16   
אל הפורום  
  11. מציע שתעלה את הקוד שלך  
בתגובה להודעה מספר 0
 
  


Tears Will Get You Sympathy,
Sweat Will Get You Results!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
barakm לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.5.08
4642 הודעות, 1 פידבק, 2 נקודות
   09:34   06.04.16   
אל הפורום  
  14. אהה לא חשוב  
בתגובה להודעה מספר 0
 
בכל זאת אגיד- נראה לי שיש עוד טעות. operator לא אמור להיות char? למה int?-
אבל נראה לי שזה בעצם כן בסדר מבחינת התוכנית


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
הרבנית דוטנט
חבר מתאריך 10.3.16
21 הודעות, דרג אמינות חבר זה
   09:44   06.04.16   
אל הפורום  
  16. נכון אבל  
בתגובה להודעה מספר 14
 
   char יכול לעבור המרת מרומזת ל Int כי יש קוד האסקי מאחורה.
רק מצחיק להתייחס לזה כמו ל Int ואח"כ ב switch לחזור להתייחס לזה ב char.. המרה כפולה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
barakm לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.5.08
4642 הודעות, 1 פידבק, 2 נקודות
   09:50   06.04.16   
אל הפורום  
  17. בדיוק.. חח זה מה שבלבל אותי אבל סבבה.. בסופו של דבר מושווה הקוד אסקי :)  
בתגובה להודעה מספר 16
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Guygu
חבר מתאריך 31.10.15
377 הודעות, דרג אמינות חבר זה
   12:22   06.04.16   
אל הפורום  
  18. אני מעלה את הקובץ השני שיש בתוך את הMAIN ומשם אני מפעיל את התפריט  
בתגובה להודעה מספר 17
 
   ועובר לפונקציה של my math.

הקוד הראשון שהעלתי זה היה כל החישובים
ומפה זה התפריט





                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
barakm לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.5.08
4642 הודעות, 1 פידבק, 2 נקודות
   13:46   06.04.16   
אל הפורום  
  19. תעלה את הקוד עצמו אחי  
בתגובה להודעה מספר 18
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
הרבנית דוטנט
חבר מתאריך 10.3.16
21 הודעות, דרג אמינות חבר זה
   13:52   06.04.16   
אל הפורום  
  20. הכוונה היתה שתעלה את הקוד באפשרות של ''לחץ כאן להעלאת קובץ''  
בתגובה להודעה מספר 18
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Guygu
חבר מתאריך 31.10.15
377 הודעות, דרג אמינות חבר זה
   16:41   06.04.16   
אל הפורום  
  21. העלתי  
בתגובה להודעה מספר 20
 
  
@הרבנית דוטנט@
זה קובץ 1 של ה MAIN
https://rotter.name/User_files/nor/5705124f64931749.txt

וזה הקובץ השני

https://rotter.name/User_files/nor/5705123564667d9a.txt


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
simond15  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 21.8.10
1144 הודעות, 3 פידבק, 6 נקודות
   17:43   06.04.16   
אל הפורום  
  22. עכשיו חסר לך את ה-while שהיה לך שבודק רווחים אחרי האופרטור  
בתגובה להודעה מספר 21
 
   כמו שהיה לך בתמונה בהודעה הראשונה בשורה 51...



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Guygu
חבר מתאריך 31.10.15
377 הודעות, דרג אמינות חבר זה
   17:45   06.04.16   
אל הפורום  
  23. זה לא הבעיה אבל.. יש משהו שגורם לי לאפס את המספר אחרי האופרטור  
בתגובה להודעה מספר 22
 
  
ניסית להריץ את זה?


@simond15@


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
simond15  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 21.8.10
1144 הודעות, 3 פידבק, 6 נקודות
   17:53   06.04.16   
אל הפורום  
  24. כן ניסיתי להריץ  
בתגובה להודעה מספר 23
 
   הוספתי while (isspace(c = getchar()));
אחרי ה if operaor
וזה עבד




                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Guygu
חבר מתאריך 31.10.15
377 הודעות, דרג אמינות חבר זה
   18:25   06.04.16   
אל הפורום  
  25. תודה רבה זה באמת עובד! ממש תודה  
בתגובה להודעה מספר 24
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
הרבנית דוטנט
חבר מתאריך 10.3.16
21 הודעות, דרג אמינות חבר זה
   08:16   07.04.16   
אל הפורום  
  26. צר לי להיות משביתת שמחות  
בתגובה להודעה מספר 25
 
   אני מאד שמחה בשבילך שזה עובד אבל התוכנית כתובה לא משהו :(
יש לך getcharים מיותרים...אתה צריך לפתור אותה מהתחלה ולא להוסיף טלאי על טלאי (או חטא על פשע בגרסה המחמירה יותר )

אבל כמובן,איך שאתה רוצה..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Guygu
חבר מתאריך 31.10.15
377 הודעות, דרג אמינות חבר זה
   20:17   07.04.16   
אל הפורום  
  27. כן אני עדיין לומד ואז אוכל להיות יותר אלגנטי :)  
בתגובה להודעה מספר 26
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
simond15  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 21.8.10
1144 הודעות, 3 פידבק, 6 נקודות
   20:54   07.04.16   
אל הפורום  
  28. אם אתה כבר כותב תפריט אינטרקטיבי אז קח טמפלייט שיהיה קצת יותר אלגנטי  
בתגובה להודעה מספר 0
 
  



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Guygu
חבר מתאריך 31.10.15
377 הודעות, דרג אמינות חבר זה
   13:51   08.04.16   
אל הפורום  
  29. וואי ניראה ממש טוב, יש שם דברים שעוד לא למדתי כמו %Ud  
בתגובה להודעה מספר 28
 
   אבל ניראה ממש טוב תודה!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net