תרגיל בC, סוויצ' בתוך while בעיה בקלט. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תרגיל בC, סוויצ' בתוך while בעיה בקלט.


pain_killer12

Recommended Posts

שלום חברים,

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

זה לא טוב, אני צריך שכמו בשאר הוא ירד שורה אחת בלבד ואז יחכה לקלט.

אם מקישים 1 צריך להכניס 2 מילים והוא ידפיס אם הן שוות 0, 1 אם השניה גדולה יותר, 1- אם הראשונה גדולה יותר (לקסיקוגרפית).

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

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

אם מקישים 4, צריך להכניס מחרוזת והתכנית מדפיסה אותה בלי רווחים.

סה"כ תכנית לא קשה בכלל, רק הקלט של 4 עושה לי בעיות.

אהיה אסיר תודה אם תוכלו לעזור לי בזה.

מצ"ב הקבצים.

תודה מראש.

[attachment deleted by admin]

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

תנסה להוסיף fflush בהתחלה של הפונקציות שלך. אני לא סגור ב-100% שזו הבעיה, אבל שווה לנסות.

חוץ מזה, יש לך באג די חמור בתכנית: בכל המקומות בהם אתה קולט שורה כלשהי, אתה מקצה מראש מערך בגודל 80, קורא לתוכו, ואז משנה את הגודל שלו. אם המשתמש הכניס מחרוזת באורך גדול מ-80, אז תהיה לך דריכת (זה לא משנה שאחר כך אתה משנה את הגודל של המערך, כי יכול להיות שכבר דרכת על חשוב).

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

תודה רבה ידידי שניצל, עובד כמו גדול.

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

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

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

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

http://en.wikipedia.org/wiki/Fflush

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

הקצאות ושחרור הן פעולות מאוד לא יעילות. עדיף להימנע מלבצע אותן שוב ושוב. בכלל, אם אתה מראש יודע שאתה צריך רק 80 תווים, אתה אפילו יכול להמנע מהקצאה דינמית לחלוטין ופשוט להגדיר מערך בגודל 80.

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

ארכיון

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

×
  • צור חדש...