stas4000 פורסם 2014 באפריל 29 Share פורסם 2014 באפריל 29 אז ככה, אני קיבלתי משימה לכתוב קוד שמדמה פירמידה, לפי מספר השלבים שאני יכניס לה, למשל אם אני יכניס שמונה תווים זה יראה ככה: ## ### #### ##### ###### ####### ######## ######### אם אני יכניס 3 שלבים זה יראה ככה: ## ### #### וככה אפשר לבחור מספר בין 1 ל 23. עד עכשיו כתבתי את הקוד הזה: #include <stdio.h>#include <cs50.h>int main (void) {int height;int i;do {printf("Enter your pyramid height (A number between 1 and 23)");height = GetInt();}while (height > 23 || height <= 0);for(i=0; i<height; i++) { printf("#%c%d",*,i);}} ב printf נתקעתי רציתי לעשות סולמית כפול המספר פעמים של הלולאה אבל זה נותן לי שגיאה חוץ מזה אני לא יודע אפילו אם הדרך הזאת נכונה.. או איך לעשות את התרגיל. אז בבקשה עזרה תודה דרך אגב, הGetInt זה כמו הscanf. תודה מראש על העזרה ! קישור לתוכן שתף באתרים אחרים More sharing options...
Dimka פורסם 2014 באפריל 29 Share פורסם 2014 באפריל 29 אתה לא יכול להכפיל מספר בתו ולצפות לקבל מספר תוים... מה שקורה לך זה שאתה מכפיל למשל את התו '2' ב-2, התוצאה לא תהיה 4, אלה האות B.'2' = 51, 51*2 = 102, אבל 102 = 'B'.מה שאתה צריך לעשות, זה 'לזכור' את המספר שהוזן ולהשתמש בו בלולאת FOR.הנה משהו אלטרנטיבי, תגיב אם לא ברור://my input numberint my_number = 8;//indexesint i;int j;/*add step and substract*/for(int i = my_number; i > 0 ; i--){ /*Print current step*/ for(j = 0; j < i ; j++) { printf('#'); } printf('\n'); /*next line*/} קישור לתוכן שתף באתרים אחרים More sharing options...
Gil28 פורסם 2014 באפריל 29 Share פורסם 2014 באפריל 29 ^אל תתן פיתרון מלא, תן הדרכה בלבד. ככה הוא לא ילמדתריץ עוד לולאה בפנים שתדפיס את הסולמיות. הלולאה החיצונית תריץ את הלולאה הפנימית ועוד פקודה שתרד שורה. קישור לתוכן שתף באתרים אחרים More sharing options...
Dimka פורסם 2014 באפריל 29 Share פורסם 2014 באפריל 29 הפתרון שלי הוא חלקי כי מבקשים פירמידה קצת שונה, בכל אופן ניסיתי להראות איך נראה "בוא נקח מספר ונכפיל אותו בסולמיות"... קישור לתוכן שתף באתרים אחרים More sharing options...
stas4000 פורסם 2014 באפריל 29 מחבר Share פורסם 2014 באפריל 29 Dimka ו Gil28 תודה ל על העזרה, אני פתרתי שלב אחד בבעיה שלי שזה לעשות את הפירמידה, זה מה שכתבתי: #include <stdio.h>#include <cs50.h>int main (void) {int height;int i;int j;//int l;do { printf("Enter your pyramid height (A number between 1 and 23)"); height = GetInt();}while (height > 23 || height <= 0); for(i=0; i<height; i++) { // for(l=0 ; l<i ; l++) for(j=-1 ; j<i ; j++) { printf("#"); } printf("\n"); }} זה עובד סבבה לגמרי רק שעכשיו נתקלתי ב2 בעיות 1 - התוכנה אמורה להתחיל משתי סולמיות (ואני לא מצליח להבין איך לעשות את זה כי המוח שלי כבר נמס ) 2 - אני צריך להוסיף רווח ליד כל סולמית כדי שהפירמידה תתיישר לימין ככה: ## ### #### ##### מה שעכשיו הבנתי שעל הסולמית הראשונה אני צריך לעשות במקרה הזה 4 רווח והשניה 3 זאת אומרת for (x=0 ; x<i ; x++)printf(" ") רק שהלולאה צריכה להתחיל מהסוף ואין לי מושג איך לעשות את זה בC קישור לתוכן שתף באתרים אחרים More sharing options...
Gil28 פורסם 2014 באפריל 29 Share פורסם 2014 באפריל 29 ראשית, ניתן לבצע לולאה "הפוכה". אם אתה לא יודע איך עושים זאת, כנראה אתה בכלל לא מבין את מבנה הלולאה ואיך היא עובדת.בנוסף, אם כבר יש לך לולאה פנימית שמדפיסה N סולמיות בשורה מסויימת. כמה רווחים אתה צריך להדפיס באותה שורה בהינתן K שורות בכלל? קישור לתוכן שתף באתרים אחרים More sharing options...
stas4000 פורסם 2014 באפריל 30 מחבר Share פורסם 2014 באפריל 30 למעשה אני מבין טוב מאוד איך עובדת לולאה, הדבר היחיד שאני לא מבין זה איך עובד הסינטקס של C ואיך לייצר איתו מה שאני צריך, אבל בסופו של דבר סיימתי את התרגיל וגם עשיתי לולאה הפוכה, אז תודה לכל מי שעזר לי למי שמעוניין זה הפיתרון שלי: int main (void) {int height;int i;int j;int l;do { printf("Enter your pyramid height (A number between 1 and 23)"); height = GetInt();}while (height > 23 || height <= 0); for(i=0; i<height; i++) { for(l=0 ; l<height-i ; l++) { printf(" "); } for(j=-1 ; j<i+1 ; j++) { printf("#"); } printf("\n"); }} קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.