U E D R , A S I H C RSS

새싹�실/2012/AClass/4회차

4회차 과제 업로드

  • 코드는 {{{ }}} 안ì—� 넣으면 ë�©ë‹ˆë‹¤.

곽길문

11.�번시간� 배웠� 내용� 바탕으로, int* a; int b; int **c;로 선언했�때 &c,c,*c,&a,a� 관해서 �� 설명하고, 어떤 것� 어떤 것과 �치하는 것�지를 �해할 수 있�� 쉬운�로 정리해보세요.
-�중��터는 ��터� 주소값� 갖는 것입니다. 그거� 따�서 &c는 �기 �신 주소를 �미하는 것�고 c는 ��터 a� 주소값� �합니다. *c�한 a� 주소값입니다 . &a는 a� 주소값, a는 a가 b를 가리키는 것��면 b� 주소값� �합니다.

12.예제 코드가 어떤 행�� 수행하고, 왜 그런 값� 나오는지 설명해 봅시다.
int* a;
int b=5;
int** c;
c=&a;
a=&b;
  • *c=9;
    printf("%d %d",*c,**c);
-ê²°ê³¼ : 3210468 9
-해설 : ìš°ì„  int형 ìž�료형ì�„ 가진 ë�°ì�´í„°ì�˜ 주소를 가리키는 í�¬ì�¸í„°ë¡œ a지정, bì�˜ ê°’ì—� 5를 지정, í�¬ì�¸í„°ì�˜ 주소를 가리키는 c를 지정하였다. aì�˜ 주소를 ì�´ì¤‘ í�¬ì�¸í„° cì—� 주었다. bì�˜ 주소는 í�¬ì�¸í„° aì—� 할당하였다. 그리고 ì�´ì¤‘í�¬ì�¸í„°cì—� ê°’ì�„ 9로 주었다. ì�´ê²ƒì�€ ì›�래ì�˜ aì�˜ 주소값ì�„ ê°–ê³  있ë�˜ cì—� 9를 대체해준 것ì�´ë‹¤. ë”°ë�¼ì„œ 프린트 *c,**c를 하면 aì�˜ 주소와 9ê°€ ìœë ¥ì�´ ë�œë‹¤.


1.5.1.2 예습




2.Circular Queue가 무엇�지 찾아보�.
-�형 �로 기본 �와 마찬가지로 첫 번째 ��터가 추가�는 순간 �� 처�과 �부분� 그 ��터를 가리키게 �다. 처�� F �부분� 가리키는 것� R��하면 꽉찬 경우나 텅빈경우� F가 R� 한칸 앞� 가리키는 것� 같기 때문� F,R� 위치만� 가지고 꽉 찬경우와 텅 빈 경우를 구분할 수 가 없다. 따�서 �와 같� 문제를 해결하는 방법� 많겠지만 그 중 하나는 배열� 꽉 채우지 않고 배열� 길�가 N��면 N-1만�만 채워 졌� 때 꽉 찬 것으로 간주하는 방법�다. �렇게 하면 저장 공간 하나를 낭비하게 �다. 하지만 �로 �해서 문제 하나가 해결� �는 셈�다.

3.typedef가 무엇�지 알아보고, 간단한 예제를 �보�.
- c언어�서는 char,int,float 와 같� 많� 수� 기본 ��터 형과 배열, ��터, 구조체 등� 유�� ��터형으로부터 새로운 ��터형� 만들 수 있는�, 사용� 측면�서 새로운 ��터 형� 정� 할 수 있�� typedef선언� 제공한다. typedef� #define과 달리 �미 존재하는 c언어� ��터 형만� 취하여 정�하고 typedef� 프리프로세서� �해 처리�는 것� 아니� c컴파�러� �해 처리�다. �한 #define보다 다양한 형태� 치환� 가능하다.

< �반 형� : typedef 기존 ��터형 새로운 ��터형; >

