עזרה!!!

liatbi30

New member
עזרה!!!

צריכה את עזרתכם בשפת C

התרגיל: 3. כתוב תכנית הקולטת 20 מספרים שלמים תלת ספרתים. התכנית תדפיס את כל המספרים עם ספרה 5.
דוגמא:
קלט – 150, 314, 557, 157, 120, 380
פלט – 150, 557, 157

כתבתי את התכנית אבל כל פעם שאני רושמת מס' שמכיל 5 הוא כבר מדפיס לי את המספר אני צריכה שהוא ידפיס רק אחרי שהוא קלט את המספרים



#include<stdio.h>
int main()
{
int num,i;
for(i=0;i<20;i++)
{
printf("\nEnter 3 digit number:\n");
scanf("%d",&num);
if(num/100==5||num/100%10==5||num%10==5)
{
printf("\nThe number:%d\n",num);
}
}
return 0;
}
 

nocgod

New member
לצערך...

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

את לעומת זאת עשית:

for i = 0 to 20
read a number
if number has 5 print it

מה שאת צריכה לעשות זה לשמור את כל האיברים שקראת אם הם מכילים 5
ואז בסוף הלולאה לעבור על המערך בו שמרת את האיברים ולהדפיס אותם
או לשמור את כל המספרים שקראת ואז בסוף הקריאה לעבור על כל המספרים שקראת ואם הוא מכיל 5 להדפיס אותו...
 

liatbi30

New member
מערך?

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

nocgod

New member
תראי

אם ביקשו ממך להדפיס את זה רק בסוף הקליטה של כל המספרים את חייבת להשתמש במערך של int או לייצר string שיכיל את המספרים מפוסקים ברווח אבל אני מניח שלא לזה התכוון המשורר.
אם לא למדתם מערכים אז אולי תבדקי עם המרצה/מתרגל שלך למה התכוונו, אם בזמן קליטת המספרים להדפיס את המספר שמכיל 5 או בסוף הקלט.
שימי לב שכדי לעשות את זה בסוף הקלט את חייבת לשמור איפשהו את הקלט הזה, אחרת הוא הולך לאיבוד בכל איטרציה אם תשמרי אותו כל הזמן במשתנה num.

איך יכול להיות שעוד לא למדתם מערכים? אם את לומדת במכללה/אוניברסיטה כבר אמצע סמסטר, כל הסטודנטים שאני מתרגל כבר למדו מערכים...
int numArr[20]

נראה מוכר?
 

liatbi30

New member
המלחמה...

שהייתה בדרום עיכבה אותנו בחומר וגם חלק מהכיתה מעכבים את אלה שכבר "פחות או יותר" הבינו את החומר למדנו את המושג HELP שאם אני רוצה להחליף את הערכים של המשתנים כלומר :

A=5
B=8
אז HELP=A
A=B
B=HELP

משהו בסגנון האם זה משהו שיכול לעזור לי במקרה הזה ??
 

nocgod

New member
אני במקרה גם מהדרום

ו8 ימים המכללה שלי לא עבדה מאותה הסיבה... אי פעילות של המוסד זה לא סיבה...
בכל מקרה
משתנה עזר נוח כדי להחליף בין ערכים, לא כדי לשמור 20 ערכים שקראת
כמו שאמרתי
תיצרי קשר עם המרצה/מתרגל ותשאלי האם צריך להציג את המספרים שמכילים 5 אחרי קליטת כל המספרים או בתהליך הקליטה.
אם בתהליך הקליטה אז נראה שענית על התשובה בסדר גמור
אם בסוף הקליטה אז את חייבת לשמור איפשהו את הערכים שקראת ואז לעבור עליהם בלולאה ולבדוק אחד אחד אם הוא מכיל 5 ולהדפיס אם כן
 

liatbi30

New member
כמו שכתבתי לפני כן

יש עוד סיבה והיא שיש תלמידים שמעכבים אותנו ... כתבתי לו כבר מייל, בכל מקרה אם ברצוני לשמור את הערכים ולא ידוע לי כמה מספרים יכילו את המספר 5 אז מה אני עושה?
 

nocgod

New member
אז את תשתמשי במערך

תקלטי 20 מספרים ותשמרי אותם במערך
בסוף הקלט תעברי על המערך ותדפיסי רק את המספרים שמכילים 5...

int arr[20]
int i;

for (i = 0; i < 20; i++)
{
scanf("%d", &arr[0]);
}

for(i = 0; i < 20; i++)
{
if (arr % 10 == 5 || (arr / 10) % 10 == 5 || (arr / 100) % 10 == 5)
printf("%d ", arr);
}
printf("\n");
 

BravoMan

Active member
שימי לב לתנאי הבדיקה שלך!

ספציפית לחלק האמצעי שלו.

למשל, כמה זה 10 % 100 / 150 למשל?
 

liatbi30

New member
צודק

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