שאלה | שפת C עזרה בכתיבת תכנית לחישוב שעות עבודה - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה | שפת C עזרה בכתיבת תכנית לחישוב שעות עבודה


BenSalem2

Recommended Posts

#include <stdio.h>

int main()
{
int c;

int hours, extra, weekend, reg,shift;

printf("Please enter number of shifts:\n");
scanf("%d", &shift);

for (c=1; shift<=shift;c++);
printf("Please enter daily hours");
scanf("%d",&hours);
if( hours > 8)
hours - 8 += extra;
else if ( hours+'c' )
hours += weekend;
else
hours += reg;

printf('Hours "%d"Overtime "%d" Weekend "%d" ,hours,extra,weekend\n');


getch();
}




}

אני מתקרב או מתרחק

אני יודע שאין דבר כזה hours - 8 +=extra

אבל זה הכי קרוב שהגעתי אם אפשר לקבל תיקון...

תודה

קישור לתוכן
שתף באתרים אחרים

  • תגובות 63
  • נוצר
  • תגובה אחרונה

אני מבין שלא שמעת לעצתי:

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

אחרי שתסיים לכתוב את השלב הזה של התכנית, אם אתה לא בטוח שהיא עובדת אז תעלה אותה לכאן.

קישור לתוכן
שתף באתרים אחרים

אני מבין שלא שמעת לעצתי:

אחרי שתסיים לכתוב את השלב הזה של התכנית, אם אתה לא בטוח שהיא עובדת אז תעלה אותה לכאן.

בבקשה...

#include <stdio.h>

int main()
{
int shift, sum = 0, c,hours,n;

printf("Enter the number of shift worked\n");
scanf("%d", &shift);

printf("Enter number of hours worked\n");

for (c = 1; c <= shift; c++)
{
scanf("%d",&hours);
sum = sum + hours;
}

printf("Sum of entered hours worked = %d\n",sum);

return 0;
}

קישור לתוכן
שתף באתרים אחרים

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

עכשיו תוסיף את החישוב שעות נוספות

הצעה לייעול, מספר כמו 8, רצוי שהוא יהיה ב-define לדוגמה:

#define HOURS_FOR_FULL_JOB 8

ובמקום התייחסות ל-8 בכל מקום זה יהיה HOURS_FOR_FULL_JOB

קישור לתוכן
שתף באתרים אחרים

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

עכשיו תוסיף את החישוב שעות נוספות

הצעה לייעול, מספר כמו 8, רצוי שהוא יהיה ב-define לדוגמה:

#define HOURS_FOR_FULL_JOB 8

ובמקום התייחסות ל-8 בכל מקום זה יהיה HOURS_FOR_FULL_JOB

רגע רגע למקרה שלא שמתם לב זה גם אחד השלבים שאני נתקע בו

כי מה אני צריך לעשות כדי שהתוכנית תחשב כל מספר אחרי 8 זאת אומרת אם המשתמש הכניס 10 אז הוא יקח 2 ויוסיף את זה לכל שעה נוספת שהמשתמש מכניס...

קישור לתוכן
שתף באתרים אחרים

אוקי, עד כה הקוד נראה מצוין.

עכשיו צריך להוסיף את השלב הבא: אם המשתמש מכניס יותר מ-8 שעות, אז להפריד בין 8 השעות של המשמרת הזו לשאר השעות, ולהוסיף כל חלק לסכום אחר. זה שינוי די קטן סה"כ (תוספת של 2-3 שורות קוד פחות או יותר).

קישור לתוכן
שתף באתרים אחרים

רגע רגע למקרה שלא שמתם לב זה גם אחד השלבים שאני נתקע בו

כי מה אני צריך לעשות כדי שהתוכנית תחשב כל מספר אחרי 8 זאת אומרת אם המשתמש הכניס 10 אז הוא יקח 2 ויוסיף את זה לכל שעה נוספת שהמשתמש מכניס...

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

חוץ מזה אתה צריך לדעת האם המספר שעות שהכניסו לך הוא מעל 8 נכון?

במקרה והוא מעל 8 אתה צריך להוסיף לסכום הרגיל 8, ולסכום החדש את השעות שהכניסו פחות 8 נכון?

במקרה והשעות שהכניסו זה מתחת ל-8 אתה צריך לבצע את הפעולה שאתה עושה כרגע נכון?

