객체지향 10월 16일

2013. 10. 16. 16:423학년 2학기

객체지향언어

 

 

 

 

http://ehard.co.kr/ 를 간다.

 

비밀번호 sil003을 입력을 하고 비밀번호를 영타로 객체지향(rorcpwlgid)을 입력을 한다.

 

 

C _Class문법_1.pdf

 

C _Class문법_2.pdf

 

C 수업2(10월2일).pdf

 

C뿔_수업3.pdf

 

C수업1[9월25일].pdf

 

 

 

 

 

 

 

 

수업자료들이다. 시험은 다음주 10월 23일 수요일 오후 3시에 40분간 시험을 친다.

 

const int STUDENTS=5; //한번 값을 하면 다음에 못한다 . 상수라서.
int grade[STUDENTS]; //배열이다 방이 5개  ,
int i;
for(i=0;i<STUDENTS;i++) {
}                               //5회 돈다.

 

1. a[]={90,80,70,60,50}의 총점과 평균을 구하시오

 

#include<iostream>

using namespace std;

void main() {

 int a[]={90,80,70,60,50};
 int i;
 int tot=0;
 double avg;
 for(i=0; i<5; i++)  {
  tot=tot+a[i];
 }
 avg = tot/5;
 cout<<tot<<"\t"<avg<<endl;
}


에러 1개 뜬다.

 

2. a[]={90,80,70,60,50,10} 최대값과 최소값을 구하시오
실행결과
최대값=90
최소값=10

 

 

#include<iostream>

using namespace std;

void main()
{
 int a[]={90,80,70,60,50,10};
 int i, max, min;
 max=min=a[0];
 for(i=1; i<6; i++)
 {
  if(a[i]>max) max=a[i];
  if(a[i]<min) min=a[i];

  cout<<max<<"\t"<<min<<endl;
 }

}

 -------------------------------------------------------------------

-------------------------------------------------------------------

#include<iostream>

using namespace std;

void main()
{
 int a[]={90,80,70,60,50,10};
 int i, max, min;
 max=min=a[0];
 for(i=1; i<6; i++)
 {
  if(a[i]>max) max=a[i];
  if(a[i]<min) min=a[i];
 }
  cout<<max<<"\t"<<min<<endl;
 

}

-----------------------------------------------------------------

for문을 잘 못 닫았다.

 

 

 

그다음

 

i = 0

 

i = 1

j = 2 ~5

...

 

i = 4

j = 5

 

 

이 3단계가 중요하다.

 

3. a[]={90,80,70,60,50,10} 오름차순으로 정렬하시오
실행결과
10 50 60 70 80 90

----------------------------------------------------------------------

#include<iostream>

using namespace std;

void main()
{
 int a[]={90,80,70,60,50,10};
 int i, j, temp;
 for(i=0; i<5; i++) {
  for(j=i+1; j<0; j++)  {
   if(a[i]>a[j]) {
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
   }
  }
 }
 for(i=0; i<6; i++) {
  cout<<a[i]<<"\t";
 }
 cout<<endl;
}
-------------------------------------------------------------------- 

 

 

if(a[i]<a[j]) {  // 오름차순, < 내림차순

 

#include<iostream>

using namespace std;

void main()
{
 int a[]={90,80,70,60,50,10};
 int i, j, temp;
 for(i=0; i<5; i++) {
  for(j=i+1; j<0; j++)  {
   if(a[i]<a[j]) {
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
   }
  }
 }
 for(i=0; i<6; i++) {
  cout<<a[i]<<"\t";
 }
 cout<<endl;
}

 

지금 오림차순인데 내림차순으로 하려고하는데 어떻게 해야될까 이 식은 되질 않는다.

 

수정!!
#include<iostream>

using namespace std;

void main()
{
 int a[]={90,80,70,60,50,10};
 int i, j, temp;
 for(i=0; i<5; i++) {
  for(j=i+1; j<6; j++)  {                    
if(a[i]>a[j]) {
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
   }
  }
 }
 for(i=0; i<6; i++) {
  cout<<a[i]<<"\t";
 }
 cout<<endl;
}

 

for(j=i+1; j<6; j++)  이것을 수정을 하니가 바뀌었다.

 

 

8. a[]={10,50,60,70,80,90} 오름차순으로 정렬되어 있다고 가정하다. 찾을 값을 입력하여 a배열에서 찾을 경우
“OK" 출력하고, 찾을 수 없을 경우 “Error" 출력

 

단순하게 찾을 값을 구하면 최대 7번... 오름차순으로 가정하고 할 것이다.

70이라는 단어를 검색을 하고싶다.

 

1.중간 지점을 물어본다. 2등분을 하여서 60에게 물어 본다. 없으면 드 뒤에서 이등분 해서 물어 본다. 없을 경우 앞에 물어 본다. 이분 검색

 

*오름차순으로 정렬 되어있다는 전제!!

 

key는 70으로 입력                                                               i가 아니라 s                                      h가 아니라 m

 

 

<분석을 해보아야 된다 흐름도를 분석하여라>

--------------------------------------------------------------------------------------------------------------

#include<iostream>

using namespace std;

void main()
{

 int a[]={10,50,60,70,80,90};
 int s=0,e=5, m, i, key;
 cin>>key; //70 , 75

 

 for(i=0; i<6; i++)  {   //6번 돌린다
  m=(s+e)/2;
  if(key==a[m])  {
   cout<<"찾음"<<endl;
   break;
  }
  if(key>a[m]) s=m+1;
  else e=m-1;
  if(s > e)   {
   cout<<"찾을수 없음"<<endl;
   break;
  }
 }
}

-----------------------------------------------------------------------------------------

몇 회 만에 찾음을 넣기

#include<iostream>

using namespace std;

void main()
{

 int a[]={10,50,60,70,80,90};
 int s=0,e=5, m, i, key;
 int cnt=0;
 cin>>key; //70 , 75

 

 for(i=0; i<6; i++)  {   //6번 돌린다
  m=(s+e)/2;

  cnt=cnt+1;
  if(key==a[m])  {
   cout<<cnt<<"회만에 찾음"<<endl;
   break;
  }
  if(key>a[m]) s=m+1;
  else e=m-1;
  if(s > e)   {
   cout<<cnt<<"회만에 찾을수 없음"<<endl;
   break;
  }
 }
}

------------------------------------------------------------------------------------

 

포인터

6장 포인터와 문자열
C++ 의 메모리는 몇 가지의 영역으로 나뉘어서 사용한다.
1) 코드 공간(code space) : 코드 공간에는 프로그램 코드가 저장된다.
2) 전역 공간(global namespace) : 전역 공간에는 전역 변수들이 생성된다.

