1. 문제

 

8. 한 라인에 ';'으로 5개의 이름을 구분하여 입력받아, 각 이름을 끊어내어 화면에 출력하고 가장 긴 이름을 판별하라.

 

 

2. 결과

 

 

 

3. 코드

 


#include <iostream>
#include <cstring>

using namespace std;

int main()
{
	char a[50];
	char *name[5], *temp;
	int i;

	cout << "5 명의 이름을 ';'으로 구분하여 입력하세요" << endl << ">>";
	cin.getline(a, 50);

	name[0] = strtok_s(a, ";", &temp);

	
	for (i = 1; i< 5; i++)
	{
		name[i] = strtok_s(NULL, ";", &temp);
	}
	
	for (i = 0; i<5; i++)
		cout << i + 1 << " : " << name[i] << endl;

	int max = strlen(name[0]); int n = 0;
	for (i = 1; i<5; i++)
	{
		if (strlen(name[i]) > max) { n = i; break; }
	}
	cout << "가장 긴 이름은 " << name[n] << endl;
}

 

 

4. 설명

 

string 변수를 사용하여서 string에 등록되어 있는 함수를 이용하여 해결할 수도 있지만 아직 교재에 나오지 않았으므로 문자열 배열을 사용하였습니다.

 

 

이 문제를 해결하려면 우선 처음 입력받을 때 ';'을 구분하여 입력받는 것이 아니라 하나의 문자열로 입력 받은 후 그 문자열에서 ';'를 구분하여서 문자열을 나눠야 한다는 것을 알아야 합니다.

 

그러면 우선 문자열 배열 a에 문자열 하나를 입력 받았습니다.

 

그 후 strtok()함수를 사용하여서 ';'을 기준으로 이름들을 나눈 후 char *name[5]배열 요소들로 저장합니다.

 

그 다음 strlen()함수를 이용하여서 가장 긴 이름을 가진 사람을 구합니다.

 

※ strtok(a, ";") : 처음부터 첫 ";"가 나올 때까지의 문자열을 리턴 합니다.

그 다음에 있는 strtok(NULL, ";")는 처음 ";"찾은 후에 문자부터 그 다음 ";"가 나올 때 까지의 문자열을 리턴 합니다.

 

 

1. 문제

 

7. 다음과 같이 "yes"가 입력될 때까지 종료하지 않는 프로그램을 작성하라. 사용자로부터의 입력은 cin.getline() 함수를 사용하라.

 

 

2. 결과

 

 

 

3. 코드

 

#include <iostream>
#include <cstring>
using namespace std;

int main() 
{
	char a[20];

	while(1)
	{
		cout << "종료하고싶으면 yes를 입력하세요>>";
		cin.getline( a, 20 );
			
		if( strcmp(a, "yes") == 0 ) break;
	}
	cout << "종료합니다...\n";
	
}

 

 

4. 설명

 

cin.getline() 함수로 입력받으라 하였으므로 문자열 배열을 하나 선언합니다.

 

 

그 후 cin.getline()으로 입력 받은 후 strcmp()함수를 사용하여서 "yes"인지 비교한 후 맞으면 종료합니다.
 
strcmp()는 두 개의 매개변수를 가지며 첫번째 매개변수 > 두번째 매개변수 이면 양수를
첫번째 매개변수 = 두번째 매개변수 이면 0을
첫번째 매개변수 < 두번째 매개변수 이면 음수를 return 합니다.
 
그래서 입력받은 문자열이 yes와 같은 경우 0을 리턴하고 0일 경우 break;를 사용하여서 무한루프를 도는 while문을 종료하도록 하였습니다.

 

 

 

1. 문제

 

6. 문자열을 두 개 입력받고 두 개의 문자열이 같은지 검사하는 프로그램을 작성하라. 만일 같으면 "같습니다", 아니면 "같지 않습니다"를 출력하라.

 

 

 

2. 결과

 

 

3. 코드

 

#include <iostream>
#include <string>
using namespace std;

int main() 
{
	string a, b;

	cout << "새 암호를 입력하세요>>";
	getline( cin, a );
	cout << "새 암호를 다시 한 번 입력하세요>>";
	getline( cin, b );

	if( a == b)
		cout << "같습니다.\n";
	else
		cout << "다릅니다.\n";

}

 

 

4. 설명

 

string 변수 a와 b를 선언한 후 getline()으로 입력 받은 후 if문으로 비교하여서 결과를 출력합니다.

 

본래 문자열 함수로 입력받은 문자열을 비교할려면 strcmp를 사용해야 하지만 string 변수들은 == 으로 같은지 비교할 수 있습니다.

 

string변수를 사용하려면 #include <string>을 해주셔야 합니다.

 

 

※ '=' : 대입연산자, '==' : 비교연산자로서 다른 것 입니다.

 

 

 

