עזרה בשפת C!

vaska57

New member
עזרה בשפת C!

שלום!! אני מבקש את עזרכתם בנושא שפת C המשימה שלי היא כזאת: כתוב תוכנית שקולטת טקסט (תו אחרי תו) וסופרת מילים. מילה היא כל אוסף אותיות שישנו בטקסט. בין המילים מפריד לפחות רווח אחד. אם יש תו אחר כלשהו שאינו אות – התוכנית תודיע: "הטקסט מכיל תוים אסורים" ותעצור. בכל מקרה יש להדפיס כמה מילים נספרו בטקסט עד לעצירה. ניסיתי לעשות את התרגיל אבל במקום שיספור לי מילים הוא סופר לי אותיות וגם ובצורה לא נכונה. אנא מכם תעזרו לי בבקשה!!!!!!!!
 

vaska57

New member
התרגיל:

#include <stdio.h> #include <conio.h> void main() { int cnt; int k; char ch; clrscr (); printf("please enter text: "); for(ch=' ';k!='#';) { { scanf("%c",&ch); if ((ch>='a') && (ch<='z')) { if ((ch=' ') || (ch='.') || (ch=',')) cnt++; printf("the number of words is:%d",k); } else { printf("the text is wrong!"); } } } }
 

vinney

Well-known member
תסתכל טוב טוב מה עשית

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

vaska57

New member
כן, זה הבנתי, את ה-CH בטעות

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

selalerer

New member
כמה דברים:

1. תחשוב מהוא תנאי העצירה שלך, מה שאתה צריך זה לולאה כזאת:
ch=getchar(); while(ch<='z'&&ch>='a' || ch==' ') //תוכל להוסיף פה גם אותיות גדולות { //...... }​
2. בכדי לספור מילים, אחד הדברים שאתה צריך לדעת זה האם אתה בתוך מילה. כדאי לך להחזיק משתנה שיהיה 1 אם אתה בתוך מילה (ברגע שהוקלדה אות ראשונה תשים בו 1) ויהיה 0 אם אתה לא בתוך מילה (ברגע שמוקלד רווח ואתה הייתה בתוך מילה שים בו 0 [ואז גם תעלה את המונה של המילים
]). 3. תחשוב מה המצבים בהם אתה יכול לקבל אות (כשאתה בהתחלה, כשאתה באמצע מילה, כשאתה אחרי רווח [לא באמצע מילה]) וטפל בהם בהתאם. 4. תחשוב מה המצבים בהם אתה יכול לקבל רווח (כשאתה בהתחלה, כשאתה באמצע מילה [כלומר היא כרגע הסתיימה] או אחרי רווח אחר) ומה אתה צריך לעשות במצבים האלה. 5. תחשוב מה המצבים בהם אתה יכול לקבל תו לא חוקי (על ההתחלה, כשאתה באמצע מילה או אחרי רווח) ומה אתה צריך לעשות במצבים האלה. 6. רמז אחרון: כל השלבים האלה אתה צריך לבחון בתוך הלולאה. בהצלחה.
 
למעלה