2011-09-21 7 views
1

저는 C++을 공부하고 있습니다. 문법에 익숙해지는 간단한 프로그램을 생각하고있었습니다.int를 받아 들일 수있는 C++ 프로그램 *

int main(){ 
int num; 
cout << "Enter a positive number:"; 
cin >> num; 
printStar(num); 
} 

void printStar(int num){ 
............................. 
} 

는 함수 printStar는 인스턴스 * 3 및 지문 ***을 수락 또는 6 인쇄 ******을 수락 또는 2이고, 인쇄를 허용 ** 정수와 같은 인쇄물을 수용하는 것을. for 또는 while 루프를 사용하여 더 나은 아이디어 제안을 얻으려는 생각이 들었습니까? 이 물건의 많은 놨 것을 캡처 및 채우기와 폭을 재설정해야하므로,

cout.fill('*'); 
cout.width(num); 
cout << ' ' << endl; 

참고 :이 자신을 위해이기 때문에

char oldfill = cout.fill('*'); 
streamsize w = cout.width(); 
cout.fill('*'); 
cout.width(num); 
cout << ' ' << endl; 
cout.width(w); 
cout.fill(oldfill); 
+3

1. 솔루션을 시도합니다. 코드를 게시하고 무엇을 얻었는지 그리고 더 좋은 방법이 있는지 알려 줄 수 있습니다. – DallaRosa

+0

반복 할 필요가있는 경우 루프가 반드시 필요합니다. 루프 문 중 하나라도 문제가 없습니다. Btw는 2가 받아 들여지면 여분의'*'를 추가했습니다. – Mahesh

+0

@Mahesh 편집 작업에 많은 노력을 기울였습니다. ;-) – quasiverse

답변

1

+1

감사합니다. 그러나이 의견은 제 맥락에서 가장 도움이되었습니다! 건배 – Deepak

2

당신은 cout.fill을 사용할 수 있습니다 학습, 나는 해결책을 제공하지 않는다, 힌트는 For 또는 While 루프를 사용하고있다. 작동한다면, 코드 또는 문제점을 게시하십시오.

A link to get you started

3

당신은 std::string를 사용할 수 있습니다

 
using namespace std; 
cout << string(num, '*') << endl; 

또는 STL의 fill_n가 :

 
using namespace std; 
fill_n(ostream_iterator<char>(cout, ""), num, '*'); 
관련 문제