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

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


BenSalem2

Recommended Posts

לדעתי דווקא כדאי להשתמש במחרוזות זה ממש שטויות

בסה"כ מחליפים את הscanf בgets ובודקים את התו האחרון וממירים לint זה שינוי קטנטן יחסית בקוד

ללמוד מחרוזות זה כמה דקות זה באמת משהו קטן

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

  • תגובות 63
  • נוצר
  • תגובה אחרונה
לדעתי דווקא כדאי להשתמש במחרוזות זה ממש שטויות

בסה"כ מחליפים את הscanf בgets ובודקים את התו האחרון וממירים לint זה שינוי קטנטן יחסית בקוד

ללמוד מחרוזות זה כמה דקות זה באמת משהו קטן

בא לך להסביר לי או להביא לי מקור טוב ללמוד ממנו

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

לדעתי דווקא כדאי להשתמש במחרוזות זה ממש שטויות

בסה"כ מחליפים את הscanf בgets ובודקים את התו האחרון וממירים לint זה שינוי קטנטן יחסית בקוד

ללמוד מחרוזות זה כמה דקות זה באמת משהו קטן

דווקא לא צריך. הפתרון הזה שהצעת:

scanf("%d%c", &hours, &type);

הוא פתרון מעולה. אם המשתמש לא הכניס שום אות אחרי השעות אז type יכיל את הרווח/אנטר שהמשתמש הקיש אחרי המספר.

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

הוא יקבל.

כשמעבירים c% ל-scanf אז הוא תמיד קורא תו אחד, בדיוק כמו ב-getc, בלי לדלג על רווחים (בניגוד ל-d% לדוגמה שכן מדלג על רווחים).

עכשיו הכל התחרבש לי :S

#include <stdio.h>] 
#define FULL_SHIFT 8


int main()
{
int shift, sum = 0, c,hours,extra=0,weekend=0;
char type;

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,%c", &hours, &type);
if ( hours > FULL_SHIFT )
{
extra = extra + hours - FULL_SHIFT;
sum = sum + FULL_SHIFT;
}
else if (hours + type)
{
weekend = weekend + hours;
}
else
{
sum = sum + hours;
}


}


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

return(1);
}

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

א. מאיפה הגיע הפסיק ב-scanf? תבין ש-scanf היא פקודה רגישה וכל תו קטן במקום הלא נכון יגרום לא לעבוד לא טוב. נתנו לך דוגמה מדויקת איך להשתמש ב-scanf.

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

[COLOR=#333333]       else if (hours + type)[/COLOR]

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

א. מאיפה הגיע הפסיק ב-scanf? תבין ש-scanf היא פקודה רגישה וכל תו קטן במקום הלא נכון יגרום לא לעבוד לא טוב. נתנו לך דוגמה מדויקת איך להשתמש ב-scanf.

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

[COLOR=#333333]       else if (hours + type)[/COLOR]

א.תוקן

ב.כבר עניתי לך אין לי מושג מה לרשום אחרי הELSE IF..

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

אתה רוצה להכניס שם איזשהו תנאי בוליאני, כלומר ביטוי עם הערכים true או false. למשל X גדול מ- 10 או char שווה לתו 'a'.

בשפה c כל ערך מספרי שווה ל-true למעט 0 שמייצג false

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

אתה רוצה להכניס שם איזשהו תנאי בוליאני, כלומר ביטוי עם הערכים true או false. למשל X גדול מ- 10 או char שווה לתו 'a'.

בשפה c כל ערך מספרי שווה ל-true למעט 0 שמייצג false

רמז עבה מאוד

הבנתי אני אתקן ואסיף את הקוד

חשבתי שהבנתי אבל עדיין לא מסתדר לי

אני צריך לעשות if type(1)?

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

#include <stdio.h>

#define FULL_SHIFT 8


int main()
{
int shift, sum = 0, c,hours,extra=0,weekend=0;
char t;


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 %c", &hours, &t);
if ( hours > FULL_SHIFT )
{
extra = extra + hours - FULL_SHIFT;
sum = sum + FULL_SHIFT;
}
else if (t=1)
{
weekend = weekend + hours;
}
else
{
sum = sum + hours;
}


}


printf("Sum of entered hours worked = %d\n",sum);
printf("Sum of Overtime hours worked = %d\n",extra);
printf("sum of weekend hours worked = %d\n",weekend);
getch();
return(1);
}

עכשיו הוא לא מחשב נכון את השעות נוספות...

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

ארכיון

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


×
  • צור חדש...