1. 문제

 

5. <Enter> 키가 입력될 때까지 문자들을 읽고, 입력된 문자 'x'의 개수를 화면에 출력하라.

 

 

 

2. 결과

 

 

 

3. 코드

 

#include <iostream>
#include <cstring>
using namespace std;

int main() 
{
	char s[100];
	int count=0;

	cout << "문자들을 입력하라(100개 미만)." << endl;
	cin.getline( s,100 );

	for(int i=0; i< strlen(s); i++)
		if( s[i] == 'x' ) count++;
	cout << "x의 개수는 " << count << endl;
}

 

4. 설명

 

문자열 배열 s를 선언한 후 cin.getline(s, 100);으로 문자열을 입력 받습니다.

 

cin.getline()은 매개변수가 3개로 3번 째 매개변수는 구분자로서 디폴트 값이 '\n'으로 되어 있어서 따로 구분할 문자가 없으면 생략해도 됩니다.

 

cstring은 strlen 때문에 include하였습니다. cstring을 include하지 않아도 실행 하는데는 문제 없습니다.

 

 

 

1. 문제

 

4. 소수점을 가지는 5개의 실수를 입력 받아 제일 큰 수를 화면에 출력하라.

 

 

2. 결과

 

 

3. 코드

 

#include <iostream>
using namespace std;

int main() 
{
	double a[5];

	cout << "5 개의 실수를 입력하라>>";
	cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4] ;

	double max = a[0];
	for(int i=1; i<5; i++)
		if( a[i] > max) max = a[i];
	cout << "제일 큰 수 = " << max << endl;
}

 

 

4. 설명

 

실수형이므로 크기가 5인 double형 배열을 선언 한 후 cin >>을 연속으로하여서 입력 받습니다.

 

cin >> a[0] >> a[1] >> a[2] ... 이렇게 연속으로 입력받을 수 있는 이유는 나중에 나오니 지금은 할 수 있다는 것만 아시면 됩니다.

 

5개의 수를 입력받았으면 배열에 저장된 값들을 비교해서 가장 큰 값을 구해 출력합니다.

 

 

 

1. 문제

 

3. 키보드로부터 두 개의 정수를 읽어 큰 수를 화면에 출력하라.

 

 

2. 결과

 

 

 

3. 코드

 

#include <iostream>
using namespace std;

int main() 
{
	int a,b;

	cout << "두 수를 입력하라>>";
	cin >> a >> b;
	if( a >=b )
		cout << "큰 수 = " << a << endl;
	else 
		cout << "큰 수 = " << b << endl;
}

 

 

4. 설명

 

두 수를 입력 받은 후 if문으로 큰 수를 비교하여 출력하는 문제입니다.

 

if( a>=b )로 하여서 a와 b의 값이 같더라도 가장 큰 값인 a가 출력되도록 하였습니다.

 

 

※ int형 변수를 입력받을 때는 cin >> 을 이용하는 것이 가장 좋습니다.

 

 

1. 문제

 

2. cout과 << 연산자를 이용하여 다음과 같이 구구단을 출력하는 프로그램을 작성하라.

 

 

 

2. 결과

 

 

 

3. 코드

#include <iostream>
using namespace std;

int main() 
{
	int i,j;

	for(i=1; i<=9; i++) {
		for( j=1; j<=9; j++) 
			cout << j << "x" << i << "=" << j*i << "\t";
		cout << endl;
	}
}

 

 

4. 설명

 

1번과 같은 유형에 문제로서 구구단을 출력하는 간단한 문제입니다.

 

첫 번째 for문은 2번 째 수에 해당하며 두 번째 for문은 1번 째 수 단을 나타내는 숫자입니다.

 

이렇게 한 이유는 출력 결과가 각 단에서 x1을 한 값을 다 출력하고 x2한 값을 출력하는 형태이기 때문입니다.

 

 

1. 문제

 

1. cout과 << 연산자를 이용하여, 1에서 100까지 정수를 다음과 같이 한 줄에 10개씩 출력하라. 각 정수는 탭으로 분리하여 출력하라.

 

 

 

2. 결과

 

 

 

 

3. 코드

 

#include <iostream>

using namespace std;

int main()
{
	int i,j;

	for(i=0; i<=90; i+=10) {
		for(j=1; j<=10; j++)
			cout << i+j << "\t";
		cout << endl;
	}
}

 

 

4. 설명

 

for문을 2개 이용하면 구현할 수 있습니다.

 

첫 번째 for문의 변수 i는 십의 자릿 수를, 두 번째 for문은 변수 j는 일의 자릿 수를 표현합니다.

 

※ \t : tab을 눌렀을 때처럼 일정 간격을 띄어쓰기 해줍니다.

+ Recent posts