אם זה יעזור לך אתה יכול לנסות לכתוב את הפעולות בפסיאודו-קוד בעברית

קישור לתוכן
שתף באתרים אחרים

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

חוץ מזה אתה צריך לדעת האם המספר שעות שהכניסו לך הוא מעל 8 נכון?

במקרה והוא מעל 8 אתה צריך להוסיף לסכום הרגיל 8, ולסכום החדש את השעות שהכניסו פחות 8 נכון?

במקרה והשעות שהכניסו זה מתחת ל-8 אתה צריך לבצע את הפעולה שאתה עושה כרגע נכון?

אם זה יעזור לך אתה יכול לנסות לכתוב את הפעולות בפסיאודו-קוד בעברית

כל מה שאמרת נכון

מה שאני לא יודע זה איך לבצע או מה זה פסיאודו-קוד...

בנוסף לזה שניצל

אתה יוכל להרחיב עם קוד שאני אראה איך 2-3 שורות של מה?

קישור לתוכן
שתף באתרים אחרים

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

1. sum = 0

2. קרא מספר shifts מהמשתמש

3. עבור i מ-1 עד shifts, בצע:

3.1. קרא מספר x מהמשתמש

3.2. sum = sum + x

4. הדפס את sum

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

יש מבין?

קישור לתוכן
שתף באתרים אחרים

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

1. sum = 0

2. קרא מספר shifts מהמשתמש

3. עבור i מ-1 עד shifts, בצע:

3.1. קרא מספר x מהמשתמש

3.2. sum = sum + x

4. הדפס את sum

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

יש מבין?

הדרך היותר ברורה שאני אבין היא אם אחד מכם יפרסם את הקוד שמוציא את כל מה שרשמנו פה 3 דפים

הרי זה עניין של שינוי 2-3 שורות אז למה אף אחד לא רשם את הקוד?

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

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

קישור לתוכן
שתף באתרים אחרים

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

נעשה משהו יותר פשוט אפילו.

קח את התכנית שלך, ותוסיף לה דבר אחד פשוט - כל פעם שהמשתמש מכניס כמה שעות הוא עבד במשמרת, אם הוא עבד יותר מ-8 שעות התכנית תדפיס לו משהו בסגנון "עבדת שעות נוספות!" (חוץ מזה התכנית תעשה אותו דבר כמו מקודם). זהו בינתיים.

קישור לתוכן
שתף באתרים אחרים

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

נעשה משהו יותר פשוט אפילו.

קח את התכנית שלך, ותוסיף לה דבר אחד פשוט - כל פעם שהמשתמש מכניס כמה שעות הוא עבד במשמרת, אם הוא עבד יותר מ-8 שעות התכנית תדפיס לו משהו בסגנון "עבדת שעות נוספות!" (חוץ מזה התכנית תעשה אותו דבר כמו מקודם). זהו בינתיים.

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

כל פעם אתם אומרים לי ליצור משהו שאני כבר יודע אני מנסה ללמוד דברים חדשים

בכל מקרה נזרום איתכם אני לא מכיר עוד אתרי פורום שעונים כזה מהר :)

	   if ( hours <= 8 );
{
sum = sum + hours;
}
else (hours>8);
printf( "Overtime Hours\n" );

קישור לתוכן
שתף באתרים אחרים

זוכר מה שאמרתי לך קודם?

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

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

קישור לתוכן
שתף באתרים אחרים

זוכר מה שאמרתי לך קודם?

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

אל תיכנס לטעויות תחביר קלות

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

#include <stdio.h>

#define HOURS_FOR_FULL_JOB 8

int main()
{
int shift, sum = 0, c,hours,n;

printf("Enter the number of shift worked\n");
scanf("%d", &shift);

printf("Enter number of hours worked\n");

for (c = 1; c <= shift; c++)

{
scanf("%d",&hours);
if ( hours <= 8 )

sum = sum + hours;

else{

printf ("Overtime Hours\n" );
}
}

printf("Sum of entered hours worked = %d\n",sum);

getch();
}

קישור לתוכן
שתף באתרים אחרים

אלה שגיאות מהותיות שלא כדאי בכלל שתעשה אותם אפילו על דף נייר.

עכשיו מבחינה לוגית, עדיף שאת השאלה האם המשתמש עבד יותר מ-8 שעות תשאל ככה ולא האם הוא עבד פחות מ-8 שעות.

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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


×
  • צור חדש...