עבור לתוכן

איך אני בונה שעון ב- CPP? המורה לא הסבירה לנו שום דבר והיא רוצה שנבנה פתאום שעון

Featured Replies

פורסם

היא אמרה שצריך להשתמש בפקודה Delay או משהו כזה אבל אני לא יודע איך משתמשים בה (היא לא הסבירה)...

אני פשוט רוצה שכל שניה יעלה מספר השניות באחד (כמו שעון) ואני לא יודע איך אני עושה שהשניות ישתנו.

תודה רבה!

פורסם

איזה קומפיילר?

פורסם
  • מחבר

מזאת אומרת איזה קומפייל? (אין לי מושג בזה)

בעיקרון או ב- Borland CPP 4.5 או במשהו שנקרא Turbo CPP IDE עם Interface כזה של דוס.

פורסם

טוב, קודם אתה צריך להכיל את


#include <dos.h>

ואז להשתמש ב


delay(ms);

פונ הDELAY מקבלת מילישניות(אלפית השניה) ומשהה את התוכנית בזמן זה.

למשל כדי להשההות את התוכנית למשך שניה תרשום


delay(1000);

וזהו.

פורסם
  • מחבר

תודה רבה!

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

פורסם

זה לא.

אני מנחש שאתה צריך לעשות משהו כזה:

int cnt = 0;
while (1)
{
   delay(1000);
   ++cnt;
printf("%d\n", cnt);
}

פורסם
  • מחבר

אני ממש נוב בתיכנות CPP.

מה זה אומר while (1??? (אני אמור להשתמש בסיפריה Conio ואני יודע את הפקודות (יכול רק באלה) while,for,and,or,if וכל שאר הפקודות הבסיסיות כמו - printf, scanf gotoxy וכו.

פורסם
  • מחבר

תודה רבה!

אבל אני לא מכיר את הסיפריות האלה (windows וכו...) אז אני לא יכול להשתמש בהם אם לא למדתי אותם.

מותר לי רק להשתמש ב- dos.h, conio.h, stdio.h, stdlib.h.

וגם אני לא מכיר את הפקודה הזאת עם time.

פורסם

while(1)
{}

אומר שהלולאה תתקיים תמיד,

זה שקול כאילו היית מחליף את ה1 בTRUE.

פורסם
  • מחבר

תודה אני אנסה את זה, ואם אני לא אצליח אני אחזור לפה.

פורסם
  • מחבר

טוב הנה מה שעשיתי -

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
void main(){
int sec,min,hr;
printf ("Please Enter The Nuber Of Current Second");
scanf ("%d", &sec);
printf ("Please Enter The Current Minute");
scanf("%d", &min);
printf ("Please Enter The Current Hour");
scanf ("%d", &hr);
while (1){
delay (1000);
++sec;
if (sec==60)
sec=0;
min=min++;
if (min==60)
sec=0;
min=0;
if (hr==24)
sec=0;
min=0;
hr=0;
clrscr();
printf ("%d:%d:%d\n",hr,min,sec);
}



}

עכשיו יש לי בעיה - לא משנה איזה מספר אני מכניס לו בשעות ובדקות הוא משאיר את זה כאפס וגם לא מעלה את הדקות ברגע שהשניות מגיעות ל-60.

והצלחתי את זה בזכותכם אז תדה רבה! :)

פורסם

היו לך שם כמה טעויות.

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

חוצמזה, כתבת גם min=++min במקום ++min בלבד.

הנה קוד מתוקן:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
void main()
{
   int sec,min,hr;
   printf ("Please Enter The Nuber Of Current Second");
   scanf ("%d", &sec);
   printf ("Please Enter The Current Minute");
   scanf("%d", &min);
   printf ("Please Enter The Current Hour");
   scanf ("%d", &hr);
   while (1)
   {
      delay (1000);
      ++sec;
      if (sec==60)
      {
         sec=0;
         ++min;
      }
      if (min==60)
      {
         min=0;
         ++hr;
      }
      if (hr==24)
         hr=0;
      clrscr();
      printf ("%d:%d:%d\n",hr,min,sec);
   }
}

פורסם
  • מחבר

תודה רבה!!!

המורה שלי אף פעם לא אמרה שצריך להשים סוגריים מסולסלות אחרי ה- if.

ויש לי שאלה - למה ב- borland Cpp ה- delay לא עובד והוא אמור לי של קיימת פקודה כזאתי, אז איזו פקודה כמו delay כן יש ב- borland Cpp?

פורסם

לא הבנתי מה שרשמת שם.

ארכיון

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

דיונים חדשים