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

שאלה בשפת C


the crazy boy

Recommended Posts

האם יש אפשרות לקלוט מספר בעל כמה מספרים למערך. וכל מספר יהווה במערך משתנה.

למי שלא הבין:

המשתמש יכתוב 13245

והמסרים יקלטו מערך של נגיד [5]N

זאת אומרת ש[0]N יהיה שווה ל1 וכו' עד ל[4]N יהיה שווה 5.

אם כן איך כותבים את זה?

תודה לעוזרים!!!

:yelclap:

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

אופציה א:

מה ש-exercise אמר, אבל לזכור שאתה צריך להמיר אותם מתווים (char) למספרים. חוץ מזה, עדיף להשתמש ב-getchar או scanf.

אופציה ב:

לקלוט לתוך מספר אחד, ואז לבודד אותו לספרות באמצעות פעולות חילוק ומודולו.

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

א. זה בדיוק מה שאמרתי. אתה צריך לדאוג להמיר אותם (ע"י חיסור '0').

ב. אתה צריך להשתמש בפעולות חילוק ומודולו (הוצאת השארית מהחילוק). לדוגמה, הפעולה i%10 מחזירה לך את שארית החילוק של i ב-10, שזה ספרת האחדות של המספר.

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

אוקיי הצלחתי...

לקחתי את האפשרות א'. יותר פשוטה לפי דעתי...

נ.ב

אם אני הולך לפני אפשרות ב'. ונגיד מחלק את 12345 ב1000 אז יוצא 1.2345 אז אני צריך להשתמש במשתנה מסוג CHAR בשביל שהוא יקלוט רק מספר אחר אחרי הנקודה?

ותודה על העזרה :)

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

חילוק אינטג'רי של 12345 ב 1000 יתן לך 12 שלם. חילוק אינטג'רי (חילוק של משתנים מטיפוס int) יתן לך רק את החלק השלם ו"יזרוק" את השארית, גם אם היא גדולה מחצי.

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

אוקיי קצת התבלבלתי אבל עכשיו הכל מובן.

בשביל לפרק מספר למערך עושים את זה:

for (i=0;i<5;i++)
{
b[i]=n%10;
n=n/10;
}

ואז זה עובד טוב....

אופצייה ג'-

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

אז עפתי למבחן :) שיהיה לי בהצלחה :silly:

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

אבל אם אני משתמש בSCANF וכותב שם

 %D %D %D %D %D

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

נ.ב

המבחן היה קל.

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

אני אומר לך על דרך ג' (קליטת מחרוזת) ואז אתה בקלות לעובר עם לולאה על הקלט ופשוט עושה חיסור:

ch[i] = ch[i] -'0';

זה מכניס לך את הערך בצורת int לתוך המערך בצורה יותר יעילה כי כל תא מקבל מספר מ-0 עד 9 ו-char יותר חסכוני מ-int

int זה 8 ביט לעומת 2 ביט של ה-char

ואת הלולאה אתה ממשיך עד שאתה מוצא '\0' (סוף מחרוזת) שזה פשוט הספרה 0

whlie(ch[i] != 0)...

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

int הוא 4 בתים, ו-char הוא בית אחד. אין לי מושג איך הגעת ל-8 ביט ו-2 ביט.

חוץ מזה, כשתכתוב תוכניות למערכות עם מעט מקום, אז תדאג לחסוך. אל תנסה לחסוך בזכרון כשאתה כותב תוכנית של 3 שורות.

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

באפשרות א, הכוונה הייתה להשתמש בלולאה, ולקלוט באמצעות c% ולא d%.

באפשרות ג', הכוונה הייתה לקלוט באמצעות s% לתוך מחרוזת (מערך של char).

אהה אוקיי..... הבנתי :)

johndou ,

לא הכי למדנו את זה...

למעשה לא למדנו את זה בכלל.

את המחרוזת הזאת...... :S

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

ארכיון

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

×
  • צור חדש...