כותב |
|
tubleron משתמש מתחיל
הצטרף / הצטרפה: 15 December 2011
משתמש: מנותק/ת הודעות: 2
|
נשלח בתאריך: 15 December 2011 בשעה 22:51 | | IP רשוּם
|
|
|
|
אני מתקשה בשאלה שנתנו לי בשיעורי הבית אני ישמח אם מישהו
יוכל לעזור לי:
נגדיר מערך "ממוין פירמידה", כמערך שאיבריו, כולם שונים זה
מזה, מסודרים כך שהערך הקטן ביותר הוא הראשון במערך, השני
בגודלו הוא האחרון, השלישי בגודלו הוא השני במערך, הרביעי
בגודלו הוא הלפני אחרון, וכך הלאה, הערכים הולכים וגדלים
לסירוגין משני צידיו. יוצא שחציו השמאלי של המערך מהווה
סדרת ערכים עולה (כל איבר גדול מקודמו), חציו הימני מהווה
סדרת ערכים יורדת, והאיבר המקסימלי נמצא באמצעו.
א. כתבו פונקציה המקבלת מערך של מספרים שלמים ואת אורכו,
והופכת אותו "ממוין פירמידה". לדוגמא:
המערך: 0 1 2 3 4 5 6 7 8 9 , יהפוך ל: 0 2 4
6 8 9 7 5 3 1
המערך: 6 1 -13 12 7 0 5 , יהפוך ל: -13 1
6 12 7 5 0
|
חזרה לתחילת העמוד |
|
|
tubleron משתמש מתחיל
הצטרף / הצטרפה: 15 December 2011
משתמש: מנותק/ת הודעות: 2
|
נשלח בתאריך: 15 December 2011 בשעה 22:53 | | IP רשוּם
|
|
|
|
זה הקוד שבניתי עד כה אם מישהו יוכל לכוון כי פשוט אני לא
מסתדר עם זה...:
#include <stdio.h>
void pyrr(int arr[],int length);
void displayarray(int arr,int length);
int main()
{
int i=0,arr[9];
printf("enter 9 numbers\n");
scanf("%d",&arr[9]);
arr=arr[0];
for(i=0; i<9; i++)
{
if(arr==arr[i++])
printf("incorrect array\n");
}
}
void pyrr(int arr[],int length)
{
int i,t,temp,checki,checkt;
for(i=0; i<length; i++)
{
if(i%2==0)
checki=i/2;
else
checki=length-1-i/2;
for(t=i; t<length; t++)
{
if (t%2==0)
checkt=t/2;
else
checkt=checkt-1-
t/2;
if(arr[checkt]
<arr[checki])
{
temp=arr[checkt];
arr[checkt]=arr[checki];
arr[checki]=temp;
}
}
}
}
void displayarray(int *arr,int length)
{
int i;
for(i=0; i<length; i++)
printf("%d",arr);
printf("\n");
}
|
חזרה לתחילת העמוד |
|
|
Ohad_f משתמש מתחיל
הצטרף / הצטרפה: 17 December 2011 מדינה: Israel
משתמש: מנותק/ת הודעות: 2
|
נשלח בתאריך: 17 December 2011 בשעה 01:21 | | IP רשוּם
|
|
|
|
שלום חבר, האמת היא שלא התבוננתי במה שעשית עקב מחסור בזמן.
אנני יודע מה אתם למדתם עד עכשיו ומה מגבלות השאלה. בכל
אופן, מכיוון שאתה יודע את גודל המערך (מהפרמטר של
הפונקציה) אתה יכול להגדיר מערך נוסף בתוך הפונקציה ע"י
פונקצית malloc בגודל המתאים. משהו שיראה ככה (שים לב
שהסוגריים זזו עקב ה editor של האתר)...בכל אופן
int *p;
p =(int*)malloc(50*sizeof(int));
לאחר שהגדרת מערך נוסף, תעתיק את התוכן של המערך המקורי
למערך החדש(ששמו p לפי מה שכתבתי לך).
כעת תמיין את המערך P ע"י אחד מאלגוריתמי המיון.
ולסיום נשאר לך לעבור על המערך P הממוין ולהעתיק אותו(מהקטן
לגדול) למערך המקורי,כאשר בכל איטרציה אתה מעתיק לצד אחר של
המערך המקורי.
מקווה שסייעתי לך..בהצלחה
אם עדיין תהייה לך בעיה אני יוכל לראות את מה שעשית רק ביום
שלישי לכל המוקדם.
שוב בהצלחה,אוהד.
|
חזרה לתחילת העמוד |
|
|
Ohad_f משתמש מתחיל
הצטרף / הצטרפה: 17 December 2011 מדינה: Israel
משתמש: מנותק/ת הודעות: 2
|
נשלח בתאריך: 17 December 2011 בשעה 12:17 | | IP רשוּם
|
|
|
|
למקרה שאתה לא יודע ליצור מערך באופן דינמי, אתה יכול ליצור
מערך רגיל בתוך הפונקציה ע"פ הגודל שקיבלת... זה אולי יקל
עלייך את ההבנה...המשך יום מוצלח,אוהד.
|
חזרה לתחילת העמוד |
|
|
|
|