예제 :
#include <stdio.h>
void main()
{
typedef char *YOU;

YOU name ="color";
YOU color = "red, blue, yellow, black";

printf("name=%s \n",name);
printf("color=%s \n",color);

}

ê²°ê³¼ :
name =color
color =red, blue, yellow, black

해설 :
typedef문�서 기존 ��터형 char를 새로운 ��터형 �름으로 *YOU를 정�했고 YOU name�� 정�하면 �는 char *name로 나타낸것과 같다.

4.구조체를 사용하여 student 구조체를 하나 만들고, student 구조체 ë°°ì—´ì�„ 만들어 0~3번째 ë°°ì—´ì—� AClassë°˜ í•™ìƒ�들ì�˜ 정보를 ì �당히 넣고, 그것ì�„ ìœë ¥í•´ë³´ìž�.
구조체 내부� char 배열� 사용해서 �름� 넣어� 좋고, 학번� int형으로 넣어� 좋다.
-.. 왜 �러가 뜰까..
#include<stdio.h>

struct Student
{

int age;
char name[];

};

int main()
{
int i;
struct Student stu4={24,"길±æ문¹�"},{24,"�≫o�En"},{23,"송¼U�AI"},{22,"혜Cy림¸²"};



for(i=0;i<4;i++){


printf("age : %d\n name : %s \n",stui.age,stui.name);

}

return 0;
}

-나머지는 월요� 저�까지 올리겠습니다

황혜림


8.다ì�Œ 형태로 ìœë ¥ë�˜ëŠ” 프로그램ì�„ ì§œ 보세요.
저번주 과제 8번� 실패하신 분들� 해당 문제를 푸셔� �니다. 아� �해가 잘 안가시면 저나 다른분들�게 물어�요
1
3 2
4 5 6
10 9 8 7
11 12 13 14 15
21 20 19 18 17 16
#include <stdio.h>

