matanyaniv פורסם 2006 בספטמבר 11 Share פורסם 2006 בספטמבר 11 התחלנו ללמוד פונקציות שבתוך הפונקציה יש זימון לפונקציה עצמה ואני לא ממש מבין את זה. מישהו יכול לעזור לי לפתור את התרגיל הבאבשפת C) ******* ***** *** * *** ***** ******* בעקרון זה דיי פשוט אבל כל הקטע הוא לעשות את התרגיל עם רקורסיה(הפונקציה שמזמנת את עצמה) תודה. קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בספטמבר 11 Share פורסם 2006 בספטמבר 11 אתה רוצה פתרון, או הסבר איך לפתור? קישור לתוכן שתף באתרים אחרים More sharing options...
matanyaniv פורסם 2006 בספטמבר 11 מחבר Share פורסם 2006 בספטמבר 11 פתרון עם הסבר קצר יעזור לי מאוד (אם אתה יכול). קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בספטמבר 11 Share פורסם 2006 בספטמבר 11 void func(int n){int i;if(n<=0)return;for(i=0;i<n;i++)printf("*");printf("\n");func(n-2);for(i=0;i<n;i++)printf("*");printf("\n");}אתה מצייר N כוכביות, יורד שורה, קורא לפונ הבאה(שמציירת n-2 כוכביות וכך הלאה, עד אפס), אחר כך אתה מצייר עוד N כוכביות ושוב יורד שורה. שים לב שאני לא מצייר רווחים. אם אתה רוצה להוסיף רווחים, צריך לשנות את מה שהפונ מקבלת, או לשחק עם הביטים של המשתנה היחיד שאתה שולח(אני לא מצליח כרגע לחשוב על דרך אחרת). קישור לתוכן שתף באתרים אחרים More sharing options...
blabla2002 פורסם 2006 בספטמבר 11 Share פורסם 2006 בספטמבר 11 הנה תוכנית דומה, רק שהיא מציירת מספרים#include <stdio.h>#include <conio.h>void repet(int n, int a){ int i; for (i=0 ; i<a-n ; i++) printf (" "); for (i=0 ; i<n ; i++) { printf("%d ",n); } printf("\n");}void holl (int n,int a){ int i; if (n==1) repet(n,a); else { repet(n,a); holl(n-1,a); repet(n,a); }}int main(){ int n; scanf("%d",&n); holl(n,n); getch(); return 0;} קישור לתוכן שתף באתרים אחרים More sharing options...
NJorl פורסם 2006 בספטמבר 11 Share פורסם 2006 בספטמבר 11 namespace ConsoleApplication1{ class Program { private static void test1(int s,int n) { for (int i = 0; i < s; i++) Console.Write(" "); for (int i = 0; i < n; i++) Console.Write("*"); for (int i = 0; i < s; i++) Console.Write(" "); if (n > 2) { Console.WriteLine(); test1(s + 1, n - 2); } Console.WriteLine(); for (int i = 0; i < s; i++) Console.Write(" "); for (int i = 0; i < n; i++) Console.Write("*"); for (int i = 0; i < s; i++) Console.Write(" "); } static void Main(string[] args) { test1(0,21); Console.ReadLine(); } }}UnsignedInteger התכנית שלך לא מציירת את השורות ממורכזות בצורה של משפך קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בספטמבר 11 Share פורסם 2006 בספטמבר 11 נכון, ואם היית קורא את הטקסט שרשמתי מתחת לקוד, היית מבין למה.הוא בכלל לא רשם את החתימה של הפונ, אז הנחתי שהיא מה שרשמתי מקודם. זה סתם מכוער לשלוח 2 משתנים. יש לך פתרון שונה?עכשיו כשאני קורא את הקוד שלך, למה ציירת עוד רווחים אחרי הכוכבית?בנוסף בלי קשר, אם רוצים שהלוגיקה תהייה קצת יותר נכונה, צריך לשלוח unsigned. קישור לתוכן שתף באתרים אחרים More sharing options...
NJorl פורסם 2006 בספטמבר 11 Share פורסם 2006 בספטמבר 11 כן במקרה של רווחים ת'צודק , אצלי במקור היה תרגיל של לצייר $ על רקע של 0 בגלל זה תגידו אם כבר מדברים על רקורסיות באיזה איטרציה התכנית הבאה קורסת אצלכם על StackOverfkowאצלי הגעתי 119,861 private static void test2(int n) { Console.WriteLine(n); test2(n + 1); } קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בספטמבר 11 Share פורסם 2006 בספטמבר 11 תכתוב לקובץ הרבה אפסים ותראה מתי התוכנית קורסת. אצלי זה קרה ב1GB(כנראה מגבלה של WIN). קישור לתוכן שתף באתרים אחרים More sharing options...
matanyaniv פורסם 2006 בספטמבר 11 מחבר Share פורסם 2006 בספטמבר 11 UnsignedInteger תודה על הפתרון, Banana אין לי מושג למה אבל התוכנית שכתבת לא עובדת אצלי...הבנתי איך זה עובד, מישהו יודע רק איך אני עושה שכוכבית אחת תופיע פעם אחת במקום פעמיים? קישור לתוכן שתף באתרים אחרים More sharing options...
bla7 פורסם 2006 בספטמבר 12 Share פורסם 2006 בספטמבר 12 לדעתי אתה חייב לשלוח שני משתנים, או לעשות פונקציית "ממשק" שקוראת לפונקציה אחרת שמקבלת 2 משתנים.(זה לא לגמרי מדוייק, כי אתה יכול להשתמש במשתנה אחד כדי לייצג 2, אבל זה סתם מכוער).בקשר לעניין עם הכוכבית פעמיים - אתה יכול להראות את הקוד שאתה משתמש בו בסופו של דבר? קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בספטמבר 12 Share פורסם 2006 בספטמבר 12 אם אתה מכניס מספר זוגי, אז זה יצג לך 2 כוכביות. כל פעם אתה יורד ב- 2. תראה את הדוגמא שהבאת בהתחלה. אין עם זה בעיה, ככה זה אמור לעבוד. קישור לתוכן שתף באתרים אחרים More sharing options...
bla7 פורסם 2006 בספטמבר 12 Share פורסם 2006 בספטמבר 12 הבעיה היא שמספר הרווחים עולה ב-1 בכל פעם. מספר הרווחים, לאחר 5 כוכביות (או לפניהן), תלוי בנתון, עם כמה כוכביות התחלת. וגם זה נתון שהוא חלק מ"מכונת המצבים".לכן, חייבים להעביר גם את הנתון הזה (כאשר בהתחלה הוא 0, ועולה כל פעם ב-1).אפשרות אחרת היא להעביר את מספר הכוכביות ההתחלתי, ובכל פעם להעביר את מספר האיטרציה, שעולה - עד שמגיע למקסימום (כלומר גדול ממספר הכוכביות ההתחלתי חלקי 2 פלוס 1). ממספר האיטרציה אפשר להסיק מיד את מספר הרווחים (מספר האיטרציה פלוס 1) ואת מספר הכוכביות (המספר ההתחלתי פחות מספר האיטרציה כפול 2).עריכה: עכשיו הבנתי שענית בכלל על הנושא של 2 כוכביות ברצף... בכל מקרה, אם הדרישה היא שזה ייראה ככה, אפשר להעביר מספר שרק מייצג את מספר הכוכביות, וכדי לקבל את המספר האמיתי כופלים אותו ב-2 ומוסיפים 1. ואז מחסירים מהמספר הזה 1 בכל פעם.אבל אני מסכים שכנראה הכוונה היא שיהיו 2 כוכביות בסוף במספר זוגי. קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.