רענון קטן בשפת C - שאלה - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

רענון קטן בשפת C - שאלה


sharonp

Recommended Posts

צהריים טובים ;)

אני רוצה ליצור תת-תוכנית אליה אני שולח n (מספר טבעי), שני מערכים בגודל n, ו- x מספר כלשהו כשבתור פלט אני מקבל y מספר אחר

התת-תוכנית משתמשת בקלט על מנת לחשב על y אך לא משנה את הקלט ומחזירה לתכנית

שכחתי איך אני רושם את 'השליחה' במיוחד כשזה נוגע לשליחת מערך של מספרים ? (המערכים הם בגודל n+1 לצורך העניין וכבר מכילים ערכים)

	y = calc_y(n, x[i], y[i], x);

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

תתעלם מה-x בסוף, אני אסמן אותו בשם אחר

אז מה אני רושם עבור מערך x בגודל n?

x[n] או פשוט x ?

ואני זוכר שהיה משהו עם כוכבית *, זה כשאני רוצה לשנות ערכים בתור המערך שאני שולח?

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

היי, מצטער שאני נזכר כל כך מאוחר אבל בשורה הראשונה שכתבת בשביל להגדיר פונקציה שמקבלת מערך למה כתוב int[] array ?

אף פעם לא ראיתי את זה כתוב בצורה כזאת..

נגיד שסתם הגדרתי גודל אוניברסלי N גדול בתחילת הקוד לכל המערכים ובמהלך התכנית העיקרית אני מגיע ל n קטן יותר שבאמת מכיל את אורך המערך שאני משתמש בו, ואני רוצה לשלוח מערך מסוג double בגודל n וסתם משתנה x מסוג double לתת-תכנית אז איך אני כותב את ההגדרה של התת-תכנית ואיך את הקריאה?

האם אפשר לכתוב ככה את ההגדרה של התת-תכנית?

double calc_pol(double *x, double *y, int n, double x_p);

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

היי, מצטער שאני נזכר כל כך מאוחר אבל בשורה הראשונה שכתבת בשביל להגדיר פונקציה שמקבלת מערך למה כתוב int[] array ?

זה שלא ראית לא אומר שזה לא קיים :) כמו שאמרתי, אלה הגדרות (כמעט) שקולות.

נגיד שסתם הגדרתי גודל אוניברסלי N גדול בתחילת הקוד לכל המערכים ובמהלך התכנית העיקרית אני מגיע ל n קטן יותר שבאמת מכיל את אורך המערך שאני משתמש בו, ואני רוצה לשלוח מערך מסוג double בגודל n וסתם משתנה x מסוג double לתת-תכנית אז איך אני כותב את ההגדרה של התת-תכנית ואיך את הקריאה?

בשביל להעביר מערך לפונקציה, כל מה שאתה צריך זה להעביר את ה-*int או ה-[]int. אתה לא חייב להעביר את הגודל שלו לפונקציה, אבל הפונקציה צריכה איכשהו לדעת איפה המערך מסתיים, כדי שתוכל לעבור עליו בלי לגלוש מהגבולות שלו. דרך אחת כזו היא להעביר את גודל המערך לפונקציה, בנוסף למערך. דרך אחרת, לדוגמה, נמצאת בשימוש בכל הפונקציות שמטפלות במחרוזות - במקום להעביר את גודל המערך, המערך עצמו מכיל איפשהו את התו '0\' שמציין את סופו.

אם אתה רוצה להעביר פרמטר נוסף x לפונקציה, פשוט תוסיף את ה-double x בחתימה של הפונקציה, לדוגמה:

int f(int* array, int n, double x);

לסיכום: אין שום דבר מיוחד בפרמטר שהוא מערך, ואין שום דבר מיוחד בפרמטר שמציין את האורך שלו. אלה פרמטרים כמו כל פרמטר אחר לפונקציה.

נ.ב. אין כזה דבר תת-תוכנית. יש "פונקציה" או בעברית "שיגרה".

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

אז בעצם כשאני מעביר מערך לפונקציה אני מעביר את כולו ואני לא חייב לציין בהעברה את הגודל שלו, אה?

העברת הגודל שלו (n) היא בשבילי כדי שאוכל 'לעבוד' עליו בפונקציה מבלי לחרוג מגבול גודלו?

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

ארכיון

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

×
  • צור חדש...