tal_p פורסם 2010 בינואר 21 Share פורסם 2010 בינואר 21 יש לי רעיון שלדעתי הרבה יותר קל לביצוע, יש סיכוי שאני טועה בהבנת התרגיל אבל אני בספק... בעיקרון אתה צריך לולאת WHILE אחת שתסתיים כשהקלט הוא -1, ואז לקלוט מספרים לתוך מחסנית, ובסוף לבדוק מי הכי קטן במחסנית...ובסוף כמובן לפלוט אותו... מקווה שהבנת את הרעיון.. אם אתה צריך עזרה בביצוע דבר איתי! קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2010 בינואר 21 Share פורסם 2010 בינואר 21 תיאורטית כן, אבל אז צריך להתעסק עם מבני נתונים, וסיבוכיות הזכרון עולה מ-(O(1 ל-(O(n.גם ככה צריך לעבור על כל איבר ברשימה רק פעם אחת, אז למה לטרוח לשמור אותם במבנה בצד? קישור לתוכן שתף באתרים אחרים More sharing options...
iem פורסם 2010 בינואר 21 מחבר Share פורסם 2010 בינואר 21 יש לי רעיון שלדעתי הרבה יותר קל לביצוע, יש סיכוי שאני טועה בהבנת התרגיל אבל אני בספק... בעיקרון אתה צריך לולאת WHILE אחת שתסתיים כשהקלט הוא -1, ואז לקלוט מספרים לתוך מחסנית, ובסוף לבדוק מי הכי קטן במחסנית... ובסוף כמובן לפלוט אותו... מקווה שהבנת את הרעיון.. אם אתה צריך עזרה בביצוע דבר איתי! מכיוון שאני לקראת פתרון, אני חושב שאני אדבוק בשיטה הנוכחית מלבד זה שלא ממש שואלים על מבני נתונים בד"כ בבחינה... כשאתה עושה lowest_num=frst' date=' אתה מאבד את הערך שלו מההפעלות הקודמות של הפונקציה. למעשה, זה כאילו לא הגדרת אותו להיות סטטי בכלל. [/quote'] באיזו פקודה אני אמור להחליף את זה ע"מ שהתוכנית תעבוד ? (היא כבר גמורה אני רק צריך את התוספת הקטנה הזו... :) קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2010 בינואר 21 Share פורסם 2010 בינואר 21 תאתחל אותו רק בשורת ההצהרה שלו (כי האתחול הזה יקרה רק פעם אחת, ולא בכל קריאה לפונקציה). קישור לתוכן שתף באתרים אחרים More sharing options...
iem פורסם 2010 בינואר 21 מחבר Share פורסם 2010 בינואר 21 הוא לא נותן לי, הוא רושם: initializer is not a constant #include <stdarg.h>#include <stdio.h>int lowest_ever (int frst,...){ va_list mylist; static int lowest_num=frst; static int next_num; va_start (mylist, frst); /*Initialize the argument list*/ next_num= va_arg(mylist, int); while (next_num!=-1) { if (next_num <lowest_num) lowest_num= next_num; next_num = va_arg(mylist, int); } va_end (mylist); /*Clean up */ return lowest_num;}intmain (void){ /*This call prints 5*/ printf ("%d\n", lowest_ever (90, 78, 5, 20, -1)); /*This call prints 2*/ printf ("%d\n", lowest_ever (70, 40, 2, -1));/*This call prints 2*/ printf ("%d\n", lowest_ever (40, 30, -1)); return 0;} קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2010 בינואר 21 Share פורסם 2010 בינואר 21 אז תאתחל אותו להיות מספר קבוע. קישור לתוכן שתף באתרים אחרים More sharing options...
iem פורסם 2010 בינואר 21 מחבר Share פורסם 2010 בינואר 21 גם לא עובד... נותן לי הכל אפסים... :'(#include <stdarg.h>#include <stdio.h>int lowest_ever (int frst,...){ va_list mylist; static int lowest_num=0; static int next_num; va_start (mylist, frst); /*Initialize the argument list*/ next_num= va_arg(mylist, int); while (next_num!=-1) { if (next_num <lowest_num) lowest_num= next_num; next_num = va_arg(mylist, int); } va_end (mylist); /*Clean up */ return lowest_num;}intmain (void){ /*This call prints 5*/ printf ("%d\n", lowest_ever (90, 78, 5, 20, -1)); /*This call prints 2*/ printf ("%d\n", lowest_ever (70, 40, 2, -1));/*This call prints 2*/ printf ("%d\n", lowest_ever (40, 30, -1)); return 0;} קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2010 בינואר 21 Share פורסם 2010 בינואר 21 זה לא מפתיע - אתחלת אותו להיות 0, ולכן הוא נמוך יותר מכל המספרים. תחשוב איך אפשר לאתחל אותו בצורה יותר חכמה. קישור לתוכן שתף באתרים אחרים More sharing options...
iem פורסם 2010 בינואר 21 מחבר Share פורסם 2010 בינואר 21 כן אבל לכל ערך שאני מאתחל אותו אני מקבל פשוט אותו בפלט.אם אני ארשום 1- באתחול אני אקבל בתדפיס 3 פעמים 1- ואם אני ארשום 1 אני אקבל 3 פעמים 1... קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2010 בינואר 21 Share פורסם 2010 בינואר 21 זה כי 1- ו-1 קטנים יותר מכל המספרים שאתה מזין לפונקציה.קרא שוב את התרגיל ותחשוב איך אפשר לאתחל אותו. קישור לתוכן שתף באתרים אחרים More sharing options...
iem פורסם 2010 בינואר 21 מחבר Share פורסם 2010 בינואר 21 כמו הסרט (101 כלבים וגנבים ) תודה יואב !! קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2010 בינואר 21 Share פורסם 2010 בינואר 21 בבקשה.אגב, שים לב שעדיין יש לך שני באגים קטנים:מה קורה אם האיבר הקטן ביותר הוא הארגומנט הראשון? לדוגמה, (lowest_ever(3,5,6,-1?מה קורה אם לא מועבר שום מספר לרשימה, פרט ל-1-? כלומר, (lowest_ever(-1? קישור לתוכן שתף באתרים אחרים More sharing options...
iem פורסם 2010 בינואר 21 מחבר Share פורסם 2010 בינואר 21 את התנאים האלה אני יכול להוסיף פשוט בתוך ה- while נכון ? אין לי מה לשנות מחוץ ל- while במקרי הקצה האלה נכון ? קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2010 בינואר 21 Share פורסם 2010 בינואר 21 לא הבנתי למה התכוונת. קישור לתוכן שתף באתרים אחרים More sharing options...
iem פורסם 2010 בינואר 21 מחבר Share פורסם 2010 בינואר 21 חשבתי להכניס for-ים נוספים לתוך ה- while אבל זאת כנראה לא הדרך... :-[יש מצב לרמז ? קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.