MATLAB Answers

Does someone know how to print a square onto the command window using for loops????

조회 수: 20(최근 30일)
Kevin Junior
Kevin Junior 17 Sep 2013
Edited: Walter Roberson 26 Jun 2018
for 1:5
fprintf('*') % am stuck right there

  댓글 수: 0

로그인 to comment.

답변 수 (3)

Daniel Shub
Daniel Shub 17 Sep 2013
Daniel Shub 님이 편집함. 17 Sep 2013
I am not sure why you want to use a loop or fprintf. The simplest, but potentially not square enough solution for a filled square
N = 5;
x = repmat(char(42), N, N);
disp(x);
*****
*****
*****
*****
*****
For an unfilled square you can do
N = 5;
x = repmat(char(42), N, N);
x(2:end-1, 2:end-1) = char(32);
disp(x);
*****
* *
* *
* *
*****
On my system I get a squarer square with
x = repmat([char(42), char(32)], N, N)
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
Depending on how perfect you want, maybe you could use a thin space or a wide space.
For a filled diamond
a = [fliplr(tril(true(N))), tril(true(N)); triu(true(N)), fliplr(triu(true(N)))];
x = repmat(char(32), 2*N, 2*N);
x(a) = char(42);
disp(x)
**
****
******
********
**********
**********
********
******
****
**
For an empty diamond
a = [fliplr(triu(tril(true(N)))), triu(tril(true(N))); tril(triu(true(N))), fliplr(tril(triu(true(N))))];
x = repmat(char(32), 2*N, 2*N);
x(a) = char(42);
disp(x)
**
* *
* *
* *
* *
* *
* *
* *
* *
**
If you really need to use fprintf
y = mat2cell(x(:), ones(numel(x), 1), 1);
fprintf([repmat('%s', 1, 2*N), '\n'], y{:})

  댓글 수: 2

Kevin Junior
Kevin Junior 17 Sep 2013
I am trying to print a diamond with an empty space in the middle using fprintf statements

로그인 to comment.


Simon
Simon 17 Sep 2013
Hi!
You should start reading here: http://www.mathworks.com/help/matlab/control-flow.html This explains how to use loops and their syntax.
What do you mean with "square"?

  댓글 수: 3

Kevin Junior
Kevin Junior 17 Sep 2013
like printing shapes using asterix, for instance a rectangle, a square, a diamond i know I will definitely have to use nested loops
Walter Roberson
Walter Roberson 17 Sep 2013
Filled or outline only?
Some of the shapes will not require nested for loops.

로그인 to comment.


Kambiz Hosseinpanahi
Kambiz Hosseinpanahi 26 Jun 2018
Walter Roberson 님이 편집함. 26 Jun 2018
clc
clear
n=10;
A=repmat(char(42),n,n);
A(1:end-1,2:end)=char(32);
for i=2:10
A(i,i)=char(42);
end
disp(A);

  댓글 수: 0

로그인 to comment.

이 질문에 답변하려면 로그인을(를) 수행하십시오.

태그


Translated by