c++ 질문입니다 도와주세요 ㅠㅠ
핑크펄
프로그램의논리를플로차트로작성하여업로드하세요.
#include iostream
using namespace std;
struct WORD
{
char* str;
int count;
};
int max_of_words =10;
int num_of_words =0;
WORD *words = NULL;
int FindWords(const char *s);
void Increase();
void CountWords(char *s);
void ShowWords();
void RemoveAll();
int main()
{
words = new WORD[max_of_words];
memset(words, 0, sizeof(WORD) * max_of_words);
cout 문자열을 입력하세요. 종료하려면 Ctrl+Z을 입력하세요.endl;
while(true)
{
char buffer[128];
cin.getline(buffer, 128);
CountWords(buffer);
if(cin.eof())
break;
}
ShowWords();
RemoveAll();
return 0;
}
void CountWords(char *s)
{
const char *delimiter = ,.?!\t\n;
char *token = strtok(s, delimiter);
while(token != NULL)
{
int index = FindWords(token);
if(index == -1)
{
if(num_of_words = max_of_words)
Increase();
else
{
words[num_of_words].str = new char[strlen(token) +1];
strcpy(words[num_of_words].str, token);
words[num_of_words].count =1;
num_of_words++;
}
}
else
{
words[index].count++;
}
token = strtok(NULL, delimiter);
}
}
int FindWords(const char *s)
{
for(int i = 0; i num_of_words ; i++)
if(strcmp(words[i].str, s) == 0)
return i;
return -1;
}
void Increase()
{
max_of_words +=10;
WORD *tmp = words;
words = new WORD[max_of_words];
memcpy(words, tmp, sizeof(WORD) * num_of_words);
delete [] tmp;
}
void ShowWords()
{
for(int i=0; inum_of_words; i++)
cout words[i].str : words[i].count 번 사용 endl;
}
void RemoveAll()
{
for(int i=0; inum_of_words; i++)
delete [] words[i].str;
delete [] words;
}
비주얼 스튜디오 2008로 작성한것입니다.
과정을 플로우 차트로 설명 하라는데 잘 이해가 안되서 못하겠습니다. ㅠㅠ
도와주세요 ㅠㅠ
-
회사원
잘 이해가 안 된다고 했는데….
그럼 이해되는 부분은 무엇이고 이해 안 되는 부분은 무엇인지 알려준다면 답변하는 사람들이 답변 달기 편할 듯싶군요.