int main()
{
	int a[6][6];
	int i,j;
	int count=1;

	for(i=0;i<6;i++)
	{
		if(i%2!=0)
		{
			for(j=i;j>=0;j--)
			{
				a[i][j]=count;
				count++;
			}
		}
		else
		{
			for(j=0;j<=i;j++)
			{
				a[i][j]=count;
				count++;
			}
		}
	}
	for(i=0;i<6;i++)
	{
		for(j=0;j<=i;j++)
		{
			if(a[i][j]<10)
				printf("%d  ",a[i][j]);
			else
				printf("%d ",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 
9.2중í�¬ì�¸í„°ë¥¼ ì�´ìš©í•˜ì—¬ 3x3행렬ì�„ ë‘�ê°œ 만들고, ë‘� ë°°ì—´ì�˜ í•©ì�„ ìœë ¥í•˜ëŠ” 프로그램ì�„ 짜보세요.
hint) Dp = (int**)malloc(sizeof(int*));

10.3회차 10번과제를 해결해와 주세요. �번�는 반드시 과제� 스펙� 완수해와야합니다. 모르면 물어���고, 다른 사람 코드를 참고해보아� 좋아요
//10.LinearSearch를 구현해보세요. 배열� 1000개로 잡고, random함수를 �용해 1부터 1000까지� 숫�를 랜�으로 배열� 넣� 후, 777� 배열내� 있었는지를 찾으면 �니다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void random(int a[]);
int main()
{
	int x;
	int a[1000];
	int i;
		
	srand(time(NULL));
	
	for(i=0;i<1000;i++)
	{
		x=1+rand()%1000;
		a[i]=x;
//		printf("%d ",a[i]);
	}
//	printf("\n");
	random(a);
	
	return 0;
}

void random(int a[])
{
	int find[1000]={0};
	int i;

	for(i=0;i<1000;i++)
	{
		if(a[i]==777)
			find[i]=i;	
		
		if(find[i]!=0)
			printf("777� %d번째� 있습니다\n",find[i]);
	}
	
} 
11.�번시간� 배웠� 내용� 바탕으로, int* a; int b; int **c;로 선언했�때 &c,c,*c,&a,a� 관해서 �� 설명하고, 어떤 것� 어떤 것과 �치하는 것�지를 �해할 수 있�� 쉬운�로 정리해보세요.
&c : c� 주소
c : c� 값(a� 주소)
*c : c가르키는 곳� 값(b� 주소)
&a : a� 주소
a : a� 값(b� 주소)
c==&a
*c==a==&b
12.예제 코드가 어떤 행�� 수행하고, 왜 그런 값� 나오는지 설명해 봅시다.
int* a;
int b=5;
int** c;
c=&a; // c� a� 주소 넣어 줌
a=&b; // a� b� 주소 넣어 줌
**c=9; // c� 방(?)� 9를 넣어 줌
printf("%d %d",*c,**c); // *c�는 a� 주소가 들어 가있고 **c�는 b� 값� 들어가 있다.

편집
1.5.1.2 예습

LinkedList� node를 선언하는 방법� 찾아보고, 왜 그런 형태�지 �해한만� �보�.
-struct Node{
char Name20;
struct Node *Next;
};
- ��터를 넣� Name��는 변수와 다� 노드를 가리킬수 있�� 하는 Next��터 변수를 선언했다.

Circular Queue가 무엇�지 찾아보�.
- 배열 기반� �가 �형으로 �루어진 �태.
- �형으로 �루어져 있기 때문� �가 가� 찼�때나 완전히 비어있�때 Front와 Rear� index는 ��하므로 Empty�지 Full�지 구분할 수 없다.

typedef가 무엇�지 알아보고, 간단한 예제를 �보�.
- 기존� 존재하는 �료형� 새로운 �름� 부여하는 것
typedef struct
{
char *name;
int age;
char sex;
}Student;

구조체를 사용하여 student 구조체를 하나 만들고, student 구조체 ë°°ì—´ì�„ 만들어 0~3번째 ë°°ì—´ì—� AClassë°˜ í•™ìƒ�들ì�˜ 정보를 ì �당히 넣고, 그것ì�„ ìœë ¥í•´ë³´ìž�.
구조체 내부� char 배열� 사용해서 �름� 넣어� 좋고, 학번� int형으로 넣어� 좋다.
� 과제가 무슨 ��지 �해가 안�는 경우 반드시 저�게 물어보고, 과제를 해야합니다.
#include <stdio.h>

typedef struct 
{
	char *name;
	int age;
	char sex;
	
}Student;
int main()
{
	Student Std[4];
	int i;

	Std[0].name="곽길문";
	Std[0].age=24;
	Std[0].sex='F';
	Std[1].name="���";
	Std[1].age=24;
	Std[1].sex='F';
	Std[2].name="한송�";
	Std[2].age=23;
	Std[2].sex='F';
	Std[3].name="황혜림";
	Std[3].age=22;
	Std[3].sex='F';
	

	printf("�름\t나�\t성별\n");
	for(i=0;i<4;i++)
	{
		printf("%s\t%d\t%c\n",Std[i].name,Std[i].age,Std[i].sex);
	}
	return 0;
} 

���

복습
1~6. Koistudy.net 106~111번
->풀었�!


7. Koistudy.net 125, 152번(둘다 하기 힘들면 하나만) 3n+1
accept받� 걸 스샷으로 �어� 좋아요 저번주� accept받는� 실패하신 분들� 저나 다른분들�게 물어�서 한번 해보�� 합시다^^
-> 못풀었�!

8. 다ì�Œ 형태로 ìœë ¥ë�˜ëŠ” 프로그램ì�„ ì§œ 보세요.
저번주 과제 8번� 실패하신 분들� 해당 문제를 푸셔� �니다. 아� �해가 잘 안가시면 저나 다른분들�게 물어�요
1  
3  2  
4  5  6
10 9  8  7
11 12 13 14 15
21 20 19 18 17 16

#include <stdio.h>
int main(){
	int i,j;
	int arr[6][6]={0,};
	int num=0;

	for(i=0 ; i<6 ; i++){
		if(i%2==0){
			for(j=0 ; j<=i ; j++) arr[i][j]=++num;
		}else{
			for(j=i ; j>=0 ; j--) arr[i][j]=++num;
		}
	}

		for(i=0 ; i<6 ; i++){
			for(j=0 ; j<6 ; j++){
				if(arr[i][j] != 0) printf("%3d",arr[i][j]);
			}
			printf("\n");
		}
	
	return 0;
}


9. 2중í�¬ì�¸í„°ë¥¼ ì�´ìš©í•˜ì—¬ 3x3행렬ì�„ ë‘�ê°œ 만들고, ë‘� ë°°ì—´ì�˜ í•©ì�„ ìœë ¥í•˜ëŠ” 프로그램ì�„ 짜보세요.
hint) Dp = (int**)malloc(sizeof(int*));
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
	int **p1;
	int **p2;
	int i,j;
	srand(time(NULL));
	p1=(int**)malloc(sizeof(int*)*3);
	p2=(int**)malloc(sizeof(int*)*3);
	for(i=0 ; i<3 ; i++){
		p1[i]=(int*)malloc(sizeof(int*)*3);
		p2[i]=(int*)malloc(sizeof(int*)*3);
	}
	
	for(i=0 ; i<3 ; i++){
		for(j=0 ; j<3 ; j++){
			p1[i][j]=1+rand()%9;
			p2[i][j]=1+rand()%9;
		}
	}
	for(i=0 ; i<3 ; i++){
		for(j=0 ; j<3 ; j++){
			printf("%3d",p1[i][j]);
		}
		printf("\n");
	}
	printf("\n");
	for(i=0 ; i<3 ; i++){
		for(j=0 ; j<3 ; j++){
			printf("%3d",p2[i][j]);
		}
		printf("\n");
	}
	printf("\n");
	for(i=0 ; i<3 ; i++){
		for(j=0 ; j<3 ; j++){
			p1[i][j]+=p2[i][j];
			printf("%3d",p1[i][j]);
		}
		printf("\n");
	}
	return 0;
}

10. 3회차 10번과제를 해결해와 주세요. �번�는 반드시 과제� 스펙� 완수해와야합니다. 모르면 물어���고, 다른 사람 코드를 참고해보아� 좋아요
LinearSearch를 구현해보세요. 배열� 1000개로 잡고, random함수를 �용해 1부터 1000까지� 숫�를 랜�으로 배열� 넣� 후, 777� 배열내� 있었는지를 찾으면 �니다. 프로그램� 실행시킬 때마다 결과가 달�지겠죠?
(rand()%1000� 한다면 1�서 1000까지� 숫�가 나올 것입니다.)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
	int arr[1000];
	int i;
	int count=0;
	srand(time(NULL));

	for(i=0 ; i<1000 ; i++){
		arr[i]=rand()%1000;
	}
	
	for(i=0 ; i<1000 ; i++){
		if(arr[i]==777){
			printf("%d번째� 777 존재\n",i+1);
			count++;
		}
	}
	printf("%d개 존재\n",count);
	if(count == 0){
		printf("777없�\n");
	}
	
	return 0;
}

