• 검색 결과가 없습니다.

제2장 프로그래밍 기초

N/A
N/A
Protected

Academic year: 2022

Share "제2장 프로그래밍 기초"

Copied!
7
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

입력 출력 정보를 입력하시오.

학과: 소프트웨어학과 학년: 1

입학년도: 13 이름: 고길동

나는 소프트웨어학과 1학년 13학번 고길동입니다.

(2) 자료구조 설계

(3) 알고리즘 설계

(4) 프로그램 구현

char dept[20]; // 학과를 저장할 문자열 변수 int grade; // 학년을 저장할 정수형 변수 int year; // 입학년도를 저장할 정수형 변수 char name[20]; // 이름을 저장할 문자열 변수

1. “정보를 입력하세요.” 안내문을 출력한다.

2. 학과, 학년, 학번, 이름을 입력 받는다.

3. 자기 소개 글을 출력한다.

#include <stdio.h> // 헤더 파일 포함 void main()

{

char dept[20], name[20]; // 지역변수 선언

int grade, year; // 지역변수 선언

printf("정보를 입력하세요.\n\n"); // 안내문 출력 printf("학과: "); scanf_s("%s", dept, 20); // 학과 입력 printf("학년: "); scanf_s("%d", &grade); // 학년 입력 printf("입학년도: "); scanf_s("%d", &year); // 입학년도 입력 printf("이름: “); scanf_s("%s", name, 20); // 이름 입력

printf("\n나는 %s %d학년 %d학번 %s입니다.\n", dept, grade, year, name);// 자기소개 출력 }

(2)

(5) 실행 화면

2.2 세 수의 최대 차이 구하기

(0) 문제 정의

세 개의 실수를 입력 받고, 그 중에서 가장 큰 값과 가장 작은 값의 차이를 구하여 출력하라.

(1) 요구사항 분석

입력 출력

세 개의 실수를 입력하세요.

첫 번째 수: 47.6 두 번째 수: -20.6 세 번째 수: 100.1

가장 큰 수와 가장 작은 수의 차이 = 120.5

(2) 자료구조 설계

(3) 알고리즘 설계

- 프로그램의 흐름

1. 세 실수를 입력받는다.

2. 세 실수의 최대값과 최소값을 구한다.

3. 최대값과 최소값의 차이를 계산한다.

4. 결과값을 화면에 출력한다.

- 세 수(a,b,c)의 최대값을 구하는 알고리즘 1. a, b를 비교한다.

2. a, c를 비교한다.

float num1, num2, num3; // 사용자가 입력하는 세 개의 수를 저장할 변수

float max; // 가장 큰 수를 저장할 변수

float min; // 가장 작은 수를 저장할 변수

float diff; // 가장 큰 수와 가장 작은 수의 차이를 저장할 변수

(3)

float find_max(float num1, float num2, float num3); // 프로토타입 함수를 정의한다.

float find_min(float num1, float num2, float num3); // 프로토타입 함수를 정의한다.

void main() {

float num1, num2, num3; // 입력한 세 수를 저장할 변수 float max, min, diff; // 지역변수 선언

printf("세 실수를 입력하세요.\n"); // 안내문을 출력한다.

printf("첫 번째 수: "); scanf("%f", &num1); // 첫 번째 수를 입력한다.

printf("두 번째 수: "); scanf("%f", &num2); // 첫 번째 수를 입력한다.

printf("세 번째 수: "); scanf("%f", &num3); // 첫 번째 수를 입력한다.

max = find_max(num1, num2, num3); // 가장 큰 수를 알아낸다.

min = find_min(num1, num2, num3); // 가장 작은 수를 알아낸다.

diff = max – min; // 차이를 계산한다.

printf("\n세 수의 가장 큰 수와 가장 작은 수의 차이 = %f\n", diff);// 결과값을 출력한다.

}

float find_max(float a, float b, float c) // 함수 구현 {

float max; // 지역 변수 선언

if (a > b)

if (a > c) max = a; // a>b, c 인 경우 else max = c; // c>a>b 인 경우 else

max = (b > c) ? b : c; // b>a,c 또는 c>b>a인 경우

return max; // 최대값 리턴

}

float find_min(float a, float b, float c) // 함수 구현 {

float min = a; // 지역변수 선언과 초기화

if (min > b) min = b; // min보다 b가 작으면 b를 min으로 설정 if (min > c) min = c; // min보다 c가 작으면 c를 min으로 설정

return min; // 최소값 리턴

}

(4)

(5) 실행 화면

2.3 평균과 표준편차

(0) 문제 정의

최대 10개의 0보다 큰 실수를 사용자로부터 입력 받고, 평균과 표준편차를 구하여 출력하는 프로그램을 작성하라. 단, 평균과 표준편차를 소수점 이하 두 자리까지 출력하라.

(1) 요구사항 분석

문제의 요구사항에 의하여 최대 10개의 실수를 입력 받아야 한다. 따라서, 실수를 입력 받는 도중에 입력을 중단할 수 있는 방법이 있어야 한다. 여기에서는 다음과 같은 방법을 사용하기로 한다.

