Plotting Square Consisting of '*'
조회 수: 8 (최근 30일)
이전 댓글 표시
I am trying to create a square consisting of '*' with for loop. I did this
a = input('enter a number:')
for ii = 1:a
for jj = 1:a
fprintf('*')
end
fprintf('\n')
end
%output=
%*****
%*****
%*****
%*****
%*****
But space needed between '*' side by side.(one character space) It needs to be seem like square. I couldn't do that. Also how can I do this like
* * * * *
* *
* *
* *
* * * * *
that with for loops. My friend said you need to use equations. But I don't know much about that. I started recently. Also If you know where can I find examples like this I would appreciate.
댓글 수: 0
채택된 답변
DGM
2021년 3월 22일
편집: DGM
2021년 3월 22일
Try this:
clc
a = input('enter a number:');
for ii = 1:a
if any(ii==[1 a])
for jj = 1:a
fprintf('* ')
end
else
for jj = 1:a
if any(jj==[1 a])
fprintf('* ')
else
fprintf(' ')
end
end
end
fprintf('\n')
end
This yields:
enter a number:6
* * * * * *
* *
* *
* *
* *
* * * * * *
The console font should be monospaced, but the problem you're running into is because the character aspect ratio is not 1. Luckily, it's somewhere close to 2, so just adding a space works out about right. It doesn't look right in the browser because the font is different here.
댓글 수: 0
추가 답변 (1개)
Walter Roberson
2021년 3월 22일
You do not need equations.
You can work with a series of for loops:
First phase: use one for loop to print the top row. Hint: print '* ' or '* ' to give alternating * * *
Second phase: use two for loops. The outer for loop is counting how many rows you have done. It also displays the left * . Then the inner for loop prints spaces. Then after the inner for loop, print the final * and newline.
Third phase: same as the first phase, print the alternating * and space.
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!