반응형

2.5>Scanner를 이용하여 정수를 3개 입력 받고 이 3개의 수로 삼각형을 만들 수 있는지를 판별하라. 삼각형이 가능하려면 두 변의 합이 다른 한 변의 합보다 반드시 커야 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package HW1_JAVA; //패키지 이름
import java.util.Scanner// 스캐너 클래스의 위치
class triangle{    //triangle class 선언
    void make(int a, int b, int c){ //make 메소드, argument int형 변수 a,b,c
        int ar[]=new int[3]; int temp=0//int형 변수 ar[]선언(크기3), int형 변수 temp 선언및 초기화
        ar[0]=a;ar[1]=b;ar[2]=c; //배열 ar의 각 원소 초기화
        for(int i=0;i<3;i++)  //선택 정렬 알고리즘
        {
            for(int j=i+1;j<3;j++// 배열의 첫번째 원소부터 시작해 각각 한번씩 전부 비교한 후
            {// 뒤에 원소 크기가 피비교되는 원소보다 크면 둘의 자리를 바꿔준다
                if(ar[i]<ar[j])//다만 바로 바꿔주면 변수의 값 하나가 사라져 버리므로
                {            // 빈 물컵(temp)을 이용해 값을 교환해준다.
                    temp=ar[i];
                    ar[i]=ar[j];
                    ar[j]=temp;}}}
        if((ar[0]==0)||(ar[1]==0)||(ar[2]==0)) //변의 길이에 0을 입력한 경우 처리
            System.out.println("변의 길이는 0이 될 수 없습니다.");
        else if(ar[0]<ar[1]+ar[2]) // 삼각형의 형성 조건에 부합한 경우
            System.out.println("삼각형 세 변의 길이가 될 수 있습니다.");
        else //삼각형을 만들지 못한 경우
            System.out.println("삼각형 생성 불가능!!");
    }}
public class MakeTriangle {
    public static void main(String[] args) {
        int x=0int y=0int z=0;  //int 형 변수 x,y,z 선언 및 초기화
        Scanner s=new Scanner(System.in); // 레퍼런스 변수 s 와 Scanner 클래스의 오브젝트 생성
        triangle m=new triangle();//레퍼런스 변수 m과 triangle 클래스의 오브젝트 생성
        while(true){ // 무한 반복
        System.out.println("정수 3개를 입력하세요(-1 -1 -1은 종료)>>");
        x=s.nextInt(); y=s.nextInt(); z=s.nextInt(); //x,y,z를 int형으로 입력해준다.
        if((x==-1)||(y==-1)||(z==-1)) break// x,y,z가 -1일 경우 while문 탈출
        m.make(x, y, z);} //m이가리키는 오브젝트 내의 make 메소드 호출
    }}
 
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > JAVA' 카테고리의 다른 글

정수 오름차순 정렬기  (0) 2017.06.18
하위 문자 모두 출력하기  (0) 2017.06.18
직사각형 충돌  (0) 2017.06.18
윤년 판별기  (0) 2017.06.18
369 게임  (0) 2017.06.18
반응형

삼각형, 사각형, 원을 동시에 표현할 수 있는 공용체를 설계하라. 삼각형은 밑변과 높이, 사각형은 가로와 세로, 원은 반지름만을 저장하도록 하라. 현재의 공용체가 표현하고 있는 도형의 종류는 열거형 변수를 사용하여 나타낸다. 사용자로부터 도형의 종류와 도형의 데이터를 받아서 저장하여 보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
enum figure {TRI, RECT, CIRC};
struct shape{
    enum figure type;
    union{
        struct{int base; int height;} tri;
        struct{int width; int height;} rect;
        struct{int radius;} circ;
    } data;};
int main(void)
{
    struct shape a;
    a.type=TRI;
    while(1){
    printf("도형의 종류를 입력하세요(0:삼각형 1:직사각형 2:원 3:종료) : ");
    scanf("%d"&a.type);
    getchar();
    if(a.type==TRI)
    {printf("밑변을 입력하세요: ");
    scanf("%d"&a.data.tri.base);
    printf("높이를 입력하세요: ");
    scanf("%d"&a.data.tri.height);
    printf("밑변 : %d 높이 :%d\n", a.data.tri.base, a.data.tri.height);}
    else if(a.type==RECT)
    {printf("가로를 입력하세요: ");
    scanf("%d"&a.data.rect.width);
    printf("높이를 입력하세요: ");
    scanf("%d"&a.data.rect.height);
    printf("가로 : %d 높이 : %d\n", a.data.rect.width, a.data.rect.height);}
    else if(a.type==CIRC)
    {printf("지름을 입력하세요: ");
    scanf("%d"&a.data.circ.radius);
    printf("지름 :%d\n", a.data.circ.radius);}
    else if(a.type==3)
        break;
    else 
    {printf("잘못된 입력입니다.\n");}};
}
cs


주의할 점은 우리가 enum으로 열거형 변수를 설정했다 하더라도 scanf로 받을 때는 그에 해당하는 실제 정수 값

(TRI=0, RECT=1, CIRC=2라던가..) 을 입력해 주어야 한다는 것이다. 만약 실제로 TRI, RECT, CIRC 를 입력해서

프로그램이 작동하게 하려면, strcmp를 이용하여 정수값 0, 1, 2를 출력하는 function을 따로 만들어야 할 것이다.

그리고 enum으로는 0,1,2, 밖에 없지만 추가적으로 3이나 4를 입력해도 이상이 없다는 점을 발견했다.




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

속담 선택기  (0) 2017.01.04
데이터베이스  (0) 2017.01.03
포커 카드 배열  (0) 2016.12.28
전화번호부  (0) 2016.12.28
직원 나이별 분류  (0) 2016.12.27

+ Recent posts