마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

2019 수업 노트

2019-1학기 수업 노트 (자료구조 1 실습, 2019.03.05.)

동동매니저 2019. 3. 7. 12:02

「2019학년도 1학기」 ///

by. 동동매니저 >_<


일자 : 2019년 03월 05일 (화)

과목 : 자료구조 1 실습

담당 교수님 : SCH 성낙준 교수님


실습 내용을 요약해보면?

▶ C언어로 간단한 프로그램을 만들어보기 (개강 첫 주라서 어렵지는 않았죠... 하지만, 다른 친구들이 배우지 않은 파일 입출력...)


오늘 실습한 문제!!

▶ 문제 1

0~99 범위 내의 난수를 10개 생성하고, data.txt 파일에 출력하시오.

(단, Seed 값은 매 번 다르게 하며, 표준 출력(화면)으로도 같이 출력할 것!!)

★ 입력 예시 (stdin)

없음

★ 출력 예시 (stdout)

0 = 41
1 = 12
2 = 74
3 = 7
4 = 92
5 = 46
6 = 75
7 = 92
8 = 52
9 = 89

★ 출력 예시 (data.txt)

41
12
74
7
92
46
75
92
52
89



▶ 문제 2

출력한 data.txt 파일을 읽어서, 순서대로 출력하시오.

★ 입력 예시 (data.txt)

41
12
74
7
92
46
75
92
52
89

★ 출력 예시 (stdout)

0 = 41
1 = 12
2 = 74
3 = 7
4 = 92
5 = 46
6 = 75
7 = 92
8 = 52
9 = 89


문제를 풀어보면? (소스 코드)

★ 문제 1

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 생성할 난수의 개수
#define RAND_COUNT 10

int main(void){
	int i; // 반복 루프 제어 변수
	FILE *fp=fopen("data.txt","wt"); // 파일을 쓰기 모드로 열기
	srand(time(NULL)); // 난수의 seed 값을 현재 시각으로 설정
	for(i=0;i<RAND_COUNT;i++){ // RAND_COUNT 만큼 반복
		int rnd=rand()%100; // 난수 생성 (0~99)
		printf("%d = %d\n",i,rnd); // 표준 출력으로 출력
		fprintf(fp,"%d\n",rnd); // data.txt 파일에 출력
	}
	return 0;
}

★ 문제 2

#include <stdio.h>

// 읽을 수의 개수
#define READ_COUNT 10

int main(void){
	int i; // 반복 루프 제어 변수
	FILE *fp=fopen("data.txt","rt"); // 파일을 읽기 모드로 열기
	for(i=0;i<READ_COUNT;i++){ // READ_COUNT 만큼 반복
		int read; // 읽은 수를 저장
		fscanf(fp,"%d",&read); // 파일에서 수를 읽기
		printf("%d = %d\n",i,read); // 표준 출력으로 출력
	}
	return 0;
}

수업을 듣고 나서 느낀 점!!

오늘 실습 때 자료구조 진도를 빨리 진행했으면 하는 학생에서 손을 들었는데,

교수님께서 10분의 시간을 주시면서 오늘의 문제를 풀어보라고 하셨음.

내가 문제를 풀고 난 후 교수님께서, 실력은 인정하지만, 그래도 진도는 같이 나가는 것이 더 좋을 것 같다고 하셔서,

방학 때 미리 예습을 했어도 다시 배우는 느낌으로!! 친구들과 진도를 맞출 예정!!


기타 참고 사항!!

▶ 중간 및 기말고사 (각각 30%씩), 과제 30%, 출석 10% 반영

▶ Cheating(부정행위) 적발 시 무조건 'F'학점 처리

▶ 성적 산출 시, A/B반 상관 없음 (따로 산출)

▶ 지각 2번 = 결석 1번, 전체의 1/3 이상 결석 = 무조건 'F'

▶ 시험은 오픈북 형태로, 문제가 주어지면 직접 코딩하는 문제 3개 출제

▶ 실습 시간에 푼 문제는 다음 시간까지 Report 형태로 출력 후 제출!!

★ Report 양식!!

▶ 표지 (제출 일자 기재 필수!!)

▶ 목차

▶ 문제 분석

▶ 소스 코드

▶ 소스 설명 (꼼꼼히 작성!!)

▶ 실행 창 (문제 별 최소 2개)

▶ 느낀 점 (문제 별 + 종합)