ABA


"קליטת מספרים למערך בצורה מסוימת בשפת C, עזרה בבקשה"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10288 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10288
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק, -2 נקודות
   02:21   04.03.11   
אל הפורום  
  קליטת מספרים למערך בצורה מסוימת בשפת C, עזרה בבקשה  
 
   אני צריך לקלוט ע"י המשתמש ערכים ממשים למטריצה 3X3 ולעוד מטריצה 1X3

שאת זה אני מן הסתם עושה על ידי מערך 3X3 ומערך חד מימדי בגודל 3

סתם בשביל הנתון אני צריך לקלוט בשורת הכנסה אחת 3 משוואות לא הומוגניות

אם אני רוצה להכניס

x+2y+z=4
3x+5y+z=8
x+y=3

אז אקלוט את זה בשורת קוד אחת

{4,8,3}={{1,1,0},{3,5,1},{1,2,1}}

זאת אומרת שאני חייב ככה להכניס את זה ע"י scanf
יש אפשרות להכניס ככה מספרים למטריצה ממשית?

ואם לא ונניח שאני קולט ככה מחרוזת יש אפשרות איכשהו לאסוף את המספרים להעביר אותם למערך דו מימדי של ממשיים?

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

{4,8,3}={{1,1.543,0},{3.12,5,1},{1.002,2.32,1}}

תודה מראש לכל העוזרים


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  השאלה לא הכי מובנת.. VeNom  04.03.11 09:49 1
  אתה שואל בעצם אם דבר כזה קיים? ldan192  04.03.11 11:08 2
     כן!! זה בדיוק מה שאני שואל כי הבעיה שלי היא eminem 04.03.11 11:14 3
         שים לב שלא הקלדתי רווחים. לא בדקתי קומפילציה אבל לא ldan192  04.03.11 11:21 4
             ככה גם רשמתי מלכתחילה כמו שרשמת eminem 04.03.11 11:28 5
                 אל תעתיק-תדביק כי לך תדע אילו תווים אתה מכניס בדרך ldan192  04.03.11 11:35 6
                     עשיתי בדיוק כמוך eminem 04.03.11 11:45 7
                         לדעתי כי ה-\n בסוף ה-printf נבלע ע''י ה-scanf. נסה להשים בהערה את זה ldan192  04.03.11 11:46 8
                             שוב... לא הבנתי מה הבעיה? eminem 04.03.11 11:58 9
                                 לא רק enter. פשוט הוא ה-scanf בולע את ה-printf ldan192  04.03.11 13:03 10
                                     עובד!!! המון המון תודה רבה, ושוב... eminem 04.03.11 13:19 11
                                         קודם כל, צורת הקליטה של הקלט מובנת לך, נכון? ldan192  04.03.11 13:52 12
                                             צורת כתיבת הקלט מובנת לי eminem 04.03.11 13:56 13
                                                 לא משנה הפרטים הקטנים כרגע בשבילך ldan192  04.03.11 13:58 14
                                         אני יכול לתת לך המלצה שתפתור את הבעיה הזאת תמיד ShocKi  04.03.11 17:45 15

       
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק, 2 נקודות
   09:49   04.03.11   
אל הפורום  
  1. השאלה לא הכי מובנת..  
בתגובה להודעה מספר 0
 
   אתה צריך לקלוט קלט כזה:

{4,8,3}={{1,1,0},{3,5,1},{1,2,1}}


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


instead of using:
int matrix[3][3]; // or if you work with malloc then int** matrix;

use:
double<or float> matrix[3][3] //of if you work with malloc then double<or float>** matrix;


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   11:08   04.03.11   
אל הפורום  
  2. אתה שואל בעצם אם דבר כזה קיים?  
בתגובה להודעה מספר 0
 

double A[3][3];
double X[3];
scanf("{{%lf,%lf,%lf},{%lf,%lf,%lf},{%lf,%lf,%lf}}={%lf,%lf,%lf}",
&A[0][0], &A[0][1], &A[0][2],
&A[1][0], &A[1][1], &A[1][2],
&A[2][0], &A[2][1], &A[2][2],
&X[0], &X[1], &X[2]);


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק, -2 נקודות
   11:14   04.03.11   
אל הפורום  
  3. כן!! זה בדיוק מה שאני שואל כי הבעיה שלי היא  
בתגובה להודעה מספר 2
 
   שכשאני רושם פקודה מהצורה הזאת הוא פשוט לא מתייחס אליה בזמן ההרצה

אבל בקוד אחר שסתם עשיתי איזו בדיקה הוא כן מקבל


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   11:21   04.03.11   
אל הפורום  
  4. שים לב שלא הקלדתי רווחים. לא בדקתי קומפילציה אבל לא  
בתגובה להודעה מספר 3
 
רואה סיבה למה שזה לא יעבוד לך...
מקס', תמיד אתה יכול לבנות מפענח לקסיסקלי-סמנטי בסיסי


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק, -2 נקודות
   11:28   04.03.11   
אל הפורום  
  5. ככה גם רשמתי מלכתחילה כמו שרשמת  
בתגובה להודעה מספר 4
 
   וגם לכל מקרה עשיתי העתק הדבק לשורת הקוד שלך
