עבור לתוכן

מערכים C

Featured Replies

פורסם

שלום לכולם.

יש לי איזה תרגיל שני לא מצליח לפתור.

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

הצלחתי להדפיס את הכי קטן והכי גדול ואת השני בגודל והשני הכי קטן אני לא מצליח.

אני מנסה להעביר את הערכים שמצאתי להיות קיצוניים כך שהוא לא יעבור עליהם שוב אבל יש שם בעיה. הוא מחליף את האיבר אבל לא משנה אותו.

הנה מה שכתבתי. אם רק מישהו יכול להראות לי מה אני עושה לא בסדר אני אשמח, תודה.

#include<stdio.h>
#include<conio.h>
int main()
{
int ar[6],i,max,min,min2,max2,imax,imin,l=0,m=0;
//clrscr();
printf("enter an array of numbers: ");
for(i=0;i<6;i++)
scanf("%d",&ar[i]);
max=min=ar[0];
max2=min2=ar[1];
for(i=0;i<6;i++)
{
if(min>ar[i])min=ar[i];l++;
if(max<ar[i])max=ar[i];m++;
}
imax=ar[0];ar[0]=max;
ar[m]=imax;
printf("\t\t%d\n",ar[m]);
for(i=1;i<6;i++)
printf("\n%d\n",ar[i]);
if(max2<ar[i]){max2=ar[i];
}
imin=ar[6];ar[6]=min;ar[l]=imin;
//printf("%d\t%d\t%d\n",imin,ar[6],ar[l]);
for(i=0;i<5;i++)
{
if(min2<ar[i]){min2=ar[i];}
}
printf("the min is:%d\nthe max is:%d\nthe second minimal is: %d\nthe second largest is: %d",min,max,min2,max2);
getch();
return 0;
}

פורסם

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

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

הייתי מציע לך לגשת לבעיה בצורה שונה. הנה דוגמא לאיך לגשת לזה:

1. תאפס את המשתנים כמו שעשית, כלומר האיבר הראשון הוא גם המקסימום וגם המינימום.

2. תעבור לאיבר השני ותשווה אותו לראשון. אם הוא גדול יותר הוא הופך למקס' ולמינ' השני והראשון הופך למקס' השני (והוא עדיין מינ' ראשון). ההפך אם הוא קטן יותר.

3. תעבור על המערך איבר-איבר, בכל פעם תבדוק:

3.1. אם הוא קטן מהמינ' תשנה בהתאם את המינ' ובנוסף תציב במקום המינ' השני את המינ' הנוכחי.

3.2. אם הוא גדול מהמינ' תשווה אותו למינ' השני. אם הוא קטן יותר תציב אותו במינ' השני.

3.3. אותו הדבר לגבי המקסימום.

3.4. אם הוא קטן מהמקס' אותו הדבר לגבי המקס' השני...

פורסם

יש לך גם כמה באגים. נניח, לא ממש הבנתי מה עשית שם עם m ו-l (כנראה חסרים לך שם סוגריים מסולסלים, לא?)

תימנע מלכתוב יותר מפקודה אחת בשורה, כי זה מבלבל ומטעה, ותדאג להזחה נכונה של הקוד.

פורסם
  • מחבר

תודה לכולם. הצלחתי לבסוף.

באמת קיצרתי חלק ניקר מהתוכנית כי אכן היא הייתה מסובכת מידי.

בכל אופן תודה על התגובות המהירות :xyxthumbs:

ארכיון

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

דיונים חדשים