2013. 10. 16. 16:42ㆍ3학년 2학기
객체지향언어
http://ehard.co.kr/ 를 간다.
비밀번호 sil003을 입력을 하고 비밀번호를 영타로 객체지향(rorcpwlgid)을 입력을 한다.
수업자료들이다. 시험은 다음주 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 |