짱짱이_ 2023. 2. 26. 19:17

C++에는 이미 표준 라이브러리의 일부로 생성된 함수들이 많다.

예를 들어 <cmath>, <string> 헤더를 추가해 이용할 수 있다.

 

#include <iostream>
#include <cmath>

int main() {
  
  // This seeds the random number generator:
  srand (time(NULL));
  
  // Use rand() below to initialize 
  int the_amazing_random_number = rand()%29;
  std::cout << the_amazing_random_number << "\n";

  
  
}

 

<cmath> 추가를 통해 rand함수 이용했다.

0~28의 랜덤한 수를 출력하는 코드이다.

 

 

 

 

 

  • 선언과 정의

- 선언: 함수의 이름, 반환 형식, 매개변수(함수의 인수이며 이를 입력 값으로 이용하는 경우 매개변수를 사용한다)

 

함수의 구조, 모양

 

예시

 

예시

 

 

 

string을 반환한 예

 

 

return문은 함수 실행에서 마지막 줄이다. 아래의 사진에서 값이 이미 반환이 되었기 때문에 출력되지 않는다.

 

 

 

 

 

  •  return의 작동 방식

1) 함수에서 반환된 값이 있어야 한다. (반환 값이 있는 함수에는 return이 있다)

2) 반환되는 값은 함수의 반환 타입과 일치해야 한다.

 

 

 

 

 

  • 매개변수

 

- 매개변수는 함수의 정의에 사용된다. 함수 호출 중 사용할 입력 값에 대한 인자이다.

 

 

#include <iostream>

// Define get_emergency_number() below:
void get_emergency_number(std::string emergency_number)
{
  std::cout << "Dial " << emergency_number;
}


int main() {
  
  // Original emergency services number 
  std::string old_emergency_number = "999";
  
  // For nicer ambulances, faster response times
  // and better-looking drivers
  std::string new_emergency_number = "0118 999 881 999 119 725 3";
  
  // Call get_emergency_number() below with
  // the number you want!
  std::cout << "Dial " << new_emergency_number << "\n";
}

#include <iostream>

// Define get_emergency_number() below:
void get_emergency_number(std::string emergency_number)
{
  std::cout << "Dial " << emergency_number;
}


int main() {
  
  // Original emergency services number 
  std::string old_emergency_number = "999";
  
  // For nicer ambulances, faster response times
  // and better-looking drivers
  std::string new_emergency_number = "0118 999 881 999 119 725 3";
  
  // Call get_emergency_number() below with
  // the number you want!
  get_emergency_number(new_emergency_number);
}

 

 

- 함수 하나 당 하나의 인수로 제한되어 있지 않으며, 원하는 만큼 쓸 수 있다.

단, 함수를 호출할 때 순서를 주의해야 한다.

 

 

위의 함수 예시에는 price, tip, total_included 세 개의 매개변수가 있다. 이를 유의해 함수를 호출할 때 아래의 사진처럼 매개변수의 순서를 지켜 호출해야 한다.

 

 

 

 예제) 함수 호출 연습

#include <iostream>

// Define name_x_times() below:
void name_x_times(std::string name, int x)
{
  while(x >0)
  {
    std::cout << name<<std::endl;
    x--;
  }
}


int main() {
  std::string my_name = "zzang!";
  int some_number = 5; // Change this if you like!
  // Call name_x_times() below with my_name and some_number
  name_x_times(my_name, some_number);
}

 

 

 

- 매개변수 및 인수의 작동 방식

 1) 함수 호출에서 매개변수와 인수의 수가 동일해야 한다.

 2) 해당 인수는 동일한 순서로 전달돼야 한다.

>> 실행되는 동안 함수가 매개변수를 발견할 때마다 매개변수를 해당되는 (내가 정의한)인수로 대체한다.

 

 

 

예제) 이름 출력하기

 

 

예제) 평균 구하기

 

 

예제) 10승 만들기

 

 

 예제) vector 이용, 3배수까지 출력하기

#include <iostream>
#include <vector>

// Define first_three_multiples() here:
std::vector <int> first_three_multiples(int num)
{
  std::vector <int> first_three_multiples;

  for(int i=1; i<4; i++)
  {
    first_three_multiples.push_back(num*i);
  }
  
  return first_three_multiples;
}

int main() {
  
  for (int element : first_three_multiples(8))
  {
    std::cout << element << "\n";
  }

}

 

 


문제

 

#include <iostream>

// Define needs_water() here:
std::string needs_water(int days, bool is_succulent)
{
  if (days > 3 && is_succulent == false)
  {
   return "Time to water the plant.";
  }

  if(days <= 12 && is_succulent == true)
  {
    return "Don't water the plant!";
  }

  if(days >= 13 && is_succulent == true)
  {
    return "Go ahead and give the plant a little water.";
  }

  else
  {
    return "Don't water the plant!";
  }
}

int main() {
  
  std::cout << needs_water(10, false) << "\n";
  
}

 

 

 

예제) 회문 구하기 (회문: 글자가 대칭으로 이루어진 것)

#include <iostream>

// Define is_palindrome() here:
bool is_palindrome(std::string text)
{
  int len = text.size();
  for(int i=0; i<len/2; i++)   // 중간 문자가 기준
  {
    if(text[i] == text[len-i-1])
    {
      return true;
    }
    else
    {
      return false;
    }
  }
  
}

int main() {
  
  std::cout << is_palindrome("madam") << "\n";
  std::cout << is_palindrome("ada") << "\n";
  std::cout << is_palindrome("lovelace") << "\n";
  
}