//go to 는 절대 쓰지 않는다.
//switch 의 경우 쓸일이 적음
#include <iostream>
using namespace std;
void main(void)
{
int income, tax;
cout <<"Enter income: ";
cin>>income;
if(income<=1000)
tax =(int)(0.09*income); // 형변환(type casting)
else if(income<4000)
tax =(int)(0.18*income);
else if(income<=8000)
tax =(int)(0.27*income);
else
tax =(int)(0.36*income);
cout<<tax<<endl;
}
#include <iostream>
using namespace std;
void main(void)
{
int fruit;
cout<<"Enter number: ";
cin>>"fruit";
switch (fruit)
{
case 1 : cout<<"apple \n";
break;
case 2 : cout<<"pear \n";
break;
case 3 : cout<<"banana \n";
break;
default:cout<<"fruit \n";
break;
}
}
#include <iostream>
using namespace std;
void main(void)
{
int days, month, year;
cout << "일수를 알고 싶은 해의 달을 입력하시오: ";
cin>> year>>month;
switch (month){
case 1 : case 3 : case 5:
case 7 : case 8 : case 10: case 12:
days=31;
break;
case 4 : case 6: case 9: case 11:
days=30;
break;
case 2:
if(((year%4==0)&&(year%100 !=0)) ||(year%400==0))
days=29;
else
days=28;
break;
default:
cout <<"입력이상"<<endl;
break;
}
cout<<"월의 날수는"<<days<<endl;
}
#include <iostream>
using namespace std;
void main(void)
{
int n, i;
cout <<"출력단을 입력:";
cin>> n;
i=1;
while(i<=9)
{
cout<<n<<"*"<<i<<"="<<n*i<<endl; //구구단 만들기
i++; //지속적으로 값을 높여줘야지 가능
}
}
#include <iostream>
using namespace std;
void main(void)
{
int x,y,r; //최대 공약수 만들기
cout<< "두개의 정수 입력(큰수, 작은수): "; // 숫자에 대해서 나오는 순서는 상관이 없다
cin >>x>>y;
while(y !=0)
{
r=x%y; //나머지 계산하기
x=y;
y=r;
}
cout <<"최대공약수는"<<x<<"입니다.\n";
#include <iostream>
#include <cstdlib> //시간값
#include <ctime>
using namespace std;
void main(void)
{
int answer, guess;
int tries=0;
srand(time(NULL)); //시간에 따라 난수 발생기 변환
answer = 1 + rand()%50; //1~50까지 만드는거
do
{
cout<<"정답 추측:";
cin>>guess;
tries++;
if(guess>answer)
cout<<"너무 큼.\n";
if(guess<answer)
cout<<"너무 작음.\n";
}
while (guess!=answer);
cout<<"횟수: "<<tries<<endl;
#include <iostream>
using namespace std;
void main(void)
{
double fact =1; //곱을 구하는 경우 1로 초기화
int n;
cout<<"정수 입력: ";
cin >>n;
for(int i =1; i<=n; i++)
fact *=1; //fact=fact*i;
cout<<n<<"!은"<<fact<<"입니다\n";
cout <<fixed;
cout.precision(4);
cout <<n<<"!은 "<<fact<<"입니다\n";
printf("%.4lf\n", fact);
}
#include <iostream>
using namespace std;
void main(void)
{
double value;
while(true) //무한 loop, for(;;)
{
cout<<"실수값 입력: ";
cin>>value;
if(value<0.0)
break;
cout<<value<<"의 제곱근은"<<sqrt(value)<<"입니다.\n";
}
}
#include <iostream>
using namespace std;
void main(void)
{
char letter;
while(true)
{
cout<<"ENTER LOWER CASE LETTER:";
cin>>letter;
if(letter == 'Q')
break;
if(letter <'a'|| letter>'z')
continue;
letter-=32;
cout<<"대문자:"<<letter<<endl;
}
}
#include <iostream>
using namespace std;
void main(void)
{
double x1, y1, x2, y2, x3, y3;
double slope1, slope2;
cout<<"첫번째 점의 위치를 알려주세요(X,Y 좌표)"<<endl;
cin>>x1>>y1;
cout<<"두번째 점의 위치를 알려주세요(X,Y 좌표)"<<endl;
cin>>x2>>y2;
cout<<"세번째 점의 위치를 알려주세요(X,Y 좌표)"<<endl;
cin>>x3>>y3;
slope1 = (y2-y1)/(x2-x1);
slope2 = (y3-y1)/(x3-x1);
cout<<slope1<<","<<slope2;
if(slope1==slope2)
cout<<"삼각형 불가"<<endl;
else
cout<<"삼각형 가능"<<endl;
}
#include <iostream>
using namespace std;
void main(void)
{
int num, i=0;
int decimal =0;
int digit;
cout<<"2진수를 입력해 주시길 바랍니다"<<endl;
cin>> num;
cout<<"2진수를 10진수로"<<endl;
while(num !=0)
{
digit= num%10;
decimal = decimal + digit * pow(2.0, i);
num /=10;
i++;
}
cout <<decimal<<endl;
}
#include <iostream>
#include <cmath>
using namespace std;
void main()
{
int num, i, decimal = 0;
int digit;
cout << "Enter binary number : ";
cin >> num;
while(num != 0)
{
digit = num %10;
decimal = decimal + digit * pow(2.0, i);
num /= 10;
i++;
}
cout << decimal << endl;
}
#include <iostream>
#include <cctype>
using namespace std;
void main()
{
char ch;
cout<<"문자를 입력:";
cin>>ch;
if(isupper(ch)) // ----> 대문자로 변환하고 싶으면 islower(ch)
{
ch=tolower(ch); //소문자로 변환 // ----> 대문자로 변환하고 싶으면 toupper(ch)
cout<<ch<<endl;
}
else
cout<<"대문자를 입력"<<endl;
}
//cin은 공백, 개행문자 무시
//따라서 공백이나 개행문자를 읽으려면 cin.get() 사용 (엔터키를 쓸때까지)
void main()
{
char ch;
int count=0;
cout<<"입력:";
//cin>>ch; cin은 안됨
ch=cin.get();
while(ch!='\n')
{
if(ch=='a')
count++;
ch=cin.get();
}
cout<<"a 개수"<<count<<endl;
}
int compute_sum(int);
void main()
{
int n,sum;
cout<<"Enter number:";
cin>>n;
sum=compute_sum(n); /// 값에 의한 호출 Call-by-Value
cout<<sum<<endl;
cout<<&n<<endl;
}
int compute_sum(int n)
{
int result=0;
cout<<&n<<endl;
for(int i=0;i<=n;i++)
result+=i;
return result;
}
// 디폴트 매개변수는 함수 원형에만 정의, 반드시 뒤에서부터 정의한다, 되도록 사용하지 않는다
int calc_deposit(int salary=200,int month=12);
void main()
{
cout<<"default parameter 0\n";
cout<< calc_deposit(100,6) <<endl;
cout<<"default parameter 1\n";
cout<< calc_deposit(100) <<endl;
cout<<"default parameter 2\n";
cout<< calc_deposit() <<endl;
}
int calc_deposit(int s,int m)
{
return s*m;
}
#include <iostream>
using namespace std;
// inline 함수, 길이가 짧은 함수의 경우 함수 호출에 대한 overhead를 줄일 수 있다.
inline double square(double);
void main()
{
double result;
cout<<square(2.0)<<endl; // 2.0*2.0으로 치환
cout<<square(3.0)<<endl; // 3.0*3.0으로 치환
}
double square(double n)
{
return n*n;
}
// 변수의 scope(사용 영역) 예제
void Function(int);
int num; // 전역변수,함수 외부에서 선언
// 모든 함수에서 사용 가능
// 자동으로 초기화(0)
// 되도록 사용하지 않는다
void main()
{
int val=10; // 지역변수,함수 내부에서 선언
// 지역변수는 선언된 함수 내에서만 사용 가능
// 자동 초기화 안됨
cout<<num<<","<<val<<endl;
function(val); // 함수에서 값을 바꿔도 변하지 않는다
cout<<num<<","<<val<<endl;
}
void function(int n)
{
int val=100; // 함수가 다르면 동일 이름의 변수 사용 가능
// 지역변수는 사용영역이 함수 내부로 제한되기 때문
n=1000;
num=200;
}
// static변수
void function();
void main()
{
for(int i=0;i<5;i++)
function();
}
void function()
{
int num=0; // 지역변수
static int snum=0; // static 변수는 단 한번만 초기화 된다.
// 호출되면 변화된 값을 유지한다.
cout<<num<<","<<snum<<endl;
num++;
snum++;
cout<<"function 호출 횟수: "<<snum<<endl;
}
extern int sum; // 외부 파일에 있는 변수, 전역변수만 extern이 될 수 있다
extern int get_square(int); // 외부 파일에 있는 함수;
void main()
{
int num=5;
cout<<get_square(num)<<endl;
cout<<sum<<endl;
}
const int STUDENTS=5; // 통상 상수는 main 함수 이전에 선언
void main()
{
int grade[STUDENTS]; // 변수로는 배열 크기 설정할 수 없음
int sum=0,i,average;
/*
int num=10;
int score[num];
*/ // 컴파일 에러----> const를 붙여주자
for(i=0;i<STUDENTS;i++)
{
cout<<"성적 입력: ";
cin>>grade[i];
}
for(i=0;i<STUDENTS;i++)
sum+=grade[i];
average=sum/STUDENTS;
cout<<"평균: "<<average<<endl;
}
const int SIZE=5;
void main()
{
int a[SIZE] = {1,2,3,4,5};
int b[SIZE],i;
for(i=0;i<SIZE;i++) // b=a; error
b[i]=a[i];
for(i=0;i<SIZE;i++) // a=b; error
if(a[i]!=b[i])
{
cout<<"다른 배열\n";
break;
}
if(i==SIZE)
cout<<"같은 배열\n";
}
void main()
{
int grade[100];
int i,max,min;
srand((unsigned int)time(NULL));
for(i=0;i<10;i++)
{
grade[i]=rand();
cout<<grade[i]<<endl;
}
max=min=grade[0];
for(i=1;i<10;i++)
{
if(max<grade[i])
max=grade[i];
if(min>grade[i])
min=grade[i];
}
cout<<"Max: "<<max<<endl;
cout<<"Min: "<<min<<endl;
}
int global_array[5]; // 전역 배열은 자동 초기화
void main()
{
int local_array[5]={0}; // 지역 배열은 자동 초기화 되지 않는다
int grade[]={31,52,43,34,25};
for(int i=0;i<5;i++)
{
cout<<global_array[i]<<endl;
cout<<local_array[i]<<endl;
cout<<grade[i]<<endl<<endl;
}
}
void main()
{
int freq[10];
int i,score;
for(i=0;i<10;i++)
freq[i]=0;
while(true)
{
cout<<"숫자 입력(0-9(종료-1)) : ";
cin>>score;
if(score<0)
break;
freq[score]++; // 입력값을 배열의 첨자로 활용
}
cout<<"값 빈도\n";
for(i=0;i<10;i++)
cout<<i<<" "<<freq[i]<<endl;
}
void main()
{
int array[10]={0}, i;
int num,max;
srand((unsigned int)time(NULL));
for(i=0;i<100;i++)
{
num=rand()%10;
array[num]++; // array[rand()%10]++;
}
for(i=0;i<10;i++) // 배열 출력
cout<<i<<" : "<<array[i]<<endl;
max=0; // 최댓값 찾기
for(i=1;i<10;i++)
if(array[max]<array[i])
max=i;
cout<<"가장 많이 생성된 수는: "<<max<<endl;
cout<<"횟수 : "<<array[max]<<endl;
}
#include <iostream>
#include <iomanip> // setw() 칸수 제어
using namespace std;
void main()
{
int s[3][5] = { 0 };
int i, j, value = 0;
for (i = 0; i < 3; i++)
for (j = 0; j < 5; j++)
s[i][j] = value++;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 5; j++)
cout << setw(3) << s[i][j]; // ==printf("%3d",s[i][j])
}
cout << endl;
}
#include <iostream>
using namespace std;
void main()
{
int grade[8] = { 3,6,1,3,6,7,5,7};
int select[8] = { 0 };
for (int i = 0; i < 8; i++)
cout << grade[i] << " ";
cout << endl << endl;
for (int i = 0; i < 8; i++)
{
for(int j=0;j<8;j++)
if (grade[j] > grade[j + 1])
{
select[j] = grade[j];
grade[j] = grade[j + 1];
grade[j + 1] = select[j];
}
}
for (int i = 0; i < 8; i++)
cout << grade[i] << " ";
}
#include <iostream>
#include <ctime>
using namespace std;
void main()
{
int i;
time_t start, end; // time_t == long
start = clock();
for (int i = 0; i < 10000000; i++); // 천만번
end = clock();
cout << (double)(end - start) / CLOCKS_PER_SEC << endl << endl;
} // 천만번까지 세는데 시간
#include <iostream>
using namespace std;
const int SIZE=10;
void selection_sort(int list[],int n);
void print_list(int list[],int n);
int main()
{
int grade[SIZE]={3,2,9,7,1,4,5,9,2,8};
cout<<"원래의 배열"<<endl;
print_list(grade,SIZE);
selection_sort(grade,SIZE);
cout<<"정렬된 배열"<<endl;
print_list(grade,SIZE);
return 0;
}
void print_list(int list[],int n)
{
int i;
for(i=0;i<n;i++)
cout<<list[i]<<" ";
cout<<endl;
}
void selection_sort(int list[],int n)
{
int i,j,temp,least;
for(i=0;i<n-1;i++)
{
least=i;
for(j=i+1;j<n;j++)
{
if(list[j]<list[least])
least=j;
}
temp=list[i];
list[i]=list[least];
list[least]=temp;
}
}
#include <iostream>
using namespace std;
const int SIZE=10;
int binary_search(int list[],int n,int key);
int main(void)
{
int key;
int grade[SIZE]={1,2,3,4,5,6,7,8,9};
cout<<"탐색할 값을 입력하시오:";
cin>>key;
cout<<"탐색결과:"<<binary_search(grade,SIZE,key)<<endl;
return 0;
}
int binary_search(int list[],int n,int key)
{
int low,high,middle;
low=0;
high=n-1;
while(low<=high)
{
middle=(low+high)/2;
if(key==list[middle])
return middle;
else if(key>list[middle])
low=middle+1;
else
high=middle-1;
}
return -1;
}
//모든 포인터 변수는 타입에 관계 없이 4바이트를 할당한다
//포인터 변수는 메모리 주소를 갖기 위한 변수이고
//주소는 4바이트를 사용하기 때문이다.
#include <iostream>
using namespace std;
void main()
{
int i=30;
int *pi=&i;
printf("%d %d\n",&i,i);
printf("%d %d %d\n",pi,*pi,&pi);
// pi: 포임터 변수가 참조하는 곳의 주소
// *pi: 포인터 변수가 참조하는 곳의 값
// &pi: 포인터 변수의 메모리 주소
char ch='a';
char *pc;
pc=&ch;
printf("%c %d\n",ch,&ch);
printf("%c %d %d\n",*pc,pc,&pc);
double d=3.14;
double *pd=&d;
printf("%.2lf %d\n",d,&d);
printf("%.2lf %d %d\n",*pd,pd,&pd);
printf("%d %d %d\n",sizeof(pi),sizeof(pc),sizeof(pd));
}
void main()
{
int i=10;
int *ptr;
ptr=&i;
printf("%d %d\n",i,&i);
printf("%d %d %d\n",*ptr,ptr,&ptr);
*ptr=100;
printf("%d %d\n",i,&i);
printf("%d %d %d\n",*ptr,ptr,&ptr);
(*ptr)++;
printf("%d %d\n",*ptr,i);
*ptr+=1;
printf("%d %d\n",*ptr,i);
printf("%d %u %x %x %p\n",&i,&i,&i,&i,&i);
}
void main()
{
char ch[]={'a','b','c'};
int num[]={1,2,3};
double d[]={1.1,2.2,3.3};
char *pc=ch; // 배열의 이름은 배열의 시작 주소를 의미한다.
int *pi=num;
double *pd=d;
printf("%d %d %d\n",ch,num,d);
printf("%d %d %d\n",pc,pi,pd);
pc++; // 자료형에 따라 더하는 값이 바뀜 -> char형이므로 1바이트므로 1개씩
pi++; // int형이므로 4바이트이므로 4개
pd++;
printf("%d %d %d\n",pc,pi,pd);
pi=&num[2];
cout<<*pi<<","<<num[2]<<endl;
//num=pi; 배열의 주소는 바꿀수 없다.(배열상수,포인터변수)
}
void main()
{
int num[]={10,20,30};
int *pi=num;
for(int i=0;i<3;i++)
{
cout<<num[i]<<","<<*(pi+i)<<endl;
cout<<&num[i]<<","<<pi+i<<endl;
}
for(int i=0;i<3;i++)
{
cout<<num[i]<<","<<*pi<<endl;
cout<<&num[i]<<","<<pi<<endl;
pi++; // pi의 기준값이 바뀜
}
cout<<pi<<endl; // 범위에 벗어난 값
pi=num;
cout<<pi<<endl; // 배열의 시작위치로 이동
}
void main()
{
int *pi=NULL; // NULL로 초기화하는 경우(아무것도 가리키지 않는다)
pi=new int; // pi가 참조하는 4바이트 할당
cout<<pi<<" : "<<*pi<<endl;
*pi=100;
cout<<pi<<" : "<<*pi<<endl;
delete pi;
int *ptr=new int[5];
for(int i=0;i<5;i++)
{
cout<<"Enter number :";
cin>>ptr[i];
}
for(int i=0;i<5;i++)
cout<<ptr[i]<<endl;
delete []ptr;
}
void main()
{
int num;
int *ptr;
cout<<"Enter number of data: ";
cin>>num;
// int arr[]; 배열을 쓰면 메모리를 무조건 정해주어야한다. 만약에 10000개를 써놓고 100개만 쓰면
// 엄청난 데이터의 손실이 되기때문에 메모리 동적할당을 하게 되면 나중에 메모리를
// 쓰고 싶은 만큼 쓸 수 있다
ptr=new int[num]; // 동적 메모리 할당
// 실행 시간에 필요한 메모리 할당 가능
for(int i=0;i<num;i++)
{
cout<<"Enter data: ";
cin>>ptr[i];
}
for(int i=0;i<num;i++)
cout<<ptr[i]<<endl;
delete []ptr;
}
#include <iostream>
using namespace std;
void swap2(int *,int *); //call by reference(주소는 반드시 포인터로 받는다)
void main()
{
int n1=10,n2=20;
cout<<&n1<<","<<&n2<<endl;
swap2(&n1,&n2);
cout<<n1<<","<<n2<<endl;
}
void swap2(int *n1,int *n2) // 주소는 반드시 포인터로 받는다
{
int temp;
cout<<n1<<","<<n2<<endl; // main의 변수들과 같은 주소
temp=*n1;
*n1=*n2;
*n2=temp;
cout<<"swap2: "<<*n1<<","<<*n2<<endl;
}
#include <iostream>
using namespace std;
void min_max(int [],int *,int *);
void main()
{
int array[]={3,2,5,6,4};
int min,max;
min_max(array,&min,&max); // min,max의 주소 전달
cout<<"Min: "<<min<<endl;
cout<<"Max: "<<max<<endl;
}
void min_max(int a[],int *min,int*max)
{
int i;
*min=*max=a[0];
for(i=1;i<5;i++)
{
if(*min>a[i])
*min=a[i];
if(*max<a[i])
*max=a[i];
} //main에 있는 min,max의 주소에 값을 저장
}
#include <iostream>
using namespace std;
/*
void get_sum_diff(int *a,int *b,int *p_sum,int *p_diff);
void main()
{
int A=10,B=20;
int sum;
int diff;
get_sum_diff(&A,&B,&sum,&diff);
cout<<"두 수의 합:"<<sum<<"두 수의 차:"<<diff<<endl;
}
void get_sum_diff(int *a,int *b,int *p_sum,int *p_diff)
{
*p_sum=*a+*b;
*p_diff=*a-*b;
}
*/ ---------------> 수의 합과 차
void get_sum_diff(int A[],int B[],int *p_sum,int *p_diff)
{
for(int i=0;i<5;i++)
{
p_sum[i]=A[i]+B[i];
p_diff[i]=A[i]-B[i];
}
cout<<"두 배열의 합"<<endl;
for(int i=0;i<5;i++)
{
cout<<p_sum[i]<<" ";
}
cout<<endl<<endl;
cout<<"두 배열의 차"<<endl;
for(int i=0;i<5;i++)
{
cout<<p_diff[i]<<" ";
}
}
void main()
{
int A[5]={5,4,3,2,1};
int B[5]={1,2,3,4,5};
int sum[5];
int diff[5];
get_sum_diff(A,B,sum,diff);
} ----------------------> 배열의 각각 합과 차
#include <iostream>
#include <string>
using namespace std;
void Swap(int *,int *);
void main()
{
int A[5]={1,2,3,4,5};
int B[5]={9,8,7,6,5};
Swap(A,B);
}
void Swap(int *a,int *b)
{
int temp[5];
for(int i=0;i<5;i++)
{
temp[i]=a[i];
a[i]=b[i];
b[i]=temp[i];
}
cout<<"A[]"<<endl;
for(int i=0;i<5;i++)
{
cout<<a[i]<<" ";
}
cout<<endl<<endl;
cout<<"B[]"<<endl;
for(int i=0;i<5;i++)
{
cout<<b[i]<<" ";
}
} ---------------> 배열의 값을 서로 바꾸는것
/*
void main()
{
string s1="This is a test";
string s2;
cout<<s1<<endl;
cout<<"Enter string:";
cin>>s2;
cout<<s2<<endl;
}
*/ ---------------> string 함수
void main()
{
string s1; // ----> string은 널문자 포함 안함
cout<<"enter string: ";
getline(cin,s1,'\n'); // 전체 라인 입력, '\n'은 default(지워도 상관없음) 끝점의 기준을 정해준
cout<<s1.size()<<endl; //문자열의 길이
cout<<s1.length()<<endl; //문자열의 길이
s1.insert(4,"Hello"); // 4번째 문자에 "Hello"를 넣어라
cout<<s1<<endl;
s1.erase(4,5); // 4번에서부터 5글자를 삭제하라
cout<<s1<<endl;
if(s1.empty())
cout<<"empty string"<<endl;
else
cout<<"not empty string"<<endl;
s1.erase(); // 전체 삭제
cout<<s1<<endl;
}
void main()
{
string s1="Money";
string s2=" has no value";
string s3=s1+s2; // +연산자로 문자열 연결, =연산자로 문자열 치환
s1+=s2;
cout<<s1<<endl;
cout<<s2<<endl;
cout<<s3<<endl;
string str1("Slow"),str2("steady"); // string객체를 만드는 다른방법
string str3="the race";
string s4=str1+" and "+str2+" wins "+str3;
cout<<s4<<endl;
if(s1==s2) //string 비교 ------> strcmp사용할 필요 없다
cout<<"same"<<endl;
else
cout<<"different"<<endl;
}
/*
void main()
{
string s;
cout<<"주민번호 입력(-포함) :";
cin>>s;
for(int i=0;i<s.size();i++) // ---> string은 배열처럼 사용가능
{
if(s[i]!='-') // string의 각 문자 점검(배열 사용)
{
cout<<s[i];
}
//if(s.at(i)!='-') // 함수 사용
cout<<s.at(i);//
}
}
*/
void main()
{
char str[30];
string name;
cout<<"Enter string:";
cin.getline(str,30); // iostream 함수 --> 배열인 경우에만 사용가능
cout<<str<<endl;
cout<<"Enter string:";
getline(cin,name,'\n'); // '\n'은 default,string 함수 --> string인 경우에만 사용가능(이걸 자주 사용하자)
cout<<name<<endl;
}
void main()
{
string str;
int numA=0,numB=0,numC=0;
cout<<"문자열을 입력하시오:";
getline(cin,str); // cin에 엔터키를 칠때까지 str을 넣어라
for(int i=0;i<str.length();i++)
{
if(isalpha(str.at(i)))
numA++;
else if(isdigit(str.at(i)))
numB++;
else if(isspace(str.at(i)))
numC++;
else
cout<<"Incorrect character"<<endl;
}
cout<<"alphabet :"<<numA<<endl;
cout<<"numeric :"<<numB<<endl;
cout<<"space :"<<numC<<endl;
}
/*
void main()
{
string str, search, replace;
cout<<"Enter string: ";
getline(cin,str);
cout<<"Enter string to find: ";
getline(cin,search);
cout<<"Enter string to replace: ";
getline(cin,replace);
int position=str.find(search); // 없으면 string::npos 리턴
if(position!=string::npos) // 문자열의 최대길이 +1
{
str.replace(position,search.length(),replace);
str.erase(position,search.length());
//str.erase(psition,search.length()); //두번째 방법임
//str.insert(position,replace);
cout<<str<<endl;
}
else
cout<<search<<" is not exist"<<endl;
}*/
// 바꿀 문자열이 여러개 있는 경우
void main()
{
string str, search, replace;
int position=0,start=0;
cout<<"Enter string: ";
getline(cin,str);
cout<<"Enter string to find: ";
getline(cin,search);
cout<<"Enter string to replace: ";
getline(cin,replace);
while(true)
{
position=str.find(search,start);
if(position==string::npos)
break;
str.replace(position,search.length(),replace);
cout<<str<<endl;
start=position+search.length();
}
}
#include <iostream>
using namespace std;
void main()
{
int var;
int &ref=var; // var는 ref라는 별명을 갖는다
var=10;
cout<<var<<","<<ref<<endl;
ref=20;
cout<<var<<","<<ref<<endl;
int num=100;
ref=num; // ref가 num을 참조하는 것이 아니고 num의 값을 ref에 대입
cout<<var<<","<<ref<<endl;
cout<<&var<<","<<&ref<<","<<&num<<endl;
}
// reference를 위한 메모리는 할당되지 않는다
// 선언과 동시에 기존의 변수로 초기화 되어야 한다
// 상수 초기화 불가(int &ref=100;)
#include <iostream>
using namespace std;
void swap1(int *, int *);
void swap2(int &, int &);
void main()
{
int a=10,b=20;
swap1(&a,&b);
cout<<a<<","<<b<<endl;
swap2(a,b);
cout<<a<<","<<b<<endl;
}
void swap1(int *pa,int *pb)
{
int temp;
temp=*pa;
*pa=*pb;
*pb=temp;
}
void swap2(int &ra,int &rb)
{
int temp;
temp=ra;
ra=rb;
rb=temp;
}
#include <iostream>
using namespace std;
int squre(int);
double square(double);
void main()
{
int i=10;
double d=3.4;
cout<<square(i)<<endl;
cout<<square(d)<<endl;
}
int squrae(int i)
{
return i*i;
}
double square(double d)
{
return d*d;
}
#include <iostream>
using namespace std;
void main()
{
int *p1=new int;
*p1=100;
cout<<p1<<","<<*p1<<endl;
delete p1;
int *p2=new int[10];
for(int i=0;i<10;i++)
{
p2[i]=i;
cout<<&p2[i]<<" : "<<p2[i]<<endl;
}
delete [] p2;
}
#include <iostream>
using namespace std;
int mode;
namespace Graphics
{
int mode, x, y;
void message()
{
cout<<"Graphics namespace의 message()"<<endl;
}
}
namespace Network
{
int mode, speed;
void send()
{
cout<<"Network namespace의 send()"<<endl;
}
void message()
{
cout<<"Network namespace의 message()"<<endl;
}
}
void main()
{
//x=y=100;
//speed=200;
Graphics::x = Graphics::y =100; // :: 영역지정연산자
Network::speed = 200;
mode = 1; // 전역변수
Graphics::mode = 1;
Network::mode = 2;
Graphics::message();
Network::message();
}
/*
using namespace Graphics;
using namespace Network;
---> ::mode ---> 전역변수
*/
#include <iostream>
using namespace std;
void get_input(int &x)
{
cout<<"enter num:";
cin>>x;
}
void get_input(int *y)
{
cout<<"enter num:";
cin>>*y;
}
void main()
{
int num1;
int num2;
get_input(num1);
cout<<num1<<endl;
get_input(&num2);
cout<<num2<<endl;
}
#include <iostream>
using namespace std;
void get_input(int &x)
{
cout<<"enter num:";
cin>>x;
}
void get_input(int *y)
{
cout<<"enter num:";
cin>>*y;
}
void get_input(int &z, int &w)
{
cout<<"enter num:";
cin>>z>>w;
}
void main()
{
int num1;
int num2;
get_input(num1);
cout<<num1<<endl;
get_input(&num2);
cout<<num2<<endl;
get_input(num1,num2);
cout<<num1<<" "<<num2<<endl;
}
int& get_max(int &x,int &y)
{
if(x>y)
return x;
else
return y;
}
double get_max(double &x,double &y)
{
if(x>y)
return x;
else
return y;
}
void main()
{
int num1=10,num2=20;
double num3=2.3,num4=1.3;
cout<<"정수형 큰 값:"<<get_max(num1,num2)<<endl;
cout<<"실수형 큰 값:"<<get_max(num3,num4)<<endl;
}
int make_double(int &x)
{
x*=2;
return x;
}
void main()
{
int num=20;
make_double(num);
cout<<"두 배의 값:"<<num<<endl;
}