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

מערכים ופונקציות בc


shahafp

Recommended Posts

שוב שלום לכולם,

התבקשתי במסגרת קורס מבוא לתכנות לכתוב תכנית שיש לה ארבע פונקציות הראשונה מאתחלת מערך חד ממדי בעל עשר מקומות.

ואז כל אחת מהפונקציות עושה משהו אחר השנייה מדפיסה ערך מינימלי\מקסימלי במערך. השלישית מוצאת ערך ומדפיסה את מיקומו. והרביעית מאפסת את הערכים הזוגיים במערך.

המטרה היא לכתוב לכל אחת מהאופציות פונקציה משלה ובתכנית הראשית לקרוא להן לפי הצורך.

הבעיה: אני לא מצליח לאתחל את המערך. כתבתי פונקציה אשר מזינה ערכים (scanf) לכל אחד מערכי המערך אבל בפונקציה הראשית אני לא מקבל את הערכים האלו ובמקומם מקבל זבל. יש דרך שפונקציה תחזיר מערך? או דרך אחרת לגרום לזה לקרות?

הקוד:


#include <stdio.h>
#define num1 10


int arr[num1]= {};


int choice, i;




void one(int arr[])
{
for (i=0; i<10; i++)
{
scanf("%d", &arr[i]);


}






}








int main()
{


printf("choose from the list:\n");
printf("1-initialize the array\n");
printf("2-find the smallest and biggest number in the array\n");
printf("3-find a number and the location\n");
printf("4-delete even numbers from the array\n");
printf("0-exit the program\n");


scanf("%d", &choice);




if(choice>=0 && choice<=4)
{
switch(choice)
{

case 1:
one(arr);
main();
break;


case 2:
for (i=0; i<10; i++)
{
printf("%d ", &arr[i]);
}
main();

break;


}






}


else
{
printf("--------------------------\n");
printf("wrong choice, try again...\n");
printf("--------------------------\n");
main();
}








printf("\n");


return 0;
}



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

קודם כל, שימוש במשתנים גלובליים (מחוץ ל-main) הוא לא נכון פרט למקרים מאוד מסויימים. הפונקציה שכתבת באמת קולטת ערכים למערך שלך, רק שאתה לא מדפיס אותו נכון. במקום להדפיס אתה משום מה קורא שוב ל-main. תכתוב פונקציה נוספת שמדפיסה את המערך ותקרא לה כל פעם שאתה רוצה להדפיס. ב-case 2 אתה משתמש ב-& בתוך ה-printf למרות שהוא לא מקבל כתובת כמו ה-scanf.

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

יצאתי חציל :s0403:. עשיתי העתק-הדבק מהscan לprint ושכחתי להוריד את ה&. הפונקציה שמדפיסה היית סתם כדי לבדוק שהערכים באמת נכנסים. תודה רבה!

בקשר לקריאה לmain() אני עושה את זה בכוונה על מנת שהפונקציה תרוץ עד שאני אבחר לצאת מהתכנית. זה נכון לכתוב ככה קוד? כאילו בסיום כל פונקציה לחזור לmain()?

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

זה לא נכון לכתוב ככה קוד. למעשה לקרוא שוב לmain זה אחד הדברים היחידים שכנראה לא נכון לעשות אף פעם :)

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

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

ארכיון

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

×
  • צור חדש...