פורסם 2005 בפברואר 1220 שנים יש לי תרגיל לכתוב תוכנית שקולטת סידרה של מספרים עם סימנים ביניהם(רק + או -) ומחשבת את תוצאת הסידרה עד שנקלט הסימן *. יעני 24 + 3 - 7 - 2 * זה אמור להציג 18... קיצר ניסיתי לעשות את זה ו: #include <stdio.h> #include <conio.h> int main(){ int num1,num2; char sign='+'; printf("enter number: "); scanf("%d",&num1); while(sign!='*'){ printf("enter number: "); scanf("%d",&num2); printf("enter sign: "); scanf("%c",&sign); if(sign=='+') num1=num1+num2; if(sign=='-') num1=num1-num2; printf("enter number: "); scanf("%d",&num2); printf("enter sign: "); scanf("%c",&sign); } printf("%d",num1); getch();} *שיניתי את הסדר קליטת נתונים, בהתחלה עשיתי שזה קולט בחוץ את המספר הראשון ובפנים את הסימן ואחרי זה מספר 2, אבל זה דילג לי משום מה על הקליטה של הסימן אז שיניתי את הסדר... מה הבעייה? אני כבר שעה יושב על זה
פורסם 2005 בפברואר 1220 שנים הקוד שלך פשוט לא נכוןלמה אותה קולט פעמיים את num2 ואת sign בתוך הלולאהולמה בכלל הפכת את הסדר?
פורסם 2005 בפברואר 1220 שנים מחבר כן אני יודע שזה לא נכון... עשיתי פשוט מלא נסיונות ויצא לי סלט.. שנייה אני ירשום פה אחד אחר.. ושינתי את הסדר כי שהרצתי זה עשה לי ככה:enter number:הכנסתי ואחרי זה:enter sign:enter numbe:יעני זה דילג על הסימן
פורסם 2005 בפברואר 1220 שנים כי כנראה שה-%c קולט את ה-enter שהוכנס אחרי המספרהיה פה פעם דיון על הבעיה הזאת עם פיתרוןאם אני לא טועה אז בכל מקום שאתה מקבל %d תעשהscanf("%d[glow=red,2,300]\n[/glow]",&num2);
פורסם 2005 בפברואר 1220 שנים מחבר #include <stdio.h> #include <conio.h> int main(){ int num1,num2; char sign; printf("enter number: "); scanf("%d ",&num1); while(sign!='*'){ printf("enter sign: "); scanf("%c ",&sign); printf("enter number: "); scanf("%d ",&num2); if(sign=='+') num1=num1+num2; if(sign=='-') num1=num1-num2;} printf("%d ",num1); getch();} הנה עשיתי מה שאמרת ועדיין יש לי בעייה ניסיתי גם לקלוט את הסימן והמספר השני בסוף וזה גם לא עוזר...
פורסם 2005 בפברואר 1220 שנים נראה לי הבעיה ב קליטת המספרים. אתה קולט מספר שהוא num1 ומספר שאני שהוא num2 אחרי זה אתה רושם שורה שאני לא הבנית num1=num1+num2 זה קצת דפוק נגיד בחרת מספרים 1 ו 2 תציב יוצא לך 1=1+2תכניס עוד משתנא שהוא sum ותרשום במקום num1=num1+num2 sum=num1+num2 אותו דבר לגבי חיסור
פורסם 2005 בפברואר 1220 שנים מחבר #include <stdio.h> #include <conio.h> int main(){ int num1,num2; char sign; printf("enter number: "); scanf("%d\n",&num1); while(sign!='*'){ printf("enter sign: "); scanf("%c",&sign); printf("enter number: "); scanf("%d\n",&num2); if(sign=='+') num1=num1+num2; if(sign=='-') num1=num1-num2;} printf("%d",num1); getch();} אמממממ זה לא עזר.. זה עכשיו עובר לקלט הבא רק שאני מכניס 2 מספרים וזה עדיין מדלג על השורה של הסימן
פורסם 2005 בפברואר 1220 שנים MasterDK מה שכתבת מיותר, זה עובד יופי ואפילו עדיף ככה טעות שלי צודקפותח התרד אם לא אכפת לך ואתה רוצה אני יכול לפרסם פה את הקוד שלוקח 2 מספרים לוקח סימן + או - ומחשב לפי הסימן את השאר אני מניח תוכל להוסיף לבד
פורסם 2005 בפברואר 1220 שנים מחבר בעיקרון זה לקלוט את המספרים והסימן ואם זה + להוסיף אם מינוס לחסר.. הבעייה שלי פה זה משהו בקליטת הנתונים לא יודע מה :-\ אבל תודה בכל מקרה
פורסם 2005 בפברואר 1220 שנים תראה אני יכול לפרסם לך קוד תקין שעובד אבל הרבה מהתכנתים רוצים להגיע לבד לפתרון אולי אתה מאלה אז אני לא יהרוס אם אתה רוצה תגיד ואני יפרסם.ותסביר בדיוק איפה הבעיה של קליטת הנתונים אם יש אפשרות תביא פלט
פורסם 2005 בפברואר 1220 שנים [tt]void main(vidid){int x,y;char sign;printf("enter x:"\n);scanf("%d",&x);printf("enter the sign:");sign=getchar();while(sign!='*'){printf("enter y:");scanf("%d",&y);if(sign =='-')x=x-y;elsex=x+y;printf("enter the sign:");fflush(stdin); /* flush the keyboard buffer */sign=getchar();}Printf("the total sum is %d",x);}[/tt]זה עובד
פורסם 2005 בפברואר 1220 שנים מחבר תודה על העזרה ktbnus אם אני לא אצליח אני אסתכל על התוכנית שלך שמתי את ה \n לפני הקליטה של הסימן... ככה: scanf("\n%c",&sign) זה עכשיו קולט טוב את המשתנים.. אבל זה לא חוזר על הלולאה.. .שנייה אני ינסה שוב
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.