11. �번시간� 배웠� 내용� 바탕으로, int* a; int b; int **c;로 선언했�때 &c,c,*c,&a,a� 관해서 �� 설명하고, 어떤 것� 어떤 것과 �치하는 것�지를 �해할 수 있�� 쉬운�로 정리해보세요.
	int* a;
	int b=10;
	int** c;

	a=&b;
	c=&a;
	printf("%d\n",a);  //b� 주소
	printf("%d\n",&a); //a� 주소
	printf("%d\n",*a); //b� 값
	printf("%d\n",b); //b� 값
	printf("%d\n",&b); //b� 주소
	printf("%d\n",c); //a� 주소
	printf("%d\n",&c); //c� 주소
	printf("%d\n",*c); //b� 주소


12. 예제 코드가 어떤 행�� 수행하고, 왜 그런 값� 나오는지 설명해 봅시다.
int* a;
int b=5;
int** c;
 c=&a;
 a=&b;
 **c=9;
 printf("%d %d",*c,**c);

b가 9로 변함!


예습

1. LinkedList� node를 선언하는 방법� 찾아보고, 왜 그런 형태�지 �해한만� �보�.

struct Node{
int data; //��터를 담� 공간
struct Node *NextNode; //다� 노드� 대한 ��터
};


2. Circular Queue가 무엇�지 찾아보�.
�형 �란 �� 배열(arrangement)� �형으로 표현하며 �를 구성하는 배열� 처�과 �� �어놓� 형태� �를 �합니다.
�를 위한 버�와, 시작과 �� 나타내는 �개� 값� 사용하게 �다.
�료를 넣�때는 ��스� 해당하는 위치�, 꺼낼때는 시작 �� 나타내는 ��스� 위치� 해당�는 버�� 위치�서 하게 �다.
작업� �어났�때는 작업� 해당하는 카운트를 �가시킴으로� 다� 번� �료를 넣�때 다� 위치�서 �뤄나�� 하는 것�다. ��스 버�� �� �달했�때는 다시 버�� 맨 앞� 가르켜 처�으로 �아가게 하면 �다.