אין שום שגיאת קומפילציה הוא פשוט לא מיישם את הפקודה לקריאת קלט בזמן ההרצה
אבל בקוד אחר סתם לבדיקה הוא כן עושה את זה בצורה תקינה

מה לדעתך יכולה להיות הבעיה פה?

לגבי מה שהצעת עם בניית מפענח אני ממש לא מבין מה רשמת לי
ב-C אני חדש, רק עכשיו התחלנו קורס בשפה וזו עבודה ראשונה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   11:35   04.03.11   
אל הפורום  
  6. אל תעתיק-תדביק כי לך תדע אילו תווים אתה מכניס בדרך  
בתגובה להודעה מספר 5
 
הינה, תראה:

https://rotter.name/User_files/nor/4d70b267082a80ae.png##


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק, -2 נקודות
   11:45   04.03.11   
אל הפורום  
  7. עשיתי בדיוק כמוך  
בתגובה להודעה מספר 6
 
   בתוכנית לבדיקה והוא עושה לי את זה הכל טוב ויפה
בתוכנית שלי הוא פשוט מדלג על הפקודה אני מצטער אם אני אשמע חצוף אבל יש אפשרות שאעלה את הקוד ורק תציץ לראות מה הבעיה שלי? יתכן מאוד שבעת כתיבה עשיתי שגיאה, אין לי עדיין נסיון כל כך בשפה

התוכנית היא קצרה ורשמתי הערה איפה בדיוק הבעיה שלי

https://rotter.name/User_files/nor/4d70b49a0e624478.txt


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   11:46   04.03.11   
אל הפורום  
  8. לדעתי כי ה-\n בסוף ה-printf נבלע ע''י ה-scanf. נסה להשים בהערה את זה  
בתגובה להודעה מספר 7
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק, -2 נקודות
   11:58   04.03.11   
אל הפורום  
  9. שוב... לא הבנתי מה הבעיה?  
בתגובה להודעה מספר 8
 
   אתה אומר שהפקודה של ה-printf עושה בעיות?
סתם בשביל הבדיקה ניסיתי להסיר אותו ועדיין אותו דבר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   13:03   04.03.11   
אל הפורום  
  10. לא רק enter. פשוט הוא ה-scanf בולע את ה-printf  
בתגובה להודעה מספר 9
 
שלפניו...

תרשום פשוט ;()getchar בין ה-printf ל-scanf.
אני דיי בטוח שזה יפתור את הבעיה


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק, -2 נקודות
   13:19   04.03.11   
אל הפורום  
  11. עובד!!! המון המון תודה רבה, ושוב...  
בתגובה להודעה מספר 10
 
   תסביר לי מה עשינו פה
ולמה זה שינה הכל

ושוב פעם המון תודה רבה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   13:52   04.03.11   
אל הפורום  
  12. קודם כל, צורת הקליטה של הקלט מובנת לך, נכון?  
בתגובה להודעה מספר 11
 
ובנוגע ל-scanf מייד אחרי printf זו בעיה מוכרת.
מכיוון שאלו פקודות אסינכרוניות אז ה-scanf בולע את הקלט שפולט ה-scanf.
בגלל זה ממתינים (בולעים) סנכרונית את סיום ה-printf עם getchar ואז אפשר לקרוא ל-scanf בלי בעיות...


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eminem
חבר מתאריך 14.11.03
4348 הודעות, 1 פידבק, -2 נקודות
   13:56   04.03.11   
אל הפורום  
  13. צורת כתיבת הקלט מובנת לי  
בתגובה להודעה מספר 12
 
   אבל רגע
בנוגע לבעיה שאמרת שיש אחרי printf
זה תמיד ככה עושה בעיות או מתי שמתחשק לו?

כי כמו שאמרתי מקודם ניסיתי להריץ את זה מקודם בקוד אחר וגם מיד אחרי printf ועבד בסדר גמור

ולא הבנתי את המשפט שלך שרשמת

"מכיוון שאלו פקודות אסינכרוניות אז ה-scanf בולע את הקלט שפולט ה-scanf."


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   13:58   04.03.11   
אל הפורום  
  14. לא משנה הפרטים הקטנים כרגע בשבילך  
בתגובה להודעה מספר 13
 
הקטע שאם יש printf ומייד אחריו scanf תדע שיהיו בעיות.
כשהדבקת את הקוד כמו שהוא שלא קדם לו printf אז לא היו בעיות...


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק, 17 נקודות
   17:45   04.03.11   
אל הפורום  
  15. אני יכול לתת לך המלצה שתפתור את הבעיה הזאת תמיד  
בתגובה להודעה מספר 11
 
  
לא משנה מה אתה עושה.. לפני כל פקודת קלט תעשה ניקוי באפר..
פשוט תכתוב את השורה הזאת

flushall();

זה ימנע לך כל כך הרבה בעיות בעתיד.. תתרגל לזה.. לפני כל scanf תמיד תבוא הפקודה הזאת.. אלא אם אתה רוצה במכוון להמנע מכך (ובד"כ ב-C פשוט לא תהייה לך כוונה מכוונת להשאיר את הבאפר כפי שהוא)


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net