עבור לתוכן

אהלן בעיה בשפת C עם WHILE

Featured Replies

פורסם
  • מחבר

קודם כל תודה שוב, אני שמח שאתה עוזר בכך שאתה נותן כיוון ולא נותן את הפיתרון, ככה באמת אפשר ללמוד!

תודה שוב :xyxthumbs:

  • תגובות 35
  • צפיות 3.1k
  • נוצר
  • תגובה אחרונה
פורסם
  • מחבר

אם אני רוצה שמקש מסוים יוציא מהתוכנית יש אפשרות כזאת? לדוגמא ctrl+z ???

פורסם

ה-main היא פונקציה לכל דבר, ואפשר לעשות return ממנה איפה שאתה רוצה.

פורסם
  • מחבר

אבל איך אני עושה את זה?

ניסיתי להכניס בתוך הסוגריים של הmain, או Z או ^Z וזה לא מזהה לי את מה שבסוגריים..

פורסם

מה? מה הקשר ל-Z? פשוט תעשה return מאמצע הפונקציה (כמו ה-return שיש בסוף הפונקציה).

פורסם
  • מחבר

אבל אני רוצה שספציפית ברגע שיקישו ctrl+Z הפונקציה תסיים את התוכנית,

כל השאר להמשיך ולתת את הקלט,פלט.

ניסיתי לשים return אם 'v=='26 וזה לא יוצא מהתוכנית.....

פורסם
  • מחבר

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

אם אני מקיש ctrl+z אני זקוק לchar לא???

פורסם

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

הפונקציה scanf תמיד מחזירה את מספר האיברים שהיא קלטה, או את הקבוע EOF אם הקלט נגמר. יענו אם תעשה (scanf("%f%f",&a,&b והמשתמש אכן יכניס שני מספרים, אז היא אמורה להחזיר 2. אם הקלט מסתיים (נניח המשתמש לחץ על ctrl+Z) אז היא תחזיר EOF.

פורסם
  • מחבר

ואיך אני עובד עם הEOF?

זאת אומרת איך אני מקבל אותו כדי לתת לו תנאי יציאה שאותו כבר הבנתי הודות לך :)

ואל תצטער גם אם אתה טועה או תטעה, התרומה שלך כאן היא משהו שלא רואים בכל פורום :xyxthumbs:

פורסם

כמו שאמרתי, זה פשוט קבוע שנקרא EOF. אתה צריך להשוות את התוצאה של scanf אליו.

פורסם
  • מחבר

הבעיה היא שאני לא יודע איפה להכניס אותו, לדוגמא אם הכנסתי את הwhile לכאן , הלולאה לא עובדת גם אם אכניס מספרים רגילים

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


int main()
{
int i=0;
double v=1,vx,vy,a,t=0.1,h,s,l,g=9.81;


while (v>0&&v<=100){

printf("\nEnter v <0.0-100.0 m/s> and a <0.0-90.0 degrees>:");
fflush(stdin);
scanf(" %lf%lf",&v,&a);

while (getchar()!=EOF){

if (v>0&&v<=100)
{
t=0.1;
g=9.81;
a=0.017453*a;
vx=(cos(a))*v;
vy=(sin(a))*v;
s=vx*t;
l=pow(t,2);
h=vy*t-(g*l/2);}
else h=-1;
for (t=0.1;h>0;t=t+0.1){
s=vx*t;
l=pow(t,2);
h=vy*t-(g*l/2);
printf("time is %.1f s is %.2f h is %.2f\n",t,s,h);
}

printf("\nFallen!\n");
}
printf("FINISH");
return ;

}
getch();
return 0;
}

פורסם
  • מחבר

printf("\nEnter v <0.0-100.0 m/s> and a <0.0-90.0 degrees>:");
fflush(stdin);
scanf(" %lf%lf",&v,&a);

if (getchar()==EOF){
printf("FINISH"); return ;}

או שניסיתי משהו כזה, הוא לא מקבל את הקונטרול Z

פורסם
  • מחבר

אני לא מבין איך אפשר להשוות את הקבוע הזה לscanf

מה שניסיתי זה

	printf("\nEnter v <0.0-100.0 m/s> and a <0.0-90.0 degrees>:");
fflush(stdin);
EOF=scanf("%lf%lf",&v,&a);
if (v==-1){
printf("FINISH");
return 0;}
שזה לא נכון..
או

	printf("\nEnter v <0.0-100.0 m/s> and a <0.0-90.0 degrees>:");
fflush(stdin);
scanf("%lf%lf",&v,&a)=EOF;
printf("FINISH");
return 0;}


איך בדיוק להשוות? יש שני משתנים בscanf

פורסם

scanf זו פונקציה. היא מחזירה תוצאה (ערך מטיפוס int). עם התוצאה הזו אפשר לעשות מה שאתה רוצה - לשמור אותה במשתנה, להשוות אותה למספרים אחרים וכו', בדיוק כמו שאתה משווה בין כל שני ביטויים אחרים.

ארכיון

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

דיונים חדשים