3. typedef가 무엇�지 알아보고, 간단한 예제를 �보�.
typedef 명령문� 기존� 있는 �료형� 사용�가 �하는 �름으로 사용할 수 있게� 선언하는 명령문
<typedef � 사용법>
typedef <�료형> <선언명>;

<typedef � 사용 예>
typedef int AA;
AA num=500;



4. 구조체를 사용하여 student 구조체를 하나 만들고, student 구조체 ë°°ì—´ì�„ 만들어 0~3번째 ë°°ì—´ì—� AClassë°˜ í•™ìƒ�들ì�˜ 정보를 ì �당히 넣고, 그것ì�„ ìœë ¥í•´ë³´ìž�.
구조체 내부� char 배열� 사용해서 �름� 넣어� 좋고, 학번� int형으로 넣어� 좋다.
� 과제가 무슨 ��지 �해가 안�는 경우 반드시 저�게 물어보고, 과제를 해야합니다.
#include <stdio.h>

struct student{
	char name[20];
	int num;
	int age;
};

int main(){
	int i;
	struct student aclass[3]={{"곽길문",201001,24},
				  {"한송�",201002,23},
				  {"황혜림",201003,22}};

	for(i=0 ; i<3 ; i++){
		printf("%s %d %d\n",aclass[i].name,aclass[i].num,aclass[i].age);
	}
	return 0;
}


한송�


1~6 성공:D
10.3회차 10번과제를 해결해와 주세요. �번�는 반드시 과제� 스펙� 완수해와야합니다. 모르면 물어���고, 다른 사람 코드를 참고해보아� 좋아요
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(void){
	int i,ran,arr[1000]={0};
	
	srand(time(NULL));

	for(i=0;i<1000;i++){
		ran = 1+rand()%1000;
	}
		if(arr[i]==777){
			printf("777�I arr[%d]� 있습니다",i);
		}

		else
			printf("777�I 없습니다.");
		

		
	return 0;
}



