אני לא רוצה שתעשו לי את שיעורי הבית. אני הבאתי את הפונקציה השלישית (בערך, זה קצת התפקשש) Count_Word כפי שכתבתי אותה וקימפלתי אותה כשהיא אמורה לעבוד, אבל לא הצלחתי להבין למה היא פשוט לא.
את הפונקציה כתבתי, לא ביקשתי שיכתבו לי את שיעורי הבית.
סעיפים א' ו-ב' עובדים, הבעיה היא בסעיף ג' (צבוע בכחול שונה) ובפרט בחלק הצבוע באדום בסעיף ג'. ההודעת שגיאה לא ממש ברורה, אני משום מה כבר לא מקבלת אותה על המחשב שלי גם כן.. אבל בתאוריה מה שסעיף ג' אמור לעשות זה לספור את מספר הרווחים וכשהוא מגיע לרווח שלפני המילה המתאימה (נגיד בדוגמא שלמעלה n=5 אז כשהוא מגיע לרווח הרביעי) הוא 'מסמן' בפוינטר את האות הראשונה של אותה מילה וממשיך לרוץ עד הרווח שאחרי המילה, אותה הוא מחליף בבאקסלאש 0 כדי שזה יסומן בתור הסוף. ככה המילה 'מסומנת', ועליה מופעלת הפונקציה השנייה שסופרת את האות הכי פופולארית באותה מילה ומחזירה למשתנה Letter את אותה אות פופולארית וזו מודפסת.
אבל.. לא עובד :\
#include <stdio.h>
int Count_Letter (char* Str, char letter)
{
#define ERROR -1
if ((letter >= 'A' && letter <= 'Z') || (letter >= 'a' && letter <= 'z'))
{
int i=0, count=0;
while (Str[i] != '')
{
if (Str[i] == letter)
{
count++;
}
else
{
if (letter <= 'Z')
{
if (Str[i] == letter + 32)
{
count++;
}
}
else
{
if (letter >= 'a')
{
if (Str[i] == letter - 32)
{
count++;
}
}
}
}
i++;
} // end while
return count;
} // end first IF
else
{
return ERROR;
}
}
/* function 1
returns -1 as error. */
char Popular_Letter (char* Str)
{
int i, countAll[26], mostUsed[2] = {0, -1};
// Count letters
for(i=0; i<26; i++){
countAll[i] = Count_Letter (Str, 'A'+i);
if( mostUsed[0] < countAll[i] ){
mostUsed[0] = countAll[i];
mostUsed[1] = i;
}
}
// This only accrues if only non alphabetical characters exist in the string
if( mostUsed[1] == -1 )
mostUsed[1] = '!'-'A';
return mostUsed[1]+'A';
}
char Count_Word (char* Str, int n)
{
int i=0;
int space=0;
char *temp=0;
char Letter;
while ( /*(Str[i] != '') &&*/ (space <= n) )
{
if (Str[i] == ' ')
{
space++;
}
if (space == n-1){
temp = Str+i+1;
}
if (space == n ){
Str[i]='';
Letter = Popular_Letter (temp); }
i++;
}
return Letter;
}
/******MAIN******/
void main()
{
int i;
/*Q1A*/
printf("%dn",Count_Letter("Jim loves pizza",'z'));/*2*/
printf("%dn",Count_Letter("Jim loves pizza",'Z')); /*2*/
printf("%dn",Count_Letter("I can't believe it's not butter!!!",'y')); /*0*/
printf("%dn",Count_Letter("I can't believe it's not butter!!!",'!')); /*-1*/
/*Q1B*/
printf("%cn",Popular_Letter("Jim loves pizzzza")); /*z*/
printf("%cn",Popular_Letter("Jim loves pizza")); /*i*/
<FONT color=#ff0000> /*Q1C*/
printf("%c\n",Count_Word("aaa abab ccccc",1)); /* 'A' */
printf("%c\n",Count_Word("aaa abab ccccc",2)); /* 'A' */
printf("%c\n",Count_Word("aaa abab