• Status: Solved
• Priority: Medium
• Security: Public
• Views: 3014

# Problems with for loop to output diamond shape

I am doing this exercise to output a diamond entering a size. I have messed around with this using a odd and a positive and didn't like that way of doing it. So I have been trying to get it to enter the size of the middle of the shape. What is wrong with my for loop it displays it all wrong.

``````#include <iostream>
#include <iomanip>

using namespace std;

int main()
{

int size;

cout << "Enter a size of the middle of the diamond: ";
cin >> size;
cout << endl;

for (int i = 1; i < size; i = i + 1)
{
cout << setw(size);
for (int j = 0 ; j < i; j++)
cout << "* ";
cout << endl;
--size;
}
for (int i = 1; i < 4; i = i + 1)
{
cout << setw(size + 2);
for (int j = 4 ; j > i; j--)
cout << "* ";
cout << endl;
++size;
}
}
``````
0
jschmuff
• 2
1 Solution

Software ArchitectCommented:
to print a diamond you will need a main loop from 0 to size-1:
for (int i=0; i<size; i++)

then you will need two loops inside, one to print spaces, and another loop to print the diamond
Looking for the diamond below, size = 9
So, you will need to deduce 2 equations:
1) calculate the white spaces, based on i
2) calculate the diamond marks, based on i

in the example first space is 4 and body is 1
then space decrements and body increments

when i = (size-1)/2, then body = size, and space = 0
I would use something like:
body = abs(i-(size-1)/2+1)
space = abs((size-1)/2 - i)

to write the space or body, would be simpler to print char by char, like this:
for (j=0; j<body; j++)
cout << '#';

``````    #
###
#####
#######
#########
#######
#####
###
#
``````
0

Author Commented:
This isn't actually my homework assignment, but it is similar. Thanks though I will go over what you said and try and fix what I have.
0

Author Commented:
Thanks for the help again you could have just in plain text said what was wrong with my code cause it was all messed up it was printing out a diamond but not correctly and wrong size. Instead of me figuring out what you were saying. I have bad reading comprehension.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.