C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[38309] Re:오류가 납니다. 평균을 구하는 겁니다.
이현진 [cyberpd] 819 읽음    2004-12-08 08:54
정확히 어떠한 에러가 발생하는지, 에러메시지를 알려주셔야 다른 분들이 문제의 원인을 좀더 쉽게
확인해 볼 수가 있을 듯합니다.


: float avg ( int *pt);             <-- 아래에는 TForm1의 메서드로 avg 함수를 정의 했는데, 여기에는 일반 전역 함수로 정의되어 있네요.
: const  int N = 4;
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     int test [4];
:     for (int i = 0; i < N; i++)
:     {
:         double ans = avg (test);
:         AnsiString fMg;
:         fMg = Memo1->Text;
:         Button1->Caption = FloatToStr(avg(StrToFloat(Memo1->Text)));   <<--- avg 함수에서 어떠한 값도 반환하지 않기 때문에 의도되지 않은 결과가 발생할 수 있습니다.
:     }
: }
: float __fastcall TForm1::avg (int *pt)
: {
:     float sum =0;
:     for (int i = 0; i < N; i++)
:     {
:         sum = sum + *(pt + i);           <<--- 합계만 구하고, 평균 값의 반환이 없네요.
:     }
: }
: 오류가 나가든요


////////////////////////////////////////////////////////////////////////////
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    int test[100]={0,};
    int count=Memo1->Lines->Count;  //<-- 메모장에 입력된 라인 수
    if(count==0) return;                         //<-- 입력된 라인이 없으면 처리 안함.

    ZeroMemory(test,sizeof(test));
    for(int index=0; index<count; ++index) {
        try {
            test[index]=StrToInt(Memo1->Lines->Strings[index]); //<-- 메모장의 각 라인에서 수치를 가져와 test[]에 저장.
        } catch(const EConvertError& e) { //<-- 수치가 아닌 잘못된 데이터 입력시 에러메시지 보여주고 처리 안함.
            ShowMessage("invalid data...");
            Memo1->Lines->Clear();
            return;
        }
    }
    float result=avg(test,count); //<-- 평균값 구하기
    AnsiString strResult;
    strResult.sprintf("Average=%3.2f", result);
    Label1->Caption=strResult;
}
//---------------------------------------------------------------------------

float __fastcall TForm1::avg (int *pt, int count) //<-- 단순 포인터만 넘기면 가변 길이 배열의 경우 데이터 개수를 알지 못하기 때문에, 데이터 개수를 알려주는 count 파라미터 추가.
{
    float sum =0.0f;
    for (int i = 0; i < count; i++)
    {
        sum = sum + *(pt + i);
    }
    return (sum/count); //<-- 평균값 반환.
}

+ -

관련 글 리스트
38307 오류가 납니다. 평균을 구하는 겁니다. 쥬신 764 2004/12/08
38309     Re:오류가 납니다. 평균을 구하는 겁니다. 이현진 819 2004/12/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.