*영*
Bronze개인
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 2
검색어 입력폼
  • C언어로 제작한 단순화된 공학용 계산기 입니다.
    【programming】- 단순화된 공학 계산기 -◎ 프로그램 개요1. 기본적인 사칙 연산 수행예) 1 + 3 * 4= 132. C 시스템이 제공하는 수학 함수 제공(C99 부록 A의 에 있는 함수들을 제공 함)예) 2 + sqrt(100)= 123. 단일 변수 선언 및 사용(단, 단일 변수는 A부터 Z까지만 사용가능하고 소문자와 대문자 구별은 하지 않는다.)예) A = 3A + 4= 7A= 3B = A * 3B * A= 27A + sqrt(B)= 64. 배열 변수 선언 및 사용(단, 배열 변수는 AA부터 ZZ까지만 사용가능하고 소문자 대문자 구별은 하지 않는다. 그리고 AA가 정의되어 있을 경우 AA는 전체 원소를 뜻하고, 개별 원소는 AA에 첨자를 붙여 표시한다. 예를 들어, AA(0)은 AA의 첫 번째 원소를 뜻한다. 또한 배열 값의 총 합, 곱, 평균값, 표준편차를 위해 ADD(), MUL(), AVG(), STD() 함수를 제공해야 한다. 그리고 +, -, *, / 연산이 사용되면 대응되는 원소들 간의 +, -, *, /를 계산한다.)예) AA = 2, 3, 4, 5, 6BB = 1, 2, 3, 4, 5AA(0) + 4= 6AA + BB= 3, 5, 7, 9, 11ADD(AA)= 205. 단순 변수와 배열 변수 파일 저장 및 읽어오기 기능예) A = 3B = 4AA = 2, 3, 4, 5, 6save file_nameA = 5B = 10C = 3AA = 5, 2AA= 5, 2A + B= 15load file_nameAA= 2, 3, 4, 5, 6A + B= 7A + C= undefined symbol6. END 입력 시 프로그램 종료◎ 프로그램 설명- 주요변수 -● char input[N] : 수식을 입력받을 배열● double A[2][26]={0} : 단일 변수가 저장될 배열, A[0][i](i 는 0~25사이의 수)는 0으로 초기화 되어있으며 0또는 1이 들어간다. 만약 A[1][i]에 수가 들어있다면 1로 바꾼다.● double AA[2][26 너무 깁니다.n");continue;}x = calc(input);// %g 로 출력할 경우 -0.000000을 제대로 표현하지 못하기 때문에 그러할 경우 바꿔줌if(x > -0.000001 && x < 0.000001 )x = 0.0;//calc 함수 호출후 결과값 출력//단일 변수나 배열 변수의 값을 입력했을 경우는 출력하지 않음if(ch != 0)printf("= %gn", x);}return 0;}double calc(char input[N]){int i;int sign_flag = 1;//'-' 가 입력되었을시 음수로 숫자를 저장하기 위한 표시int oper_flag = 1;//마지막으로 push된 것이 숫자인지 연산자인지 표시int cnt = 0;//push되어 있는 숫자의 개수ch = 1;//ch를 1로 초기화//index값들 초기화idx_oper = -1;idx_num = -1;idx_input = 0;//수식에서 공백이 있을 경우 한칸씩 앞으로 땡겨서 공백을 없앰for(i = 0; input[i] != ''; i++){if(input[i] == ' ')strcpy(input + i, input + i + 1);//대문자를 소문자로 바꿔줌input[i] = tolower(input[i]);}//수식이 끝날 때까지 idx_input을 증가시키며 실행for(; input[idx_input] != ''; idx_input++){if(input[idx_input]=='-'){idx_input++;//피연산자가 스택에 있는경우 +를 push, 숫자는 음수로 pushif(oper_flag == 0){push_oper('+');oper_flag = 1;}sign_flag = -1;}//피연산자가 없는경우 음수로 pushelse sign_flag = 1;//숫자, 연산자, 함수를 판별 후 각각의 스택에 저장//숫자이고 바로 전에 숫자가 push되지 않았을 경우if(isdigit(input[idx_input]) && oper_flag == 1){//[idx_input+1] == '='){//'=' 뒤의 수식을 가지고 calc함수를 호출한다strcpy(input, input+idx_input+2);A[1][i] = calc(input);A[0][i] = 1;ch = 0;return 0;}//단일변수가 사용 될 때else if(islower(input[idx_input+1]) == 0){//단일변수가 정의되지 않은 경우 에러메세지 출력if(A[0][i] == 0){printf("= undefined symboln");ch = 0;return 0;}//단일변수가 정의된 경우 단일변수의 값을 push 해서 계산else{push_num(sign_flag * A[1][i]);oper_flag = 0;cnt++;ch = 1;}}//서로다른 영문자가 연속되어 입력되었을 때else if(islower(input[idx_input]) && oper_flag == 1){//입력받은 문자열을 확인한 후 그에 따른 함수들을 호출if(strncmp(input+idx_input, "save", 4) == 0){save();return 0;}else if(strncmp(input+idx_input, "load", 4) == 0){load();return 0;}//배열변수의 원소들의 합을 계산해서 pushelse if(strncmp(input+idx_input, "add", 3)==0){double x = 0;int j, i = input[idx_input+4] - 'a';idx_input += 6;for(j = 0; AA[0][i][j] != 0; j++)x += AA[1][i][j];push_num(sign_flag * x);cnt++;oper_flag = 0;}//배열변수의 원소들의 곱을 계산해서 pushelse if(strncmp(input+idx_input, "mul", 3)==0){double x = 1;int j, i = input[idx_input+4] - 'a';idx_input += 6;for(j = 0; AA[0[idx_input])){if(input[idx_input] == input[idx_input+1])x = AA[1][input[idx_input] - 'a'][atoi(input+idx_input+3)];else x = A[1][input[idx_input] - 'a'];}else x = atof(input+idx_input);for(; input[++idx_input] != ')'; );return cos(x * RAD);}else if(strncmp(input+idx_input, "tan", 3)==0){idx_input += 4;if(islower(input[idx_input])){if(input[idx_input] == input[idx_input+1])x = AA[1][input[idx_input] - 'a'][atoi(input+idx_input+3)];else x = A[1][input[idx_input] - 'a'];}else x = atof(input+idx_input);for(; input[++idx_input] != ')'; );return tan(x * RAD);}else if(strncmp(input+idx_input, "acos", 4)==0){idx_input += 5;if(islower(input[idx_input])){if(input[idx_input] == input[idx_input+1])x = AA[1][input[idx_input] - 'a'][atoi(input+idx_input+3)];else x = A[1][input[idx_input] - 'a'];}else x = atof(input+idx_input);for(; input[++idx_input] != ')'; );return acos(x * RAD);}else if(strncmp(input+idx_input, "asin", 4)==0){idx_input += 5;if(islower(input[idx_input])){if(input[idx_input] == inplse x = atof(input+idx_input);for(; input[++idx_input] != ')'; );return log(x);}else if(strncmp(input+idx_input, "log10", 5)==0){idx_input += 6;if(islower(input[idx_input])){if(input[idx_input] == input[idx_input+1])x = AA[1][input[idx_input] - 'a'][atoi(input+idx_input+3)];else x = A[1][input[idx_input] - 'a'];}else x = atof(input+idx_input);for(; input[++idx_input] != ')'; );return log10(x);}else if(strncmp(input+idx_input, "ceil", 4)==0){idx_input += 5;if(islower(input[idx_input])){if(input[idx_input] == input[idx_input+1])x = AA[1][input[idx_input] - 'a'][atoi(input+idx_input+3)];else x = A[1][input[idx_input] - 'a'];}else x = atof(input+idx_input);for(; input[++idx_input] != ')'; );return ceil(x);}else if(strncmp(input+idx_input, "floor", 5)==0){idx_input += 6;if(islower(input[idx_input])){if(input[idx_input] == input[idx_input+1])x = AA[1][input[idx_input] - 'a'][atoi(input+idx_input+3)];else x = A[1][input[idx_input] - 'a'];}else x = atof(input+idx_input);for(; input[++idx_inpute
    공학/기술| 2007.12.06| 28페이지| 4,000원| 조회(2,996)
    미리보기
  • C언어를 이용하여 카드게임의 한 종류인 훌라(Hoola)를 만들었습니다. 평가A+최고예요
    【Game programming】- Hoola -◎ 프로그램 개요1. 기본적인 자료구조는 자기참조 구조체를 이용한 연결 리스트로 구현- 구현한 자료 구조 : Card Deck, 각 Player의 card 리스트, 바닥에 등록된 Card 리스트2. 게임을 진행할 Player의 수와 이름을 입력 받는다. 가능한 Player의 수는 2~4명이며, 가장 먼저 입력한 사람은 사용자가 직접 Play하며 나머지 사람은 컴퓨터가 자동으로 Play한다고 가정한다. 컴퓨터의 Play 규칙은 9번 참조.3. 게임 시작 전에 카드를 분배하는 방법은 가장 첫 번째 게임일 경우에는 사용자부터 나누어 주고, 그 다음 게임부터는 이전 게임에서 이긴 사람부터 나누어 준다.4. 카드를 분배할 때는 먼저 3장씩 나누어 주고 다음번에 4장씩 나누어 준 후, 게임을 위해 한 장을 바닥에 오픈한다.5. 사용자 카드와 바닥에 등록된 카드는 다음 기준에 의해 정렬하여 보여준다.- 1차 정렬 조건 : 카드의 무늬 (스페이드, 다이아몬드, 하트, 클로버의 순서)- 2차 정렬 조건 : 카드 무늬가 같은 경우 카드 숫자로 정렬사용자 카드는 아직 내려놓지 않은 카드를 보여주며, 다른 사람의 카드는 남은 카드의 수를 보여준다. 각 플레이어 이름 옆에는 등록 여부를 나타내는데 N은 미등록, *는 등록 상태이다.6. Hoola 게임의 규칙은 다음과 같다.6.1 Hoola 게임은 자신의 카드 7장을 모두 바닥에 먼저 내려놓는 사람이 이긴다.6.2 카드를 바닥에 내려놓기 위해서는 먼저 등록을 해야 한다. 등록이란 다음 세 가지 조건을 만족하는 카드를 바닥에 내려놓음을 뜻한다.? 같은 숫자가 3장 이상 있는 경우 (3장만 등록해도 됨)? 같은 무늬의 카드 중 연속된 숫자가 3장 이상 있는 경우(3장만 등록해도 됨)이 때 A카드와 K카드는 연속된 숫자로 인정된다. 즉, A, 2, K도 등록됨? 숫자가 7인 카드6.3 자신의 차례가 되면 우선 Card Deck에서 카드를 한 장 가져 온다.6.4 카드를 가져 온 후에는 카드를me[N];//플레이어 이름 저장char entry;//카드 등록 유무 판별int money;//플레이어의 돈int cnt;//가지고 있는 카드의 수int sum;//가지고 있는 카드 숫자의 총합struct card *next;} player;void deck_card();//덱에 카드 생성card * shuffle(card *);//리스트 셔플int thank(int);//땡큐함수void play(player *);//게임 진행 함수int play_player(void);//플레이어 플레이int play_com(int);//컴퓨터 플레이void print(player *, int, card *);//게임 화면 출력void sort(card *, int);//리스트 정렬void score(int);//점수 출력card * add(player *, card *);//플레이어 리스트에 카드 추가card * select_card(player *, card *);//플레이어 리스트에서 카드 선택card * dis_card(int, int, int, card *);//플레이어의 카드 리스트에서 조건에 맞는 카드를 옴김int check(player *, int (*)[8]);//등록 가능한지 검사int check_c(player *, int (*)[8]);//등록 가능한지 한장씩 검사int check_e(int (*)[8], int);//카드를 소유하고 있는지 검사void command(char *com);//명령 실행void save(char *);//현재 상태를 저장void load(char *);//저장했던걸 불러옴void del(void);//할당된 메모리들 모두 삭제(초기화)void swap(char *);//카드를 바꿈void view(char *);//다른 플레이어의 카드를 보여줌void balance(void);//현재 재정상태card *deck_h, *deck_t;//덱의 헤드와 테일player player_head[4]={0};//플레이어 정보를 가진 ].next; temp != NULL; temp = temp->next){printf("%c%s", shape[temp->shape], num[temp->number]);if(temp->next != NULL)printf(", ");}printf("n 같은 숫자 - ");for(temp = ent[4].next; temp != NULL; temp = temp->next){printf("%c%s", shape[temp->shape], num[temp->number]);if(temp->next != NULL)printf(", ");}printf("n버려진 카드 : %c%snn", shape[deck_h->shape], num[deck_h->number]);if(player_head[0].cnt != 0)//플레이어의 턴일 경우{printf("%s(%c) ", player_head[0].name, player_head[0].entry);for(temp = player_head[0].next; temp != NULL; temp = temp->next)//플레이어의 소유 카드 출력{printf("%c%s", shape[temp->shape], num[temp->number]);if(temp->next != NULL)printf(", ");else printf("n");}printf("%s 당신의 턴입니다.n", player_head[0].name);}}/********************************************************************파라미터 : player구조체형 포인터리턴값 : 없음기능 : 플레이어의 수와 win(마지막 승자의 번호)를 이용하여 순서대로 플레이 한다.사용자와 컴퓨터의 Turn이 순차적으로 돌아가며 게임이 끝났을 경우 score함수를 호출하여 결과를 보여준다.********************************************************************/void play(pl 교환swap(com);else if( !strncmp(com, "view", 4) )//상대방 카드 목록 보여줌view(com);else if( !strncmp(com, "save", 4) )//현재 상태 저장save(com);else if( !strncmp(com, "load", 4) )//저장했을 당시로 불러옴load(com);}/********************************************************************파라미터 : player구조체형 포인터, card구조체형 포인터리턴값 : card구조체형 포인터기능 : 사용자로부터 카드 선택을 받는다. 사용자가 입력한 카드들은 배열에 저장된 후check함수를 통하여 등록가능한지 확인한 후 등록가능하다면 등록한다.********************************************************************/card * select_card(player *player_head, card *deck_h){char com[20]={0}, cc;int c[2][8]={0};int i = 0, j = 0;while(1){if((*player_head).cnt == 0)break;print(player_head, player_cnt, ent);printf("Select Card : ");i = 0;fflush(stdin);while(1){cc = getchar();if(cc == 'n')break;if(cc != ',' && cc != ' ')//쉼표와 공백은 무시함com[i++] = cc;}i = 0;j = 0;while(com[i] != '')//모양과 숫자를 분리해서 집어 넣음{switch(com[i])//입력받은 문자에 맞는 번호를 넣음{case 'S' : case 's' :c[0][j] = 0; break;case 'D' : case 'd' :c[0][j] = 1; break;case 'H' : case'h' :c[0][j] = 2; breaext; temp2 != NULL; temp2 = temp2->next){t[menu][0][0] = tmp[0][0] = deck_h->shape;t[menu][1][0] = tmp[1][0] = deck_h->number;t[menu][0][1] = tmp[0][1] = temp1->shape;t[menu][1][1] = tmp[1][1] = temp1->number;t[menu][0][2] = tmp[0][2] = temp2->shape;t[menu][1][2] = tmp[1][2] = temp2->number;if( check(&player_head[player], tmp) == 2 ){for(i = 0; i < 3; i++){tmp[0][i] = t[menu][0][i];tmp[1][i] = t[menu][1][i];}//만약 같은 숫자가 4장일 경우에는 4장일 경우로 저장for(temp3 = temp2->next; temp3 != NULL; temp3 = temp3->next){if(tmp[1][0] == temp3->number){t[menu][0][3] = temp3->shape;t[menu][1][3] = temp3->number;if(player == 0)printf("%d. %c%s, %c%s, %c%s + %c%sn", menu+1, shape[tmp[0][1]], num[tmp[1][1]],shape[tmp[0][2]], num[tmp[1][2]], shape[t[menu][0][3]],num[t[menu][1][3]], shape[tmp[0][0]], num[tmp[1][0]]);break;}}if(temp3 == NULL && player == 0)printf("%d. %c%s, %c%s + %c%sn", menu+1, shape[tmp[0][1]], num[tmp[1][1]],shape[tmp[0][2]], num[tmp[1][2]], shape[tmp[0][0]], num[tmp[1][0]]);menu++;for( ; temp 0;
    공학/기술| 2007.12.06| 57페이지| 5,000원| 조회(2,194)
    미리보기
전체보기
받은후기 1
1개 리뷰 평점
  • A+최고예요
    1
  • A좋아요
    0
  • B괜찮아요
    0
  • C아쉬워요
    0
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 30일 토요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
4:02 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감