l 사용자가 최대 10개의 데이터를 입력하도록 제어한다.

l 사용자가 0보다 작은 수를 입력하면 입력을 중단한다.

l 사용자가 입력한 수의 숫자를 세어서 데이터의 수를 결정한다.

l 입력한 데이터에 대한 평균과 표준편차를 구하여 출력한다.

입력 출력

최대 10개의 실수를 입력하세요.

입력을 종료하려면 0 이하의 수를 입력하세요.

숫자 1: 68.9 숫자 2: 96.7 숫자 3: 80.5 숫자 4: 75.4 숫자 5: -1

평균 = 80.38 표준편차 = 10.28

(2) 자료구조 설계

float num[10]; // 입력한 실수를 저장할 변수 선언

int n; // 사용자가 입력한 데이터의 수

float avg; // 평균값을 저장할 변수 선언 float stdev; // 표준편차를 저장할 변수 선언

(5)

2. 데이터의 수 n을 0으로 초기화 한다.

3. 만일 (n < 10)이면 다음을 반복한다.

4. 사용자에게 n 번째 데이터를 입력하라고 안내문을 출력한다.

5. 사용자가 입력한 데이터를 배열 num[n]에 저장한다.

6. 만일 사용자가 입력한 값이 0보다 크면 7. n을 증가시킨다.

8. 그렇지 않고 입력 값이 0보다 작다면 9. 반복문을 중단한다.

- 평균을 구하는 알고리즘

  

 ⋯ 

 

  

1. sum = 0 // 임시 변수 sum을 0으로 초기화 한다.

2. k=0부터 k<n까지 k를 증가시키면서

3. sum += num[k] // 합에 배열의 원소를 더한다.

4. avg = sum / n; // 평균을 구한다.

- 표준편차를 구하는 알고리즘

  

   ⋯  

 

  

 

 

  

    

  

 

  

1. sqsum = 0 // 임시 변수 ssum을 0으로 초기화 한다.

2. k=0부터 k<n까지 k를 증가시키면서

3. diff = num[k] – mean; // 배열의 원소와 평균의 차이를 구한다.

4. sqsum = sqsum + diff*diff; // ssum에 차이의 제곱을 더한다.

5. variance = sqsum / n; // 분산을 구한다.

6. stdev = sqrt(variance); // 표준편차를 구한다.

(6)

(4) 프로그램 구현

/* stdev.c by J-H Ahn 2019 */

#include <stdio.h>

#define NUMMAX 10 // 데이터의 최대 갯수

void get_data(); // 프로토타입 함수 선언

float calc_average(); // 프로토타입 함수 선언 float calc_stdev(float mean); // 프로토타입 함수 선언

float num[NUMMAX]; // 전역변수 선언

int n; // 전역변수 선언

void main() {

float avg, stdev; // 지역변수 선언

get_data(); // 데이터를 입력받고

avg = calc_average(); // 평균을 구하고 stdev = calc_stdev(avg); // 표준편차를 구한다.

printf("\n평균 = %6.2f\n", avg); // 결과를 출력한다.

printf("표준편차 = %6.2f\n\n", stdev);

}

void get_data() // 데이터 입력 함수의 구현

{

printf("최대 10개의 실수를 입력하세요.\n"); // 안내문 출력 printf("입력을 종료하려면, 0 이하의 수를 입력하세요.\n");

n = 0; // 데이터의 수를 0으로 초기화한다.

while (n < 10) // n<10이면 블록을 계속 반복한다.

{

printf("숫자 %d: ", n+1); // 안내문 출력

scanf_s("%f", &num[n]); // 입력 데이터를 변수에 저장한다.

if (num[n] > 0.0) n += 1; // 데이터가 0보다 크다면 데이터의 수를 증가시킨다.

else break; // 아니면 반복문을 벗어난다.

} // while 블록의 끝

}

float calc_average() // 평균을 계산하는 함수의 구현 {

float sum, avg; // 합, 평균을 저장할 지역 변수 선언

int k; // 반복문 제어 변수 (루프 변수)

sum = 0.0; // 합 초기화

for (k=0; k<n; k++) // k=0부터 k<n까지 k를 증가시키면서 sum += num[k]; // 임시 변수 sum에 배열의 원소를 더한다.

avg = sum / (float)n; // 평균을 구한다.

return avg; // 평균을 리턴한다.

}

#include <math.h> // sqrt() 함수의 프로토타입 함수가 들어있다.

float calc_stdev(float mean) // 표준편차를 계산하는 함수의 구현 {

float sqsum, diff, variance, stdev; // 제곱 합, 차이, 분산, 표준편차를 저장할 변수 선언

(7)

(5) 실행 화면

참조

관련 문서

블록형 프로그래밍 학습에서 텍스트형 프로그래밍

(Heat Conduction on the Steady State Condition)...

제2장 한국경찰의 역사적 제도... 제2장

영업의 개시는

영업의 개시는

프로그래밍

제2장

프로그래밍