פורסם 2005 בפברואר 1820 שנים שלום אני חדש פה אני צריך עזרה... יש לי תרגיל לבית ואני הסתבכתי בו.... התרגיל זה לכתוב תוכנית שמקבלת יום בשבוע בו חל האחד בינואר, ושנה מסויימת... התוכנית תדפיס לוח שנה של אותה השנה. הנה מה שעשיתי: #include <stdio.h> #include <conio.h> int global; int days_month(int month, int year); int full_week(); int headline (int month); int first_week(int day); int head_day(); int full_week(); int main (){ int year,jday; printf ("Please enter the year: "); scanf("%d",&year); printf ("Please enter the day of 1st of January: "); scanf("%d",&jday); head_day(); first_week(jday); full_week(); getch () ; } int headline (int month){ if (month==1) printf("January"); else if (month==2) printf("Fabuary"); else if (month==3) printf("March"); else if (month==4) printf("April"); else if (month==5) printf("May"); else if (month==6) printf("June"); else if (month==7) printf("July"); else if (month==8) printf("August"); else if (month==9) printf("September"); else if (month==10) printf("October"); else if (month==11) printf("November"); else if (month==12) printf("December"); return 0; } int first_week(int day){ int a,i; a=(day-1)*3; for (i=1;i<=a;i++) printf(" "); for (i=1;i<=7-day+1;i++) printf("%3d",i); printf ("\n"); global=7-day+1; return 0; } int days_month(int month, int year){ int days; switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; case 4: case 6: case 9: case 11: days=30; break; case 2: if (year%4==0) days=29; else days=28; break; } return days; } int head_day(){ printf("\n S M T W T F S\n"); return 0; } int full_week(){ int i,limit; for (i=1;i<=7;i++){ global++; printf("%3d",global); } return 0; } מה שהתוכנית עושה בינתיים זה מדפיסה את השבוע הראשון והשני של ינואר.... הפונקציה פירסט_ויק מדפיסה את השבוע הראשון, פול_ויק את השני, עוד אחת מדפיסה את מס' הימים בחודש, וכותרת של חודש ושל יום... עכשיו אני אמור להדפיס את שארית הימים בחודש ולחבר את הכל למיין כבר שלוש שעות אני יושב על זה ואין לי מושג איך להמשיך. למישהו יש רעיון אולי איך אני יכול להמשיך? בבקשה זה חשוב
פורסם 2005 בפברואר 1820 שנים מחבר לקלוט שנה ואת היום של הראשון בינואר(נניח אני מכניס 4 אז הראשון בינואר ביום רביעי)..ולהדפיס לוח שנה
פורסם 2005 בפברואר 1920 שנים אולי תנסה לעשות פונ אחת שמקבלת פרמטר אחד - את היום N, ופשוט מקדמת כל פעם I מסויים, ואם (I+N)%7==0 תדפיס \n.void month_full(int n, int days){ int i; head_day(); for(i=0;i<n;i++) printf("\t"); for(;i<days;i++) { printf("%d", i); if(i%7==0) printf("\n"); else printf("\t"); }}כאן גם הוספתי את מספר הימים בחודשושיניתי קצת את המקום שI מתחיל ממנו(ולכן אתה לא חייב לבדוק את I+N אלא רק את I)ואני ממליץ לך במקום לרשום רווחים לרשום טאבים כדי שיראה יותר יפה, אלא אם תיצור פונ שמדפיסה את המספר ב- 2 ספרות(אם זה ספרה אחת, תדפיס רווח לפני).
פורסם 2005 בפברואר 1920 שנים מחבר הנה אחי עשיתי משהו בסגנון... יש עכשיו בעייה אחת. זה מדפיס את כל החודשים זהים לחודש הראשון. בעיקרון זה אמור להתחיל כל חודש מיום אחרי שהחודש לפניו הסתיים, אז צריך לשמור את היום הזה איכשהו... למישהו יש רעיו איך?#include <stdio.h>#include <conio.h>int global,global1;int days_month(int month, int year);int headline (int month);int first_week(int day);int head_day();int full_week(int jday);int main (){ int year,jday,month,x;printf ("Please enter the year: ");scanf("%d",&year);printf ("Please enter the day of 1st of January: ");scanf("%d",&jday);for(month=1;month<=12;month++){headline (month);head_day();first_week(jday);x= days_month(month, year);full_week(jday); }getch () ;}int headline (int month){if (month==1) printf("\nJanuary\n");elseif (month==2) printf("\nFabuary\n");elseif (month==3) printf("\nMarch\n");elseif (month==4) printf("\nApril\n");elseif (month==5) printf("\nMay\n");elseif (month==6) printf("\nJune\n");elseif (month==7) printf("\nJuly\n");elseif (month==8) printf("\nAugust\n");elseif (month==9) printf("\nSeptember\n");elseif (month==10) printf("\nOctober\n");elseif (month==11) printf("\nNovember\n");elseif (month==12) printf("\nDecember\n");return 0;}int first_week(int day){int a,i;a=(day-1)*3;for (i=1;i<=a;i++) printf(" ");for (i=1;i<=7-day+1;i++) printf("%3d",i);printf ("\n");global=7-day+1;return 0;}int days_month(int month, int year){ int days; switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; case 4: case 6: case 9: case 11: days=30; break; case 2: if (year%4==0) days=29; else days=28; break; } global1=days;return days; }int head_day(){printf("\n S M T W T F S\n");return 0;}int full_week(int jday){int i,j,c=0; for (i=9-jday;i<=global1;i++){ printf("%3d",i); c++; if(c==7){ printf("\n"); c=0;}}printf("\n");return 0;}
פורסם 2005 בפברואר 1920 שנים מחבר ההחזרת 0 זה בגלל שהקומפיילר שלי עושה שגיאה אם אני עושה פרוצדורה שלא מחזירה כלום...ואיך אני יכול לדעת מה היום האחרון של החודש שעבר ?
פורסם 2005 בפברואר 2020 שנים #include <stdio.h>int main(){ int i, j; int curDay; char monthName[12][10] = {"January","February","March","April","May","June","July", "August","September","October","November","December"}; int daysNo[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; printf("enter day of week for Januray 1st: "); scanf("%d",&curDay); // working with 0..6 day numbers --curDay; for ( i = 0 ; i < 12 ; i++ ) { printf("%s\n",monthName[i]); printf("SUN MON TUE WED THU FRI SAT\n"); // fill with blanks until day of 1st of month for ( j = 0 ; j < curDay ; j++ ) printf(" "); for ( j = 0 ; j < daysNo[i] ; j++ ) { // new week if ( j > 0 && curDay == 0 ) printf("\n"); printf("%3d ",j+1); curDay = (curDay+1)%7; } printf("\n\n"); } printf("Thank you for using Calendar, bye bye... \n"); getchar(); return 1;} אם יש לך שאלות שאל נא
פורסם 2005 בפברואר 2020 שנים מחבר רגע אחי זה מערך מה שעשית לא?(כי לא למדתי עדיין...) יש לך רעיון איך אני יכול לשמור את היום שנגמר בו החודש שעבר ולהתחיל את החודש אחר כך מאותו היום? ד"א תודה על התגובות
פורסם 2005 בפברואר 2020 שנים אוי ויי.. אני ממש לא מבין את דרך הלימוד הזו... האלמנטים בשפה לא נמצאים שם בשביל לסבך אותך, אלא בשביל להקל את החיים עליך! אני לא רוטן עליך, אלא על מערכת החינוך. מה זה אמור להיות, תרגיל בבדיקת הידע שלך ב- switch cases? יש לך רעיון איך אני יכול לשמור את היום שנגמר בו החודש שעבר ולהתחיל את החודש אחר כך מאותו היום? עקוב אחרי המשתנה curDay, זה בדיוק מה שעשיתי. הוא שומר את היום הנוכחי (או הבא, תלוי איך מסתכלים על זה) בשבוע. בקשר לקייסים, אני לא ארשום את זה (עבודה שחורה ומיותרת) אבל אני אסביר לך איך: מיד בהתחלה של לולאת הfor המרכזית אתה עושה switch על i ובכל מקרה (בין 0 ל- 11) אתה מדפיס את שם החודש המתאים ונותן למשתנה daysNo (נגיד שיש כזה, במקום המערך ההוא) את הערך המתאים לו (מספר הימים בחודש i). ובלולאת המקוננת אתה משנה את התנאי ל- j < daysNo וזה הכל.
פורסם 2005 בפברואר 2020 שנים או שהוא משתמש בפונ עם הCASEים כמו שהוא עשה בהתחלה.על השטויות של משרד החינוך דיברנו מספיק: נותנים לך תרגילים שתפתור בתורים, כשלמעשה יותר קל ליישם אותם ברשימות מקודרות "רק בשביל התרגול", במקום להראות לך במה זה באמת שימושי.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.