럭키럭키e
Bronze개인인증
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 3
검색어 입력폼
  • 판매자 표지 자료구조 텀프로젝트 Linked List manipulation; Student Registration System (학생 등록 시스템)
    자료구조 텀프로젝트 Linked List manipulation; Student Registration System (학생 등록 시스템) 평가A좋아요
    주제Linked List manipulation; Student Registration System (학생 등록 시스템)문제: 5000명의 학생과 35개의 코스를 가진 작은 대학에서 등록(add) 및 등록취소(drop)를 처리하는 소프트웨어 시스템을 개발한다. 학생 ID는 2000-2499, 코스는 100-134로 주어진다.입력: 입력 라인은 텍스트 파일로 주어진다. 열 1-10은 학생 ID를 가지며, 열 11-20은 코스 번호, 그리고 열 25는 등록에 대하여 “A” 취소에 대하여 “D” 로 주어진다 (아래 샘플립력 참조).샘플 입력은 다음과 같다(첫번째 라인은 열의 위치를 지시하기 위한 것이니 무시하시길 바람)12345**************************011 111 A2400 101 A2300 101 A2300 120 D입력은 EOF(end of file)에 의해서 끝난다.출력: (1) 에러 보고 (에러가 없으면 없다고 말함), (2) 클라스 목록 (ID 번호 순서대로 학생 출력), 그리고 (3) 입력에 대한 보고.위의 샘플 입력에 대한 출력은 다음과 같이 나와야 한다. 반드시 파일로 출력이 되도록 하길 바란다 (중요: 화면 출력을 제출하는 학생은 무조건 20% 감점 처리합니다).2300 120 D ** 등록 되지 않음 **101: 2300 2400111: 2011[입력 보고] 읽은 카드 수: 4 유효 등록: 3 취소: 0해결 기법: multi-linked list를 사용하기 바란다.다음 노드 구조체를 사용할 수 있다.typedef struct enroll-s{int id-num;int course-num;struct enroll-s *left;struct enroll-s *right;} *enroll-sp;enroll-sp courses[35];enroll-sp students[500];어레이 “courses” 와 “students”는 각각 코스와 학생목록에 대한 head pointer를 포함하고 있다. 가능하다면 “A” 라인에 대하여 두 l함수int insert();//삽입 함수int del();//삭제 함수int checkdata1(int start_n, int end_n); //네자리수int checkdata2(int start_n, int end_n); //세자리수typedef struct node *node_ptr;typedef struct node{int student_number; //학번int lec_number;//과목번호node_ptr left;node_ptr right;}node;node_ptr course[M_lec_number]; // 같은 과목을 듣는 학번 저장 그래서 과목의 크기 과목의 최대 개수인 35node_ptr students[M_student_number]; //이 학번이 듣는 과목번호 저장 그래서 학번의 최대 개수인 500void printlist(node_ptr, int n);FILE *fp1, *fp2;int main(){int k = 0, l = 0, d = 0, t = 0;//읽은 라인수=k 유효 등록=l 취소=d t는 반복용char *infilename = "in.txt";char *outfilename = "out.txt";char buffer[50];if ((fp1 = fopen(infilename, "r")) != NULL)printf("파일 열기 성공n");else{printf("Errorn");return 1;}fp2 = fopen(outfilename, "w");//파일 준비완료for (t = 0; t != M_student_number; t++)//리스트 초기화{students[t] = NULL;}for (t = 0; t != M_lec_number; t++)//리스트 초기화course[t] = NULL;while (fgets(buffer, 30, fp1)) //(char*s,int n, File) 오류나 파일 끝은 NULL 포인터 리턴 n은 읽어들일 문자의 최대 개수{k++; //한번 읽을때 한줄씩 읽으므로 읽은 라인수 증가strcp //값이 A일 경우 삽입{node_ptr newnode, prenode; //새로운노드 이전노드 임시노드int lcn, stn, temp; //lcn 과목번호크기, stn 학번크기stn = student_number - 2000; //학번은 2000~2499번 까지 있으니 0일때 학번 2000, 1일때 학번 20001 499일때 2499를 가리킴lcn = lec_number - 100;//과목번호가 100~134번까지 있으니 0일때 과목100, 1일때 과목101 34일때 과목 134를 가리킴newnode = malloc(sizeof(node));newnode->student_number = student_number; //학번저장newnode->lec_number = lec_number; //과목번호 저장newnode->left = NULL;newnode->right = NULL;if (!students[stn])students[stn] = newnode; //배열저장 값이 0이면 newnode 저장 여기는 이 학번이 듣는 과목 저장else if (students[stn]->lec_number == newnode->lec_number)return 1; // 새로운 학번과 이전 학번이 같은 경우 중복else{prenode = students[stn]; //이전 노드에 newnode값 저장while (1) //무한 루프{if (prenode->left == NULL) //맨끝삽입{newnode->left = NULL;prenode->left = newnode;break;}else if ((newnode->student_number) < (prenode->left->student_number)) //새로운 학번값이 이전 학번값보다 작으면 새로운 노드를 사이에 삽입{newnode->left = prenode->left;prenode->left = newnode;break;}else if (newnode->lec_number == prenode->left->lec_n운 학번 값으로 저장p->student_number = t; //출력할 학번값을 다음노드 학번값으로q->right = p;}else if (q->student_number < p->student_number || p->right != NULL) //출력할노드학번이 다음노드학번보다 작고 다음노드가 가리키는 값이 NULL이 아니면 다음으로 이동{p = p->right;q = q->right;}}elsebreak;}if (!n) //n이 0이면for (; list; list = list->right){fprintf(fp2, " %d", list->student_number); //학번 출력}fprintf(fp2, "n"); //줄 구분}int del() //삭제함수 data 값이 D일경우{int stn, lcn; //학번 크기, 과목번호 크기node_ptr delnode, prenode; //삭제노드 이전노드stn = student_number - 2000; //학번을 저장하는 배열 크기가 500이므로 2000을 빼야됨 학번은 2000~2499이므로 2000을 빼면 0~499lcn = lec_number - 100; //과목번호를 저장하는 배열 크기가 35이므로 100을 빼야됨 과목번호는 100~134이므로 100을 빼면 0~34prenode = students[stn];if (!students[stn])//학번저장값이 0이면return 2;if (students[stn]->student_number == student_number) //학번 저장값이 학번과 같으면{students[stn] = students[stn]->right; //학번 저장값= 학번저장값->오른쪽delnode = prenode; //삭제노드=이전노드}else if ((students[stn]->student_number)>student_number) //학번저장값의 학번이 현재 학번보다 크면return 2; //미등록else{delnode = prenode->left; //삭제노드=이전노드 f(fp2, " %d %d %c ", student_number, lec_number, data); fprintf(fp2, "t ** 중복 된 값임**n"); break;case 2: ERR2++; fprintf(fp2, " %d %d %c ", student_number, lec_number, data); fprintf(fp2, "t ** 등록 되지 않음 **n");break;case 3: ERR3++; fprintf(fp2, " %d %d %c ", student_number, lec_number, data); fprintf(fp2, "t ** 유효하지 않은 강의번호**n"); break;case 4: ERR4++; fprintf(fp2, " %d %d %c ", student_number, lec_number, data); fprintf(fp2, "t ** 유효하지 않은 학생번호**n"); break;case 5: ERR5++;fprintf(fp2, " %d %d %c ", student_number, lec_number, data); fprintf(fp2, "t ** A혹은 D가 아님**n");break;}return 0;}int sqr(int a, int b) //자리수에 맞춰서 곱함{int c = 1, y;for (y = 0; y != b - 1; y++)c = c * a;return c;}int checkdata() //값이 유효한지 체크하는 함수{student_number = lec_number = 0;student_number = checkdata1(4, 8); // 학번은 4~8 과목번호는 15~18 DATA는 25번째열이다.lec_number = checkdata2(15, 18);data = instr[24];if (data != 'A' && data != 'D') //25번값이 A D가 아니면return 5;if ((student_number= 2000 + M_student_number)) //학번오류return 4;if03 A
    공학/기술| 2018.10.28| 14페이지| 2,000원| 조회(672)
    미리보기
  • 판매자 표지 자료구조 텀프로젝트 BST (binary search tree) Inventory  (재고 관리 시스템)
    자료구조 텀프로젝트 BST (binary search tree) Inventory (재고 관리 시스템)
    주제BST (binary search tree); Inventory(재고 관리 시스템)문제: 재고(stock) 목록 시스템을 개발한다. 이 프로그램은 재고관리 시스템에 새로운 컨포넌트(conponent)를 추가 (add), 컨포넌트를 삭제 (delete), 재고품목에서부터 아이템 (item)을 제거 (remove), 재고품목에 아이템을 추가 (add), 그리고 재고목록을 프린트할 수 있어야한다.입력: 텍스트파일에서 라인들을 입력받는다. 첫번째 열은 해야할 작업 명령을 나타내는 알파벳이다. 3~8열은 숫자로서 컨포넌트의 컨포넌트 번호를 나타낸다. 10~29열은 알파벳이며 컨포넌트에 대한 설명이다 (필요한 경우 만 기술). 31~35열은 숫자이며 초기 재고량이거나 혹은 추가/삭제될 양을 나타낸다. 그리고, 41~45열은 숫자이며 재주문 수준을 나타낸다.다음은 다양한 명령어에 대한 요약이다.명령어 명령어 의미 필요한 입력============================================================N 컨포넌트 추가 컨포넌트 번호, 아이템, 초기재고량, 재주문 수준D 컨포넌트 삭제 컨포넌트 번호A 재고량 추가 컨포넌트 번호, 추가할 갯 수R 재고량 제거 컨포넌트 번호, 제거할 갯 수P 목록 시스템 출력 없음X 프로그램 끝냄 없음입력 예) 첫번째 라인은 열 지시자로서 입력 파일에 포함되지 않는다.12345**************************2345**************************234N 101001 Circular Queue 11 1N 123456 List Linker 11 5N 666666 Pseudocode Gen. 38 3N 110010 Stack Stretcher 3 2A 101001 4R 110010 3........1. P2. X사용 가능한 컨포넌트번호는 100001과 999999를 포함하는 그 사이의 수이다.출력:합당하지 않는 명령어들은 적절한 에러 메세지를 출력하여야 한다. 예를들면, “컨포넌트 번호 드는 하나의 엔트리로 구성되는데 각 엔트리는 컨포넌트 번호, 설명 (20 문자 이내로), 재고량, 그 컨포넌트에 대한 재주문 수준들을 포함해야 한다. 순서대로 재고 시스템 내용을 프린트 하기 위해서는 “새로운 컴포넌트 추가” 및 “새로운 컨포넌트 삭제”를 할 때 추리를 항상 순서대로 유지해야 한다 (즉, 이진 탐색 트리).read파일N 101001 Circular Queue 11 1N 123456 List Linker 17 5N 666666 Pseudocode Gen 12 3N 115510 Stack Stretcher 13 2A 101001 14R 123456 14A 115510 3A 112456 2D 122222N 110011 Stack stack 1 2N 110011 Stack stack 5 2N 566666 Gseudocode Gen 6 3PX소스코드#include #include #include FILE *fp1, *fp2;typedef struct node *node_ptr;typedef struct node {int component;int inventory;int reorder;char name[20];node_ptr left;node_ptr right;}node;void list(node_ptr root, FILE *fp2);void insertnode(node_ptr *root, node_ptr newItem, FILE *fp2);node* search(node_ptr root, int component, FILE *fp2);void check(node_ptr item, int inventory, FILE *fp2);void delete_node(node_ptr *root, int component, FILE *fp2); //삭제int main(){node_ptr item = NULL;node_ptr newnode;int *num;int i, j, t, n, a, c, d; //i는 반복 a는 component b는 inventory c는 rei] - '0';for (j = i - 2; j < 5; j++){temp1[i] = temp1[i] * 10;}a += temp1[i];}}j = 0;for (i = 9; i < 28; i++) //name{b[j] = buffer[i];j++;}j = 0;for (i = 30; i < 35; i++) //inventory{if (buffer[i] == ' '){i = i + 1;}if (buffer[i] > '0'){temp2[j] = buffer[i] - '0';j++;}}n = j;for (t = 0; t < n; t++){for (i = 1; i < j; i++){temp2[t] = temp2[t] * 10;j--;}c += temp2[t];}for (i = 40; i < 45; i++) //reorder{if (buffer[i] == ' '){i = i + 1;}if (buffer[i] > '0'){temp3[j] = buffer[i] - '0';j++;}}n = j;for (t = 0; t < n; t++){for (i = 1; i < j; i++){temp3[t] = temp3[t] * 10;j--;}d += temp3[t];}newnode->component = a;strcpy_s(newnode->name, 20, b);newnode->inventory = c;newnode->reorder = d;insertnode(&item, newnode, fp2);break;case 'D': //컴포넌트 삭제for (i = 2; i < 8; i++) //componenet{if (buffer[i] == ' ')i++;else{j = i;temp1[i] = buffer[i] - '0';for (j = i - 2; j < 5; j++){temp1[i] = temp1[i] * 10;}a += temp1[i];}}newnode->component = a;delete_node(&item, a, fp2);break;case 'A': //재고량 추가for (i = 2fer[i] - '0';for (j = i - 2; j < 5; j++){temp1[i] = temp1[i] * 10;}a += temp1[i];}}j = 0;for (i = 30; i < 35; i++) //inventory{if (buffer[i] == ' '){i = i + 1;}if (buffer[i] > '0'){temp2[j] = buffer[i] - '0';j++;}}n = j;for (t = 0; t < n; t++){for (i = 1; i < j; i++){temp2[t] = temp2[t] * 10;j--;}c += temp2[t];}newnode->component = a;check(search(item, a, fp2), c*-1, fp2);break;case 'P': //목록 시스템 출력list(item, fp2);break;case 'X': //프로그램 끝냄exit(1);break;}}}void list(node_ptr root, FILE *fp2) { //LVR출력if (root != NULL){list(root->left, fp2);fprintf_s(fp2, "%d %s %d %d ", root->component, root->name, root->inventory, root->reorder);if (root->inventory < root->reorder)fprintf_s(fp2, "*재주문요*");fprintf_s(fp2, "n");list(root->right, fp2);}}node_ptr search(node_ptr root, int component, FILE *fp2){while (root != NULL) // root가 NULL이 아니라면 일단 탐색을 계속한다.{// 원하는 키 값을 발견했을 경우if (component == root->component)return root; // 해당 노드의 주소 반환// 찾고자 하는 값보다 루트키값이 더 큰 경우else if (component < root->component)roponent) //temp가 루트이므로 새로운 컴포넌트가 루트보다 크면 왼쪽 작으면 오른쪽temp = temp->left;else if (newItem->component > temp->component)temp = temp->right;}// 부모 노드와 링크 연결if (parent == NULL)*root = newItem;else if (newItem->component < parent->component)parent->left = newItem;elseparent->right = newItem;}void delete_node(node_ptr *root, int component, FILE *fp2){node_ptr parent, child, suc, suc_p, t;// component를 갖는 노드 t를 탐색 parent는 t의 부모노드parent = NULL; // root의 부모노드x.t = *root;// component를 갖는 노드 t를 탐색.while (t != NULL && t->component != component){parent = t;// t는 왼쪽이나 componenet값에 따라 왼쪽이나 오른쪽으로 내려간다.if (component < parent->component)t = parent->left;else if (component > parent->component)t = parent->right;}// 탐색이 끝난 시점에서 만약 키 값이 트리에 없었다면 t는 NULL일 것이다.if (!t){fprintf_s(fp2, "%d 컴포넌트 번호 없음n", component);return; // 원하는 값이 없으므로 return 한다.}// 단말노드일때if (t->left == NULL && t->right == NULL){if (parent) // 부모 노드가 NULL이 아닐 때{if (parent->left == t)parent->left = NULL;elseparent->right = NULL;}else // 부모 노드가 NULL을 대입
    공학/기술| 2018.10.28| 12페이지| 2,000원| 조회(755)
    미리보기
  • 판매자 표지 자료구조 텀프로젝트 스택을 이용한 후위계산기
    자료구조 텀프로젝트 스택을 이용한 후위계산기 평가A+최고예요
    #include <stdio.h>#define MAX 100 // 배열 크기int stack[MAX]; // 배열로 스택 표기int top; // 스택의 상단//스택 초기화void init_stack(void){top = -1;}int push(int t) { //push 함수 만들기if (top >= MAX - 1) //MAX보다 넘어가면 오버플로우{return -1;<중 략>int main(){int r, i; //함수값을 저장할변수char in[256]; //배열 선언(중위표기법 입력용)char pf[256];//배열 선언(후위표기법 전환용)printf("수식을 입력하시오 ex 2*4+(6-2)/4n");gets(in); //수식 입력받음postfix(pf, in); //중위표기를 후위표기로
    공학/기술| 2018.10.28| 7페이지| 1,000원| 조회(883)
    미리보기
전체보기
받은후기 3
3개 리뷰 평점
  • A+최고예요
    2
  • A좋아요
    1
  • B괜찮아요
    0
  • C아쉬워요
    0
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 02일 토요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
6:34 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감