분류 | 게시판 |
베스트 |
|
유머 |
|
이야기 |
|
이슈 |
|
생활 |
|
취미 |
|
학술 |
|
방송연예 |
|
방송프로그램 |
|
디지털 |
|
스포츠 |
|
야구팀 |
|
게임1 |
|
게임2 |
|
기타 |
|
운영 |
|
임시게시판 |
|
...
printf(" 프로그램을 시작합니다.\n");
...
...
printf("blah blah"); scanf("blah blah", &a);
printf("blah blah"); scanf("blah blah", &b);
...
printf("1번 메뉴: "); ... blah blah
printf("2번 메뉴: "); ... blah blah
printf("종료는 q: "); ... blah blah
printf("메뉴를 선택: "); ... blah blah
int x, y;정도만 해도 충분합니다. 이외에 정수 두개를 입력하라는 둥의 입력 메시지는 굳이 출력할 필요가 없습니다. 입출력 스타일을 이렇게 딱 정하는 것도 깔끔한 프로그램을 짜는 데 있어 매우 중요합니다. 그리고 파일을 표준 입력으로 받으려면 컴파일된 파일에, 예를 들어 a.exe 가 만들어졌다면,
if ( 2 == scanf ("%d %d ", &x, &y) ) {
....
}
a.exe < input.txt이렇게 해 주면 됩니다. 진짜 파일로 입력을 받으려면 이렇게 하면 되겠죠?
FILE *fp = fopen("input.txt", "r");이렇게 입력값을 따로 주는 이유가 있습니다. 매번 컴파일, 실행할 때마다 여러분들은 1, 2, 3, 4 직접 숫자를 입력하지 않아도 됩니다. 그거 일일이 입력하는 것도 시간이 걸리죠. 혹시 두 정수 x, y들을 코드 안엔 박아두었나요? 값을 바꿀 때마다 일일이 재컴파일 하겠죠. 그런 프로그램은 절대 좋은 게 아닙니다. 100번이든 1000번이든 한 번 짜고 컴파일한 뒤 문제를 발견할 때까지 계속 테스트할 수 있도록 만들어야죠.
if (fp) {
fscanf("%d %d ", &x, &y);
fclose(fp);
}
// 여기서도 굳이 파일이 열리지 않았다는 에러 메시지가 필요할까? 이 부분은 선택에 맡긴다.
5 1 2 3 4 5첫번째 5는 정수의 개수 N입니다. 자신 다음에 정수 5개가 입력된다는 뜻이에요. input.txt 파일을 메모장으로 열어서 적어 줍니다.
#include이것이 컴파일 되어서 average.exe 가 되었다면
double get_total(int n)
{
double tot = 0.0;
int i, x;
for(i = 0; i < n; ++i) {
scanf("%d ", &x);
tot += (double)x;
}
return tot;
}
double get_average(double total, int n)
{
double average = 0.0;
if (n) {
average = total / (double)n;
}
return average;
}
int main()
{
int n;
double average, total;
scanf("%d ", &n);
total = get_total(n);
average = get_average(total, n);
printf("%.2lf %.2lf\n", total, average);
return 0;
}
average.exe < input.txt이렇게 하면 됩니다. 비주얼 스튜디오를 쓴다면 프로젝트 속성을 열어 "Debugging -> Command Arguments"에 간 다음 "< input.txt"를 넣어 주면 되죠.
15.00 3.00
죄송합니다. 댓글 작성은 회원만 가능합니다.