본문 바로가기

컴퓨터219

vector를 sort 한 이후 문제가 생길 때 자신이 만든 비교함수(binary predicate)를 이용하여 vector 를 비교를 하고자 했는데 에러가 난 상황. 이 경우 주로 sort 를 두 번째 하려고 할 때 에러가 발생. 그렇다면 binary predicate 가 잘못 정의되었을 가능성이 있다. 환경 : Visual C++ 6.0 on Windows XP SP3 (급해서 일단 VC 6.0 으로 작업. 나도 VC 2010 있다. -_-;;;) 디버그 모드로 실행시켰을 때, 다음과 같은 에러가 났다. Access violoation. 이 에러는 일반적으로 접근하지 말아야 하는 메모리를 접근했을 때 나타나는 에러로, release mode 라면 다음과 같은 친근한(?) 에러 메세지를 볼 수 있다. 다시 debug mode로 실행시켜서 call s.. 2010. 11. 30.
글자 길이로 정렬하기 종종 쎌에 있는 글자의 길이로 쎌을 정렬하고 싶을 때가 있다. 특히, 칸의 폭을 글자의 폭에 맞게 조절했을 때 어느 한 칸이 유독 길어서 폭이 너무 길어질 때가 있는데, 그 때 어느 칸 때문에 그렇게 길어진 것인지 궁금할 때가 있다. 그 때 이 방법을 사용하면 된다. built-in 함수가 제공되는지는 모르겠는데, 다음과 같이 간단히 알아낼 수 있다. 위 그림과 같이 LEN 함수로 쎌에 있는 글자의 길이를 반환받는다. 그 후 내림차순 정렬을 하면 글자 수가 가장 긴 행이 제일 위쪽으로 올라오기 때문에 가장 긴 글자를 포함한 쏄을 찾을 수 있게 된다. 2010. 11. 25.
프로그램에 익숙해지기 그러면 안된다. 익숙함이란 결국 '얽메임'이라고 할 수도 있다. 자신이 주로 쓰는 것을 '잘' 사용하는 것은 문제가 안 되지만, 그것'만' 사용할 줄 아는 것은 문제가 된다. 나는 언젠가 이런 고민을 한 적이 있다. '이 프로그램을 잘 배워서 매우 능숙해 질 것인가?' 그런데 조금 더 생각을 해보니 그것은 많은 제약을 의미했다. 곧, 그 프로그램을 사용할 수 있을만한 많은 조건이 갖추어졌을 때만 사용할 수 있다는 것, 그리고 그 프로그램이 적합하지 않은 경우에는 어떻게 해야 하는가, 하는 문제. JVM 위에서 돌아가는 프로그램에 익숙해졌다면 아마도 메모리가 충분하지 않은 환경에서는 그것을 사용할 수 없을지도 모르고, 윈도우즈에서 돌아가는 프로그램에 익숙해 졌다면 리눅스나 맥에서는 그 작업을 못할 수도 있.. 2010. 11. 5.
sumif, sumifs : 조건에 맞는 칸만 더하는 함수 주어진 조건을 만족하는 행의 특정 열의 값들을 더하고 싶다면 sumif 나 sumifs 함수를 이용하면 된다. 조건이 하나이면 sumif, 여러 조건을 동시에 만족해야 한다면 sumifs 를 사용하면 된다. 우선 sumif 부터 보면, 사용법은 다음과 같다. =sumif([조건구간], '조건', [더할 구간]) [조건구간]에서 '조건'에 부합하는 칸들을 찾아서 더한다. 만약 [더할 구간]이 지정되면 [조건구간] 중 '조건'에 맞는 행에서 [더할구간]의 열을 찾아서 더하게 된다. 위의 경우처럼, 만약 '조건'을 30 이하로 하면, 조건에 맞는 칸에 해당하는 행의 더할 구간의 값을 찾아서 더하게 되므로, 더해지는 값은 붉은 색으로 쓰인 값들이다. 실제 사용 예를 보면 다음과 같다. 실제 사용된 수식은 다음과.. 2010. 10. 27.