Effacer les filtres
Effacer les filtres

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

16 vues (au cours des 30 derniers jours)
Kevin Junior
Kevin Junior le 17 Sep 2013
Commenté : Rik le 17 Oct 2022
for 1:5
fprintf('*') % am stuck right there

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
Usama Tanveer
Usama Tanveer le 17 Oct 2022
What if we tried to plot this shape
Rik
Rik le 17 Oct 2022
@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.


Simon
Simon le 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"?
  2 commentaires
Kevin Junior
Kevin Junior le 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 le 17 Sep 2013
Filled or outline only?
Some of the shapes will not require nested for loops.

Connectez-vous pour commenter.


Kambiz Hosseinpanahi
Kambiz Hosseinpanahi le 26 Juin 2018
Modifié(e) : Walter Roberson le 26 Juin 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);

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by