נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: בעיה ב C

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
shmq288
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 03 April 2007
משתמש: מנותק/ת
הודעות: 12
נשלח בתאריך: 10 May 2007 בשעה 12:06 | IP רשוּם
ציטוט shmq288

השאלה היא, שצריך לקלוט איזשהו תו(a,m,M,*,^) ושני מספרים, והתוכנה צריכה לזהות מה הפעולה של התו, ולהדפיס פלט עם הפעולה על שני המספרים שהוכנסו, ותבקש עוד פעם קלט, אם הקלט הוא אינו אחד מהתוים המפורטים אז היא תציג הודעה ERROR ותבקש עוד פעם קלט, הקלט מתבצע בלולאה אינסופית עד לקליטת האות Q ואז לסיים עם ההודעה Finish . הפיתרון חייב להיות עם switch .

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

ואני לא מבין למה?? אפשר עזרה..

קוד:

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>

int main()
{
int x,y;
char ch=0;
clrscr();
while(ch!='Q') {
printf("\nPlease enter the line:");
scanf("%c %d %d",&ch,&x,&y);
switch (ch) {
case 'a':
 printf("The average of the inserted numbers is:%.2lf\n",(double)(x+y)/2);
 break;
case '*':
 printf("The multiply of the inserted numbers is:%d\n",x*y);
 break;
case 'M':
 printf("The larger number is %d\n",max(x,y));
 break;
case 'm':
 printf("The smaller number is %d\n",min(x,y));
 break;
case '^':
 printf("The power is %d\n",pow(x,y));
 break;
default:
 printf("Error!!");
 }
 }
printf("Finish!\n");
getch();
return 0;
}

 

 

חזרה לתחילת העמוד הצג את כרטיס החבר של shmq288 חפש הודעות אחרות של shmq288
 
inHaze
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 23 November 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 119
נשלח בתאריך: 11 May 2007 בשעה 15:00 | IP רשוּם
ציטוט inHaze

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

עוד דבר: מומלץ לנקות את החוצץ לפני כל קליטה ,אפשר עם ;(fflush(stdin. זה חוסך בעיות של קליטה לא נכונה וכו'..

בהצלחה.



__________________
הבלוג שלי
חזרה לתחילת העמוד הצג את כרטיס החבר של inHaze חפש הודעות אחרות של inHaze
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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