June is Combung

괄호예제 & 포켓몬2 본문

C/구조체

괄호예제 & 포켓몬2

june__Park 2021. 3. 29. 17:12
typedef struct Goalho{
	char str[100];

}GH;

int func1(){
	// 인자 : 소괄호로만 구성된 문자열 1개
	// 하는 일: 괄호의 짝궁 구성이 올바른지 판별
	// 리턴 : 짝궁이 맞으면 1, 아니면 0
	// func1("(())()"); // 1
	// func1("(())())"); // 0
	// func1("((())())"); // 1
	// quiz01 에서 테스트

	return 0;
}

void quiz01(){
	func1();
}

typedef struct Pokemon{
	/*구조체 Pokemon 를 정의 
	필드 : name(이름), level(레벨)

    메뉴 띄우기 
	1. 포켓몬 추가 => 이름, 나이를 입력 받아 Pokemon 구조체 생성 (배열 혹은 동적할당)
	2. 모든 포켓몬 보기 => 현재 사용자가 추가한 모든 포켓몬 이름, 나이 출력 
	3. 포켓몬 레벨업 => 이름을 입력받고 해당 Pokemon 이 있으면 => 레벨 1 증가
			 없으면 "미등록 포켓몬" 출력
	4. 종료 => 반복 종료*/

	char name[100];
	int lv;
	int hp;

}POK;

void print_pokemon(POK p){
	printf("포켓몬 이름: %s \n",p.name);
	printf("포켓몬 레벨: %d \n",p.lv);
	printf("포켓몬 체력: %d \n",p.hp);
	printf("==============================\n");
}

void level_up(POK *p){

	++p->lv;

}

void quiz02(){
	POK p1, p2, p3;

	strcpy_s(p1.name, 100, "피카츄");
	p1.lv = 10;
	p1.hp = 100;

	strcpy_s(p2.name, 100, "라이츄");
	p2.lv = 20;
	p2.hp = 2000;

	strcpy_s(p3.name, 100, "파이리");
	p3.lv = 15;
	p3.hp = p3.lv * 100;

	print_pokemon(p1);
	print_pokemon(p2);
	print_pokemon(p3);

	level_up(&p1);
	level_up(&p2);
	level_up(&p3);

	printf("레벨업! \n\n");

	print_pokemon(p1);
	print_pokemon(p2);
	print_pokemon(p3);
}
#include<stdio.h>
#include<string.h>

/* 
  구조체 : 여러 데이터를 한 세트로 묶어주기 위한 설계도
  구조체 정의 (설계도 만들기)
*/
/*struct pokemon{
	char name[100];
	int level;
	int hp;
};

// 구조체 -> 사용자 정의 자료형으로 등록
typedef struct pokemon POK;*/

typedef struct pokemon{
	char name[100];
	int level;
	int hp;
}POK;

void print_pokemon(POK p){
	printf("이름: %s \n", p.name);
	printf("레벨: %d \n", p.level);
	printf("체력: %d \n", p.hp);
	printf("____________________________\n\n");
}

void level_up(POK *p){
	//(*p).level++;
	++p->level;

	/*
	  '.'  : 이름.필드명  (구조체변수명.멤버변수명)
	  '->' : 주소->필드명 (구조체의 주소->멤버변수명) 
	*/
}

void ex01(){
	POK p1 = {"피카츄", 100, 1000};
	POK p2, p3;

	strcpy_s(p2.name,100,"라이츄"); // p2.name = "라이츄";
	p2.level = 10;
	p2.hp = 1000;

	strcpy_s(p3.name,100,"푸린");
	p3.level = 20;
	p3.hp = p3.level * 100;

	print_pokemon(p1);
	print_pokemon(p2);
	print_pokemon(p3);

	level_up(&p1);
	level_up(&p3);
	print_pokemon(p1);
	print_pokemon(p3);
}

/*
  < 자기 참조 구조체 >
  (연결리스트 구현 시 사용)
  => 자기 자신과 똑같은 모양을 참조하는 포인터 멤버를 가지는 구조체
*/
typedef struct node{
	int data;
	struct node* next;
}NODE;

void main(){
	ex01();
}

'C > 구조체' 카테고리의 다른 글

도서관리1  (0) 2021.03.29
포켓몬  (0) 2021.03.29
구조체 기본  (0) 2021.03.29
Comments