안녕하세요


아래 한번 봐주세요

const int BODY_UPPERCASE_SCORE = 40;
const int BODY_SPECIALWORD_SCORE =5;

string extractWord(string& text)
{
{
{
int i, flag = 0, j = 0;
string firstword = "";
if (text == "")return  "";
for (i = 0; i<text.size(); i++)  //처음부터 문자 끝까지 루프를 돌면서
{
if (isalpha(text[i]))  //알파벳을 만나면
{
firstword.append(text, i, 1);
flag = 1;  //첫번째 단어 찾음 표시
j++;
}
else if (flag == 1)  //단어를 찾았고.. 알파벳이 아니면.. for문 스탑
break;
}
text.erase(0, i);
return firstword;
}
}


return "";
}

string makeUppercase(string text)
{

for (int i = 0; i < text.size(); i++)  //문자열의 길이만큼 루프를 돕니다.
{
text[i] = toupper(text[i]);   //i번째 요소를 대문자로 바꿉니다.
}
return text;  //바뀐 문자열을 리턴합니다
}

-----------------
위 function 들을 사용하여 아래 function 들을 제대로 만들고 싶습니다. 우선 아래 void 에 제가 만들어야 하는것은 string text 안에 BUY, CHEAP, DIPLOMA 같은 단어들이 있는지, 있으면 몇개 있는지 확인해야하고 또 총 단어수와 그중 몇단어가 대문자로된 단어 인지 세어야 합니다 .제가 하려는 buy, cheap 이런 단어 들이  소문자로 되어 있을수도 있은 makeUpper function 을 이용하여 대문자로 만들고 비교하여 몇개가 있는지 세고 싶은데 잘 안되네요 ㅜㅜ

그리고 이것을 이용해 맨 아래 있는 int BodyScore function 에 대문자단어수/총단어수 >= 50 (즉 대문자가 50프로 이상이면) BODY_UPPERCASE_SCORE = 40; 를 리턴, 그리고 BUY, CHEAP 같은 단어들은 한개당 BODY_SPECIALWORD_SCORE =5; 를 리턴 하고 싶습니다.

아래는 제가 function 넣어 만든것인데 void 와 int bodyscore 이 제가 원하는대로 나오지 않아요.. ㅠㅠ string buy, cheap 이런것을은 숫자가 세지지도 않구여
어떻게 해야하나요
-------------------
void analyzeBodyLine(string text, int& nWords, int& nUppercaseWords, int& nSpecialWords)
{
string BUY, CHEAP, DIPLOMA, ENLARGE, FREE, LONELY, MONEY, NOW, OFFER, ONLY, PILLS;
string test;
test = extractWord(text);
string s;
s = makeUppercase(text);

while (test != "")
{
nWords++;
if (isUppercase(test))
nUppercaseWords++;
test = extractWord(text);
}

while (text != "")
{
test = extractWord(text);
s = makeUppercase(text);
if (text == "BUY" || text == "CHEAP" ||  text == "DIPLOMA" || text == "ENLARGE" || text == "FREE" || text == "LONELY" || text == "MONEY" || text == "NOW" || text =="OFFER" || text == "ONLY" || text == "PILLS")
nSpecialWords++;
}
}

int bodyScore(int nWords, int nUppercaseWords, int nSpecialWords)
{
int spamScore = 0;

if ((nWords != 0) && ((nUppercaseWords * 100) / nWords) >= 50)
spamScore += BODY_UPPERCASE_SCORE;
spamScore = spamScore + (BODY_SPECIALWORD_SCORE * nSpecialWords);

return spamScore;


}

감사합니다.