컴퓨터/c관련 숙제

윈도우 프로그래밍

리베리온 2013. 12. 29. 23:37

 

2장인가..3장인가.. 연습문제...

사칙연산하고 10개의 수를 입력받아 더해서 결과값을 출력

마지막은 = 을 입력하면 자동종료 추가...

1번 예제


if (argc < 2) // 명령이(입력개수) 2개가 초과하면

{

cout << "명령행 입력이 없습니다" << end1; return 2; // 입력이 없다 표기해주고

} // 오류가나면 2로 표기해준다

CString strArg = argv[1];

int iPos = strArg.FindOneOf("+-*/"); //int ipos에 사칙연산을 문자열형태로 삽입한다

{

cont <<"사칙 연산을 입력하세요 " << end1; return 3; // 사칙연산을 입력하라 출력

} // 오류가나면 3으로 표기해준다

CString strFrontEnd = strArg.Left(iPos); //문장 왼쪽에서 ipos만큼 출력해준다

CString strBackEnd = strArg.Mid(iPos + 1);// 문장 오른쪽에서 ipos만큼 출력해준다

CString strOperator = strArg.Mid(iPos , 1);//ipos번째부터 1개 출력해준다(사칙연산출력)

int iforntEnd = atoi(strFrontEnd); // 문자열을 정수로 표현한다

int iBackEnd = atoi(strBackEnd); // atoi함수를 사용

int iResult = 0; // iResult 0으로 선언

double iResult = 0.0; // iResult가 실수형값을 받기위해 double을 사용

if (strOperator == "+") iResault = iFrontEnd + iBackEnd;

//strOperator가 +면 값을 더해준다 아래도 -는 빼주고 *라면 곱해준다

else if(strOprtator == "-") iResault = iFrontEnd - iBackEnd;

else if(strOprtator == "*") iResault = iFrontEnd * iBackEnd;

else if(strOpertaor == "/") // 나눗셈일 경우에는

{

if (iBackEnd == 0) // 오른쪽에 숫자가 0이랑 같은경우에는

{

cont << "0으로 나눌 수 없습니다" << end1;

return 4; // 0으로 나눌수없다하고 오류가 나면 4를 표기해준다

}

ifResult = (double)iFrontEnd / ibackEnd; //0이 아닐경우에는 나눠준값을표기

}

cout << (LPCTSTR)strArg << "="; // =을 출력

cout << (strOperator != "/" ? iResult : lfResult);

// strOperator가 “/”가 아니면 iResult를 사용하고 “/”면 lfResult를사용해서소수점까지출력

cout << end1; // 공백







2번 예제

if(argc < 5) // 명령이(입력개수) 5개가 초과하면

{

cout << "명령행 입력이 4개 입니다" <<endl;

return 2; // 명령행 입력이 4개라고 출력 오류시 2표기

}

CString strXPos = argv[1]; // X좌표를 argv[1]에 저장

CString strYPos = argv[2]; // Y좌표를 argv[2]에 저장

CString strWidth = argv[3]; // 가로크기 argv[3]에 저장

CString strHeight = argv[4]; // 세로크기 argv[4]에 저장

int iXPos = atoi(strXPos); // atoi를 이용해서 문자열을 숫자로 바꿔준다

int iYpos = atoi(strYPos);

int iWidth = atoi(strWidth);

int iHeight = atoi(strHeight);

CRect rectTarget(iXPos, iYPos, iXPos+iWidth, iYPos+iHeight);

// 각 객체에 값을 설정 한다

rectTarget.NormalizeRect();

CPoint ptInput; // CPoint(점) 연산자를 입력

cout << "X 좌표와 Y 좌표를 입력하세요" <<endl;// 입력문구

cin >> ptInput.x >> ptInput.y; // X좌표와 Y좌표를 입력한다(scanf)

if(rectTarget.ptInRect(ptInput) == TRUE) cont << "내부" << endl;

else cout << "외부" << endl;

//CPoint를 사용해서 참이 나오면 내부를 출력하고 그 외에는 외부를출력해준다


3번 예제

cout << "더할 숫자 10개를 입력하세요" << endl; //문구 출력

CUIntArray uiArray;

UINT uiSum = 0; //합한값을 넣을수있게 생성하고 0으로 초기화

for (int i=0; i<10; i++) //for문을 사용해서 10개를 출력

{

cout << i+1 << "번째 : ";//1는 0이므로 1~10번째 출력

cin >> uiArray[i]; // 값을 입력

uisum += uiArray[i]; // 입력한값을 모두 더해서 uisum에 저장

}

for (int j=0; j<10; j++) //for문을 써서 10개를 출력

{

cout << uiArray[j]; // 값을 입력한 것을 출력해준다

cout << (j !=9 ? "+" : "=");

// (j가 9가 아니면) 10개의 입력한 숫자들은 더해주고 그이후 11번째는 합을표기

}

cout << uiSum << endl;

4번 예제


cout << "더할 숫자를 입력하세요 (종료 := 입력)" << endl; //문구 출력

CStringList strList;

UINT i=0; //i 생성 0으로 초기화

TCHAR szNumber[100]; //문자열 지정

while (TRUE) //참일경우

{

cout << ++i << "번째 : "; //i수만큼 i번째 출력

cin >> szNumber; // 숫자를 입력

CString strNumber = szNumber;

if (strNumber.Find("=") != -1)break; // =를 입력할 경우 중지한다

strList.Addtail(strNumber);

}


UINT uisum =0; // uisum을 0으로 초기화

POSITION pos = strList.GetHeadPosition();

while (pos) // 그외의경우

{

CString &strNumber = strList.GetNext(pos);

UINT uinumber = atoi(strNumber); // 문자열을 숫자로 바꿔서 입력

uiSum += uiNumber; //uiNumber에 있는 숫자들을 다 더해서 uisum에 저장

cout << uiNumber; // 숫자를 입력

cout << (pos != NULL ? "+" : "="); // 널(공백이 아니면 더해주고) 공백이면 합해준다

}

cout << uisum << endl; // 더한 값을 출력