//밖에 적은 걸 전역이라 한다. main 안이면 지역이다. 밖은 전역이다. (main을 기준)


*아주 중요한 부분

 

3) 스택(stack) : 스택은 프로그램이 실행하면서 사용하는 공간이다. 스택은 주로 함수 호출 시에 함수 매개 변수와 함수 안의 지역 변수를 생성하는 공간이다. 프로그래머는 함수 안에 선언한 변수들을 따로 제거할 필요 없으며 동적으로 소멸된다. 단 전역변수는 관리가 어렵다.

//우리들이 int i 여기서 i는 스택에 잡힌다.


4) 히프(heap) : 위의 영역을 제외한 나머지 공간이다. 프로그래머가 동적 할당을 이용하여 얼마든지 사용할 수 다. 장점은 히프에서 할당받으면 함수가 종료되더라도 메모리 공간이 없어지지 않으므로 반드시 반납하여야 한다.

//힙 영역 동적영역. c++에서는 힙을 언급을 한다.

프로그래머가 동적영역에 만들수 있다. 동적영역이란(사용후에 메모리를 반납 시켜야한다.//반드시!!! 소멸시켜줘야한다.)

 

*pi //pi변수는 포인터 변수다. (선언)

pi = new int; 4bit 잡아서 pi를 준다. 힙영역에 공간을 생성한다. pi에 넣는다.

 

+pi = 100 // pi 포인트 속에 ~~ > 100을 넣어라 (따라간 그자리에 100을 넣어라) 선언된 그속에 따라가서 100을 넣어라.

 

delete 0; // pi따라가서 다 지운다.

프로그램을 찍어 보면 (new를 새로 배웠다.)

 

#include<iostream>

using namespace std;

void main()
{

 int *pi; //pi는 포인터 변수
 pi=new int; // *pi 가 아니다. 힙영역에 4bit 공간이 생성되었다.
 *pi=100;
 cout<<*pi<<endl;
 //반납을 해라
 delete pi;
 cout<<*pi<<endl;  //쓰레기값 등장

}

 

 

 

#include<iostream>

using namespace std;

void main()
{

 int *pi; //pi는 포인터 변수
 pi=new int; // *pi 가 아니다. 힙영역에 4bit 공간이 생성되었다.
 *pi=100;
 cout<<*pi<<endl;
 //반납을 해라
 delete pi;             //힙영역에서 할당된 pi를 반납
 pi=new int;
 *pi=200;
 cout<<*pi<<endl;  //

}

 

 

객관식 주관식 같이 나오는데 객관식이 많다.

주관식을 할때 전부다 작성을 한다. 10문제 객관식 6문제. 3개 출력을 해서 공부를 해라.

코딩했는거 넣기랑 설명하기도 한다. ex 이분법에 대해서 설명을 해라

처음부터 다 작성하는 건 안나온다.

객관식 설명 (이부분에 대해서 설명하라)

비쥬얼 베이직을 어떻게 실행하여라 이런건 안나온다.

 

1장 2장 3장 4장 5장

 

'3학년 2학기' 카테고리의 다른 글

대구대 배달  (0) 2013.11.03
10.11.13 자동제어 수업시간  (0) 2013.10.11