• Support PF! Buy your school textbooks, materials and every day products Here!

Can someone help me with this matlab code

  • Thread starter Dell
  • Start date
  • #1
590
0
i need to build a code which asks the user for the size of the desired diamond and then draws it, i can get this to workl perfectly by using the fprintf command and building the diamond out of 4 parts,: see code-

Code:
clc
clear
h=input('enter height of diamond :');
y=1;
while y<=h/2
    for x=1:h-1
        if x<=((h)/2-(y-1))
            fprintf(1,'*\t');
        end
        if x>(h)/2-(y-1) & x<(h)/2+(y-1)
            fprintf(1,'\t');
        end
        if x>=((h)/2+(y-1)) &x<=h-1
            fprintf(1,'*\t');
        end
    end
    y=y+1;
    fprintf(1,'\n')
end

while y>h/2 &y<=h
    for x=1:h-1
        if x<=((h)/2-(h-y))
            fprintf(1,'*\t');
        end
        if x>(h)/2-(h-y) & x<(h)/2+(h-y)
            fprintf(1,'\t');
        end
        if x>=((h)/2+(h-y)) &x<=h-1
            fprintf(1,'*\t');
        end
    end
    y=y+1;
    fprintf(1,'\n')
end
but for any even numbers i put in as my size, i get 2 extra asterixs on the corners, can anyone see how i chan get rid of them?
 

Answers and Replies

  • #2
MATLABdude
Science Advisor
1,655
4
Look inside the loops that create the horizontal rows of asterisks. You actually have a degenerate case where two of the if statements get executed! (At the very top and very bottom rows)
 
  • #3
590
0
thats what i thought must be happening, but i cannot find where, could you show me
 
  • #4
MATLABdude
Science Advisor
1,655
4
  • #5
590
0
i think that the problem comes fro the 1st line, where (y-1)=0 therefore, (h)/2-(y-1) is equal to x>(h)/2+(y-1) and so both the 1st and 3rd if commands are executed,
so i tried making one <= and one > but that messed up my whole diamond
 
  • #6
MATLABdude
Science Advisor
1,655
4
Use some elseif statements to prevent the execution of more than one of the if statements:
http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/brqy1c1-1.html#brqy1c1-3 [Broken]

You could use a break statement, but this is considered very poor programming form.
 
Last edited by a moderator:
  • #7
590
0
thanks, works pefrectly
 

Related Threads for: Can someone help me with this matlab code

  • Last Post
Replies
10
Views
2K
Replies
2
Views
1K
Replies
1
Views
2K
Replies
2
Views
1K
  • Last Post
Replies
3
Views
1K
Replies
1
Views
2K
  • Last Post
Replies
5
Views
4K
Top