반복 반복 및 논쟁과 관련하여 숙제에 대한 도움을받을 수 있습니까?
문제
좋아, 그래서 나는 출력을 별표의 다이아몬드처럼 보이게해야하며, 중간에 9 개의 별표가있을 때까지 각 행에 2 개의 별표가 증가하고 행이 줄어 듭니다. 기능 메인은 다음과 같아야합니다.
int main (void){
int i;
i = 0;
while (i < 5){
printline (4-i, i*2+1);
i = i + 1;
}
i = 3;
while (i >= 0) {
printline (4-i, i*2+1);
i = i - 1;
}
return 0;
}
이제 그림이 호출 될 때마다 한 줄의 한 줄을 인쇄하기 위해 기능 프린트 라인을 정의해야합니다. 2 개의 인수, 공백 수 및 라인에 인쇄 해야하는 별표 수가 필요합니다. 카운터 제어 반복을 사용하여 적절한 수의 공간을 인쇄하고 적절한 수의 별표를 다시 인쇄하십시오.
char print_line (int spaces, int stars){
for (int i = 4; i>=spaces; i--){
printf(" ");
}
for (int i = 1; i<=stars; i+=2){
printf("*");
}
printf("\n");
}
우후! 거의 끝났어요! 출력은 별이있는 4 개의 공간이있는 선 대신, 별 3 개가있는 3 개의 공간이있는 선 대신, 공간이없는 공간과 9 개의 별이없는 라인 (그리고 반전)을 제외하고는 ... 나는 라인을 얻는다. 별, 공간과 2 개의 별이있는 선, 2 개의 공간 3 개의 별이있는 선 등, 최대 4 개의 공간 5 개의 별 (그리고 반전)까지 ...
Printline이 다른 이유는 때때로 글을 쓰는 데 문제가 있고 글을 쓰려고 할 때마다 이탤릭체를 계속 얻었 기 때문입니다.
해결책
일부 힌트 :
- 기능은 인쇄 문자 만 필요하며 아무것도 반환하지 않습니다 (이를위한 특정 반환 유형이 있습니다).
- 공백의 수와 인쇄 할 별 수는 아마도 정수 일 것입니다.
- 단일 공간을 사용하여 인쇄 할 수 있습니다
printf(" ");
- 하나의 별을 사용하여 인쇄 할 수 있습니다
printf("*");
- "Newline"(다음 줄로 이동)을 사용하여 인쇄 할 수 있습니다.
printf("\n");
- 당신이 말하는 경우
int i=0; for(i=0; i<n; i++) { printf("X"); }
당신은 편지를 인쇄합니다X
총n
시간 (이 시점에서 루프에 대해 배우지 않았을 수도 있습니다. 그렇지 않은 경우 다음 힌트를 사용하십시오). - 당신이 말하는 경우
int i=0; while(i<n) { printf("X"); i++; }
당신은 또한 편지를 인쇄 할 것입니다X
총n
타임스 - 당신은 다른 매개 변수 이름을 사용하면 훨씬 더 행복 할 것입니다.
a
그리고b
. 매개 변수에 해당하는 이름을 생각해보십시오. 대표합니다.
편집에 대한 응답 :
- 당신은 두 가지를 사용하고 싶을 것입니다 분리된 루프; 공간을 인쇄 한 다음 별을 인쇄하는 하나
for
루프는 항상 하나의 이니셜 라이저, 하나의 점검 조건 및 1 단계/증분으로 구성됩니다.- 값을 할당 할 필요가 없습니다
stars
또는spaces
; 그들은 당신에게 당신의printline
기능 (즉, 이미 가치가 있음)
두 번째 편집에 대한 응답 :
- 당신의
for
루프, 아마도 인덱스 변수를 사용하고 싶을 것입니다. 다른 전달되는 매개 변수보다 (예 :for(i=0; i<spaces; i++)
, 어디i
현재 구성에서는 기능을 호출 할 때 발신자가 지정하더라도 4 개의 공간을 인쇄하려고 시도합니다. - Newline을 한 번만 출력하면됩니다. ~ 후에 당신은 모든 공간과 별을 완성했습니다 (즉, 신약 출력은 내부에 속하지 않습니다.
for
고리) - 당신은 아마도 카운터를 증가시키기 만하면됩니다
1
별을 출력 할 때마다. - 과제에 함수를 호출하라고하는 경우
printline
, 당신은 그것을 부를 수 없습니다print_line
; 그것은 같은 것이 아닙니다 (둘 다PrintLine
)
세 번째 편집에 대한 응답 :
- "당신은 아마도 당신의 카운터를 늘리면
1
별을 출력 할 때마다. " - "기능은 인쇄 문자 만 필요합니다. 아무것도 반환하지 않습니다 (이를위한 특정 반환 유형이 있습니다) (즉, 반환해서는 안됩니다.
char
) - 공백을 인쇄하는 코드가 별을 인쇄하는 코드처럼 보이도록 원한다고 생각합니다.
제휴하지 않습니다 StackOverflow