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

Réponses (3)

Daniel Shub
Daniel Shub le 17 Sep 2013
Modifié(e) : Daniel Shub le 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{:})

4 commentaires

I am trying to print a diamond with an empty space in the middle using fprintf statements
See my edit for diamonds.
What if we tried to plot this shape
@Usama Tanveer The answer to this question can be found in the documentation of the plot function, which is probably the first place you should have looked. Did you?

Connectez-vous pour commenter.

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"?

2 commentaires

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

Connectez-vous pour commenter.

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);

Catégories

Tags

Commenté :

Rik
le 17 Oct 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by