12.예제 코드가 어떤 행�� 수행하고, 왜 그런 값� 나오는지 설명해 봅시다.
int* a;
int b=5;
int** c;
c=&a;
a=&b;
  • *c=9;
    printf("%d %d",*c,**c);

  • *c는 ì�´ìƒ�한값, **c는 9

    예습


    1.LinkedList� node를 선언하는 방법� 찾아보고, 왜 그런 형태�지 �해한만� �보�.
    NODE*CreateNode(char name [])
    {
    NODE*NewNode = (NODE*)malloc(sizeof(NODE));

    Strcpy(NewNode->Name,name);
    NewNode->NextNode = NULL;

    Return NewNode;
    }

    NODE* 를 반환하는 CreateNode다. NewNode�는 ��터를 �성후 그 해당하는 주소� malloc함수로 공간� 할당하고 있다.
    Malloc으로 할당한 공간� 해당 함수가 �나� 해제�지 않는다. �건 �성� 다른 메모리 공간� 할당 했기 때문�다.(?????)



    2. Circular Queue가 무엇�지 찾아보�.
    �를 구현하는 가장 �반�� 방법� 스�과 마찬가지로 배열� �용하는 방법�다. 그러나 단순배열로 할경우 배열� �기가 지정�어 있는 �태�서 ��타가 계� 추가�게 �면 어� 시��서 overflow 가 발�하게 �으로 ��타가 배열� �기를 초과하게 �면, 초과� ��타는 0번째 배열로 들어가게 해야 한다. �러한 구조가 환형구조와 같다고 해서 보통 환형�(circular queue) �고 한다


    3. typedef가 무엇�지 알아보고, 간단한 예제를 �보�.
    1)기존 �료형� �름� 프로그램 내부�서 다른 �름으로 사용할 수 있게 하는 것
    Typedef 기존_�료형_�릉 새로운_�료형_�름;
    예) typedef unsigned char uchar;
    2)헤�파��서 typedef사용하기
    Typedef는 공통�으로 사용하는 헤�파�� 선언� 해주어야 모든 소스파��서 사용할수 있다
    //typedef를 사용하면 새로운 �료형� 기존� �료형처럼 사용할 수 있다.

    #include<stdio.h>
    typedef int Num;
    int main(){
    	Num a=10;
    	int b=20;
    
    	printf("sum = %d\n",a+b);
    
    	return 0;
    }
    

    typedef� 정�하면 int나 char 등� �료형� �신� �하는 명칭으로 바꾸어서 사용� 가능하다.
    먼저 typedef� 전역 변수 지역� 선언 해준다. 예제�서는 int형� NUM으로 명칭� 바꾼 것�다.

    그리고 보통 �료형 int 처럼 사용하면 �다. NUM� �용한 변수 값과, int를 �용한 변수� 값� 서로 연산� 해보면 정확하게 값� 나온다.

    4. 구조체를 사용하여 student 구조체를 하나 만들고, student 구조체 ë°°ì—´ì�„ 만들어 0~3번째 ë°°ì—´ì—� AClassë°˜ í•™ìƒ�들ì�˜ 정보를 ì �당히 넣고, 그것ì�„ ìœë ¥í•´ë³´ìž�.
    o 구조체 내부� char 배열� 사용해서 �름� 넣어� 좋고, 학번� int형으로 넣어� 좋다.
    o � 과제가 무슨 ��지 �해가 안�는 경우 반드시 저�게 물어보고, 과제를 해야합니다.
    #include<stdio.h>
    #include<string.h>
    
    int main(void){
    	
    	struct student{
    		char name[10];
    		int age;
    	};
    	struct student s[4];
    	int i;
    
    	strcpy(s[0].name,"한송�");
    	s[0].age = 23;
    
    	strcpy(s[1].name,"���");
    	s[1].age = 24;
    
    	strcpy(s[2].name,"곽길문");
    	s[2].age = 24;
    
    	strcpy(s[3].name,"황혜림");
    	s[3].age = 22;
    
    	for(i=0;i<4;i++){
    	printf("�름 : %s\n",s[i].name);
    	printf("나� : %d\n",s[i].age);
    	}
    
    	return 0;
    }
    
    


    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:29:45
    Processing time 0.0181 sec