느낀점 ¶
문제에 입력에 대한 정확한 설명이 없어서, 대강 소스에 넣었다.
그냥 파일로 출력할까 하다가, 어떻게든 반복을 피해보고자 버퍼를 넣었더니 더 복잡해졌다.
음... @.@ 파일은 접근이 어렵다는 단점이..;;ㅁ;;
그냥 파일로 출력할까 하다가, 어떻게든 반복을 피해보고자 버퍼를 넣었더니 더 복잡해졌다.
음... @.@ 파일은 접근이 어렵다는 단점이..;;ㅁ;;
소스 ¶
~cpp #include <iostream> #include <fstream> using namespace std; int input[11] = {3,3,3,3,3,3,3,3,3,3,3} ; const int INPUT_MAX=11; int x; int number_of_sum=0; int number_of_multiply=0; int Horner(int); void main() { const int SIZE_OF_LINE=5; const int NUMBER_TO_CHAR=48; const int SIZE_OF_BLOCK=4; cout << "x의 값을 입력해주세요.>>"; cin >> x; ofstream outputFile("aswer.txt"); char write_temp[SIZE_OF_LINE][8+INPUT_MAX*SIZE_OF_BLOCK]; for (register int i=0; i<8+INPUT_MAX*4; i++) write_temp[0][i]=write_temp[2][i]=write_temp[4][i]='='; strcpy(write_temp[1]," |index|"); strcpy(write_temp[3]," | data|"); for (register int i=0; i<INPUT_MAX; i++){ write_temp[1][i*SIZE_OF_BLOCK+8]=write_temp[1][i*SIZE_OF_BLOCK+10]=write_temp[3][i*SIZE_OF_BLOCK+8]=write_temp[3][i*4+10]=' '; if (10<=i) write_temp[1][i*SIZE_OF_BLOCK+8]=i/10+NUMBER_TO_CHAR; write_temp[1][i*SIZE_OF_BLOCK+9]=i%10+NUMBER_TO_CHAR; if (10<=input[i]) write_temp[3][i*SIZE_OF_BLOCK+8]=input[i]/10+NUMBER_TO_CHAR; write_temp[3][i*SIZE_OF_BLOCK+9]=input[i]%10+NUMBER_TO_CHAR; write_temp[1][i*SIZE_OF_BLOCK+11]=write_temp[3][i*SIZE_OF_BLOCK+11]='|'; } for (register int i=0; i<SIZE_OF_LINE; ++i){ for (register int j=0; j<8+INPUT_MAX*4; ++j) outputFile << write_temp[i][j]; outputFile << '\n'; } outputFile << "# Horner Function Value ----> "<< Horner(0) << "\n"; outputFile << "# Horner ADD Count ----> "<< number_of_sum << "\n"; outputFile << "# Horner Multiply Count ----> "<< number_of_multiply << "\n"; outputFile.close(); } int Horner(int number) { if (INPUT_MAX-1==number) return input[number]; else{ ++number_of_multiply; ++number_of_sum; return Horner(number+1)*x+input[number]; } }
저에게 할말~'ㅇ')/ ¶
프로그램 돌리면 에러가 뜹니다.
1. 먼저 헤더 파일에 .h를 붙여 주시고요.
2. strcpy를 썼으면 #include <string.h> 헤더파일도 써주셔야 할듯.
3. 또한 register int i 이건 맨처음 한번만 선언해주시고 나머지 i에서는 그냥 i만 써주셔야 할듯 해요. 반복 선언은 좀 무리일듯 .제 짧은 소견이었습니다.-남도연
└ 헤더파일 에러나는건 표준이전에 나온 컴파일러(97년 이전)를 써서 그러는데 C++표준 헤더는 확장자가 붙지 않습니다. 97년 이후에 나온 컴파일러를 써보세요. - 이재혁
└ 그렇군요!! 근데 그걸 어디서 구한담;; 난감하네요 ^^;; 조언 감사합니다 -남도연
1. 먼저 헤더 파일에 .h를 붙여 주시고요.
2. strcpy를 썼으면 #include <string.h> 헤더파일도 써주셔야 할듯.
3. 또한 register int i 이건 맨처음 한번만 선언해주시고 나머지 i에서는 그냥 i만 써주셔야 할듯 해요. 반복 선언은 좀 무리일듯 .제 짧은 소견이었습니다.-남도연
└ 헤더파일 에러나는건 표준이전에 나온 컴파일러(97년 이전)를 써서 그러는데 C++표준 헤더는 확장자가 붙지 않습니다. 97년 이후에 나온 컴파일러를 써보세요. - 이재혁
└ 그렇군요!! 근데 그걸 어디서 구한담;; 난감하네요 ^^;; 조언 감사합니다 -남도연
register int i를 여러번 쓴 것은 메모리 낭비를 적게하려는 생각이었습니다. 그냥 메모리도 아니고 레지스터 메모리를 프로그램 시작부터 끝까지 잡고있을 필요는 없을것 같았답니다.^^
그리고 제가 사용한 컴파일러(비주얼 .NET) 은 저에게 말하면 미소녀는 무료, 일반인은 밥 한끼, 미소년은 무한끼에 FTP나 HTTP로 제공해드리고 있습니다.^^
참고로 올려진 소스들은 모두 정상적인 작동 테스트를 거친 뒤였습니다.^^ - 조현태
그리고 제가 사용한 컴파일러(비주얼 .NET) 은 저에게 말하면 미소녀는 무료, 일반인은 밥 한끼, 미소년은 무한끼에 FTP나 HTTP로 제공해드리고 있습니다.^^
참고로 올려진 소스들은 모두 정상적인 작동 테스트를 거친 뒤였습니다.^^ - 조현태